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

# Quick replies

> Lists the business quick replies so you can send them by name

<Info>
  **Endpoint** · `GET /quick-replies`
</Info>

<Note>
  **Read-only** endpoint: it returns information and changes nothing. It is not sent inside the `actions` array — you call it directly.
</Note>

Returns the business quick reply catalog, in alphabetical order and paginated by
cursor. Each item carries only the `name`, and that is the value you later pass
in `quick_reply.name` when assembling a send action. The catalog does not expose
the quick reply content (the shape of its `actions` is not included): it is
meant to discover which names exist, not to inspect what each one sends.

**Parameters**

* `slug` — business slug in the path, case-insensitive. It must match the token's business. **Required**.
* `search` — name substring, case-insensitive (1 to 100 characters). The asterisk `*` works as a wildcard and matches any sequence of characters; the `%` and `_` characters are matched literally. Optional.
* `cursor` — opaque cursor returned by the previous page in `next_cursor`. Omit it to request the first page. Do not reuse cursors across different endpoints: even though the format is identical, each endpoint interprets it over its own data set. Optional.
* `limit` — quick replies per page. Defaults to 20, maximum 100. Optional.

### Response

```json theme={null}
{
  "items": [
    { "name": "Horario de atención" },
    { "name": "Saludo inicial" }
  ],
  "next_cursor": "SG9yYXJpbyBkZSBhdGVuY2lvbnw0MDIz",
  "has_more": true
}
```

`has_more` tells you whether there are more results after this page. While it is
`true`, repeat the call passing the `next_cursor` value in `?cursor=` and
keeping the same filters. When `has_more` is `false`, `next_cursor` comes back
as `null`.

### Example

This is a pure read: it asks for the first page of the catalog to see which
names are available. The call sends no message and modifies no conversation — it
only returns names, which then feed a send action.

```bash theme={null}
curl -X GET "https://app.1to1.ai/api/v1/public/{slug}/quick-replies?search=salu&limit=20" \
  -H "Authorization: Bearer sk_1to1_your_api_key"
```

The next page, using the cursor returned by the previous response:

```bash theme={null}
curl -X GET "https://app.1to1.ai/api/v1/public/{slug}/quick-replies?search=salu&limit=20&cursor=SG9yYXJpbyBkZSBhdGVuY2lvbnw0MDIz" \
  -H "Authorization: Bearer sk_1to1_your_api_key"
```

### Errors

| Code                      | Status | When                                                                                       |
| ------------------------- | ------ | ------------------------------------------------------------------------------------------ |
| `INVALID_REQUEST`         | 400    | Invalid query params (for example, `limit` out of range).                                  |
| `INVALID_CURSOR`          | 400    | The `cursor` is corrupted or does not belong to this endpoint.                             |
| `INVALID_API_TOKEN`       | 401    | Missing, malformed, or invalid token.                                                      |
| `TOKEN_BUSINESS_MISMATCH` | 403    | The path slug does not match the token's business.                                         |
| `RATE_LIMIT_EXCEEDED`     | 429    | Rate limit exceeded. The `Retry-After` and `X-RateLimit-*` headers tell you when to retry. |
| `UNKNOWN_ERROR`           | 500    | Unexpected server error.                                                                   |

See the full catalog in [Errors](/en/errors).

The `name` this query returns is exactly the one consumed by the send actions:
[Send message](/en/action-groups/send-message) in quick reply mode
(`quick_reply: { "name": ... }`) and [Send quick reply or
template](/en/action-groups/send-quick-reply-or-template), which sends the quick
reply when the 24h window is open and the template when it is closed. The name
is matched case-insensitively, but it is best to copy it exactly as the catalog
returns it.
