[Документация Yandex Cloud](../../../index.md) > [Yandex Data Streams](../../index.md) > [HTTP API, совместимый с Amazon Kinesis Data Streams](../index.md) > Методы > PutRecords

# PutRecords

Записывает несколько [сообщений](../../concepts/glossary.md#message) в [поток данных](../../concepts/glossary.md#stream-concepts) за один вызов.

Метод позволяет достичь большей производительности по сравнению с [PutRecord](putrecord.md). В одном запросе можно передать до 500 сообщений. Каждое сообщение в запросе может иметь размер до 1 МБ. Весь запрос не может превышать 5 МБ, включая [ключи сегментов](../../concepts/glossary.md#partition-key).

В запросе указывается имя потока и массив сообщений `Records`. Для каждого элемента массива указывается ключ сегмента и объект, содержащий данные пользователя в кодировке Base64. Для явного определения хеша ключа сегмента, в который будут записаны сообщения, используется параметр `ExplicitHashKey`.

Возвращает массив элементов с данными о записанных сообщениях. Каждому элементу возвращаемого массива соответствует элемент отправленного. Элементы в обоих массивах упорядочены одинаково. Массив ответа включает данные как успешно, так и неуспешно обработанных сообщений. Сбой записи одного сообщения не останавливает обработку последующих.

`PutRecords` гарантирует, что сообщения будут записаны в том же порядке, в каком они находятся в отправленном массиве.

Данные об успешно обработанном сообщении содержат идентификатор сегмента (`ShardId`), в который было записано сообщение, и [порядковый номер сообщения](../../concepts/glossary.md#sequence-number) (`SequenceNumber`).

Данные о неуспешно обработанным сообщением содержат тип ошибки (`ErrorCode`) и сообщение об ошибке (`ErrorMessage`). Тип ошибки может иметь значение `ProvisionedThroughputExceededException` или `InternalFailure`. Для типа `ProvisionedThroughputExceededException` сообщение об ошибке содержит идентификатор учетной записи, имя потока и идентификатор сегмента сообщения, которое не удалось обработать.

## Запрос {#request}

Запрос содержит данные в формате JSON.

```json
{
  "Records": [{
    "Data": blob,
    "ExplicitHashKey": "string",
    "PartitionKey": "string"
  }],
  "StreamName": "string"
}
```

### Параметры запроса {#request-options}

Параметр | Описание
----- | -----
`Records` | Сообщения для записи.<br/><br/>**Тип** Массив объектов `PutRecordsRequestEntry`<br/>**Количество элементов**: `1`-`500`<br/>**Обязательный**: Да
`StreamName` | Имя потока данных.<br/><br/>**Тип**: Строка<br/>**Размер**: `1`-`128` символов.<br/>**Возможные значения**: `[a-zA-Z][a-zA-Z0-9-]+*(?<!-)$`<br/>**Обязательный**: Да

## Ответ {#response}

В случае успеха возвращаются HTTP-ответ с кодом 200 и данные в формате JSON.

```json
{
  "EncryptionType": "string",
  "FailedRecordCount": number,
  "Records": [{
    "ErrorCode": "string",
    "ErrorMessage": "string",
    "SequenceNumber": "string",
    "ShardId": "string"
  }]
}
```

### Параметры ответа {#response-options}

Параметр | Описание
----- | -----
`EncryptionType` | Тип шифрования.<br/><br/>**Тип**: Строка<br/>**Возможные значения**: `NONE`<br/>**Обязательный**: Да
`FailedRecordCount` | Количество необработанных сообщений.
`Records` | Информация о результатах обработки сообщений.<br/><br/>**Тип** Массив объектов `PutRecordsRequestEntry`<br/>**Количество элементов**: `1`-`500`<br/>**Обязательный**: Да

## Ошибки {#errors}

Параметр | Описание | Код HTTP
----- | ----- | -----
`InvalidArgumentException` | Недопустимый аргумент. Дополнительные сведения смотрите в сообщении об ошибке. | 400
`ResourceNotFoundException` | Запрошенный ресурс не найден. | 400

Могут возникать [ошибки](../common-errors.md), общие для всех методов.