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

# List follow-ups

> List the next questions AI providers suggested after monitored answers, with their source prompt, answer, and monitoring status.

Returns the Follow-Ups that providers suggested after stored answers, newest first. Each row keeps the suggested question, its position in the provider's list, its intent types, the source prompt and answer, and whether the same question is already a monitored prompt.

<ParamField header="Authorization" type="string" required>
  Bearer token. Example: `Bearer qw-api-xxx`
</ParamField>

```http theme={null}
GET /api/v1/brands/{brandId}/follow-ups
```

## Path parameters

<ParamField path="brandId" type="string" required>
  The unique identifier of the brand
</ParamField>

## Query parameters

<ParamField query="period" type="number">
  Number of days to include, based on the answer date. If not specified, returns all data.
</ParamField>

<ParamField query="startDate" type="string">
  Start date in `YYYY-MM-DD`, inclusive. Takes precedence over `period`.
</ParamField>

<ParamField query="endDate" type="string">
  End date in `YYYY-MM-DD`, inclusive.
</ParamField>

<ParamField query="provider" type="string">
  Filter by one or more provider aliases or model IDs, separated by commas.
</ParamField>

<ParamField query="topic" type="string">
  Filter by topic ID (keywordId). Supports comma-separated multi-select (e.g., `id1,id2`).
</ParamField>

<ParamField query="tag" type="string">
  Filter by tag ID. Supports comma-separated multi-select (e.g., `id1,id2`).
</ParamField>

<ParamField query="type" type="string">
  Filter by prompt type: `TOFU`, `MOFU`, `BOFU`, or `POST_PURCHASE`
</ParamField>

<ParamField query="personaIds" type="string">
  Comma-separated persona UUIDs recorded on the source answer. Use `default` for answers generated without a persona, or `all` for no filter.
</ParamField>

<ParamField query="countries" type="string">
  Comma-separated ISO 3166-1 alpha-2 codes of the country recorded on the source answer (for example, `FR,BE`). Up to 50 codes; an invalid code returns `400`.
</ParamField>

<ParamField query="limit" type="number" default="50">
  Maximum number of Follow-Ups to return (max: 100)
</ParamField>

<ParamField query="offset" type="number" default="0">
  Number of results to skip for pagination
</ParamField>

## Response

<ResponseField name="success" type="boolean">
  Indicates if the request was successful
</ResponseField>

<ResponseField name="pagination" type="object">
  <Expandable title="Pagination info">
    <ResponseField name="total" type="number">Total number of Follow-Ups matching the filters</ResponseField>
    <ResponseField name="count" type="number">Number of Follow-Ups in this response</ResponseField>
    <ResponseField name="limit" type="number">Maximum items per page</ResponseField>
    <ResponseField name="offset" type="number">Number of items skipped</ResponseField>
    <ResponseField name="hasMore" type="boolean">Whether another page is available</ResponseField>
  </Expandable>
</ResponseField>

<ResponseField name="followUps" type="array">
  <Expandable title="Follow-Up object">
    <ResponseField name="id" type="string">Follow-Up ID</ResponseField>
    <ResponseField name="text" type="string">The suggested question, or the guided-continuation message</ResponseField>
    <ResponseField name="kind" type="string">`SUGGESTION` for a prompt the engine offers as is; `GUIDED_CONTINUATION` for the message ChatGPT sends once the user fills in the form it displays, with each form field written as a `{placeholder}`</ResponseField>
    <ResponseField name="position" type="number">Position of the suggestion in the provider's list</ResponseField>
    <ResponseField name="types" type="array">Intent types such as `COMPARISON` or `HOW_TO`; empty until the question is classified</ResponseField>
    <ResponseField name="isMonitored" type="boolean">Whether the same question is already a monitored prompt</ResponseField>
    <ResponseField name="question" type="object">Source prompt with `id` and `text`</ResponseField>
    <ResponseField name="answer" type="object">Source answer with `id`, raw `modelId`, `providerId`, and `createdAt`</ResponseField>
    <ResponseField name="createdAt" type="string">When the Follow-Up was recorded (ISO 8601 timestamp)</ResponseField>
  </Expandable>
</ResponseField>

## Synthetic request

```bash theme={null}
curl -X GET "https://www.qwairy.co/api/v1/brands/cm1234567890abcdef/follow-ups?period=30&limit=1" \
  -H "Authorization: Bearer qw-api-your-token-here"
```

## Synthetic response

```json theme={null}
{
  "success": true,
  "pagination": {
    "total": 38,
    "count": 1,
    "limit": 1,
    "offset": 0,
    "hasMore": true
  },
  "followUps": [
    {
      "id": "followup_01",
      "text": "How do warehouse exports compare across analytics platforms?",
      "kind": "SUGGESTION",
      "position": 1,
      "types": ["COMPARISON"],
      "isMonitored": false,
      "question": {
        "id": "prompt_01",
        "text": "Which analytics platforms support warehouse exports?"
      },
      "answer": {
        "id": "answer_01",
        "modelId": "openai-chatgpt-core",
        "providerId": "openai",
        "createdAt": "2026-07-19T10:00:00.000Z"
      },
      "createdAt": "2026-07-19T10:00:02.000Z"
    }
  ]
}
```

## Errors

| Status | Code | Description |
| - | - | - |
| 400 | `INVALID_PARAMETER` | Invalid filter or pagination value |
| 401 | gateway error | Authentication failed |
| 404 | `BRAND_NOT_FOUND` | Brand doesn't exist or not accessible |
| 429 | gateway error | Rate limit exceeded; honor `Retry-After` |


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.