> ## Documentation Index
> Fetch the complete documentation index at: https://sequin.io/docs/llms.txt
> Use this file to discover all available pages before exploring further.

# Get next messages

> Get the next messages for an HTTP stream consumer

<Note>You can use either `POST` or `GET` to retrieve messages for an HTTP stream consumer.</Note>

## Request parameters

<ParamField path="id" type="string" required>
  ID of the consumer.
</ParamField>

<ParamField body="batch_size" type="integer" placeholder={1}>
  Number of messages to try to fetch from the consumer. Defaults to `1`.

  The count of returned messages may be less than the requested batch size if there are fewer messages available for the consumer.
</ParamField>

<ParamField body="wait_for" type="integer" placeholder={0}>
  Amount of time to wait for messages to become available in the consumer, in milliseconds. Defaults to `0`.

  When `wait_for` is greater than `0`, the request will block until either `batch_size` messages are available or `wait_for` milliseconds have passed.

  Therefore, you can use `wait_for` to implement long polling.
</ParamField>

## Response fields

The response is an object with a `data` property that contains a list of messages.

<ResponseField name="data" type="list">
  <Expandable title="properties">
    <ResponseField name="record" type="Record">
      A [record](/core-concepts#records).
    </ResponseField>

    <ResponseField name="ack_token" type="string">
      You'll use the `ack_token` in follow-up requests to either [ack](/streams/consume/ack) or [nack](/streams/consume/ack) this specific message.
    </ResponseField>
  </Expandable>
</ResponseField>

<ResponseField name="info" type="object">
  <Expandable title="properties">
    <ResponseField name="num_pending" type="integer">
      The number of messages available for the consumer.
    </ResponseField>

    <ResponseField name="num_ack_pending" type="integer">
      The number of messages that are delivered but not yet acknowledged for this consumer.
    </ResponseField>
  </Expandable>
</ResponseField>

<RequestExample>
  ```shell Using POST theme={null}
  curl --request POST \
    --url https://api.sequin.io/v1/http-consumers/c906b4a4-0cda-4f46-bd80-255f570c195d/next \
    --header 'Authorization: Bearer YOUR_API_TOKEN' \
    --header 'Content-Type: application/json' \
    -d '{ "batch_size": 10 }'
  ```

  ```shell Using GET theme={null}
  curl --request GET \
    --url https://api.sequin.io/v1/http-consumers/c906b4a4-0cda-4f46-bd80-255f570c195d/next?batch_size=10 \
    --header 'Authorization: Bearer YOUR_API_TOKEN'
  ```
</RequestExample>

<ResponseExample>
  ```json 200 OK theme={null}
  {
    "data": [
      {
        "ack_token": "MTYyeJ7abUjl1pO",
        "record": {
          "id": "aa9a329d-c3cb-4dea-9ea4-42e99cfc08d7",
          "collection_id": "salesforce:contact",
          "resource_id": "7d522b89-b092-40ec-9016-e69b81b5b317",
          "data": {
            "FirstName": "Paul",
            "LastName": "Atreides",
            // rest of payload...
          }
          // rest of record...
        }
      },
      // more messages...
    ],
    "info": {
      "num_pending": 100,
      "num_ack_pending": 10
    }
  }
  ```
</ResponseExample>
