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

# GetRecords

Получает [сообщения](../../concepts/glossary.md#message) из [сегмента](../../concepts/glossary.md#shard) потока данных.

Значение `ShardIterator` определяет позицию в сегменте, с которой будет начато последовательное чтение сообщений. Если в сегменте нет новых сообщений, `GetRecords` возвращает пустой список. В этом случае повторите вызов `GetRecords`.

При циклическом чтении сообщений из потока нужно использовать `GetShardIterator`, чтобы получить итератор сегмента для использования в первом запросе `GetRecords`. Для последующих чтений можно использовать значение `NextShardIterator`, которое возвращается в ответе `GetRecords`. Если сегмент был закрыт, `GetRecords` возвращает `null` в значении `NextShardIterator`.

Размер данных, которые возвращаются `GetRecords` ограничен 2 МБ/с, метод можно вызывать не чаще, чем 5 раз в секунду. Если в результате вызова `GetRecords` возвращается большее количество данных, то последующие вызовы будут завершаться с ошибкой `ProvisionedThroughputExceededException`, пока пропускная способность не вернется к значению 2 МБ/с. Например, если в результате запроса вернулось 10 МБ/с, последующие запросы в течение 5 секунд будут завершаться с ошибкой.

Чтобы определить, успевает ли ваше приложение обрабатывать все поступающие в сегмент данные, можно использовать значение `MillisBehindLatest` в ответе.

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

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

```json
{
  "Limit": number,
  "ShardIterator": "string"
}
```

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

Параметр | Описание
----- | -----
`Limit` | Максимальное количество возвращаемых записей.<br/><br/>**Тип**: Целое число.<br/>**Возможные значения** `1` - `10000`.<br/>**Обязательный**: Нет.
`ShardIterator` | Позиция в сегменте, с которой будет начато последовательное чтение сообщений. Значение итератора определяется порядковым номером сообщения в сегменте.<br/><br/>**Тип**: Строка.<br/>**Размер**: `1`-`512` символов.<br/>**Обязательный**: Да.

## Ответ {#response}

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

```json
{
  "ChildShards": [{
    "HashKeyRange": {
      "EndingHashKey": "string",
      "StartingHashKey": "string"
    },
    "ParentShards": ["string"],
    "ShardId": "string"
  }],
  "MillisBehindLatest": number,
  "NextShardIterator": "string",
  "Records": [{
    "ApproximateArrivalTimestamp": number,
    "Data": blob,
    "EncryptionType": "string",
    "PartitionKey": "string",
    "SequenceNumber": "string"
  }]
}
```

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

Параметр | Описание
----- | -----
`ChildShards` | Список дочерних сегментов текущего сегмента. Возвращается при достижении конца текущего сегмента.<br/>**Тип**: Массив.<br/>**Обязательный**: Нет.
`MillisBehindLatest` | Количество миллисекунд, на которое результаты, возвращаемые `GetRecords`, отстают от последних записанных данных в поток. Значение `0` означает, что возвращаются последние записанные данные без отставаний.**Тип**: Длинное целое число.<br/>**Минимальное значение**: `0`.<br/>**Обязательный**: Нет.
`NextShardIterator` | Итератор позиции в сегменте, с которой можно начать следующее последовательное чтение.<br/>Если сегмент больше не существует, возвращается значение `null`.**Тип**: Строка.<br/>**Размер**: `1`-`512` символов.<br/>**Обязательный**: Да.
`Records` | Сообщения, которые извлекаются из сегмента.<br/>**Тип**: Массив.<br/>**Обязательный**: Нет.

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

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

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