# Claim surveys, help and offers for a mobile backend (/es/api-reference/survey-channels/claimMobileRetentionMessages)

`POST /v1/retention/messages/claim`

Base URL: `https://api.bitelio.com`

Requires retention:view, retention:edit and retention:activate. Mobile API must be enabled. Claims up to20 current programme messages after current programme, withdrawal, actor and subsequent-purchase checks. Each message is handed off once. Deliver before claimExpiresAt and report an actual result; do not send an expired claim. The merchant must verify its native notification consent and use its own APNs/FCM provider. Store capability and receipt tokens securely; never put an sk_ key in the mobile app. Limit120 requests/minute shared perproject. The kind discriminator distinguishes SURVEY, HELP, ALTERNATIVE, REPLENISHMENT and RECOMMEND. Open url for the complete content; never render a help or offer message as a survey. Non-survey messages carry a pinned message snapshot and use a separate message capability. The legacy survey-deliveries claim endpoint remains invitation-only. Non-survey mobile messages additionally require an ACTIVE RETENTION permission for that customer, registered through /v1/retention/mobile-permissions. A revoked permission blocks every mobile claim, including legacy surveys.

## Request body

- `after`: string

Example:

```json
{
  "after": "string"
}
```

## Responses

### `200` — Success

- `items`: array<object | object> (required)

```json
{
  "items": [
    {
      "deliveryId": "string",
      "receiptToken": "string",
      "surveyUrl": "string",
      "surveyToken": "string",
      "contactId": "string",
      "locale": "string",
      "title": "string",
      "body": "string",
      "expiresAt": "2026-10-24T08:42:45.048Z",
      "claimExpiresAt": "2026-10-24T08:42:45.048Z",
      "kind": "string",
      "url": "https://example.com"
    }
  ]
}
```

### `400` — Invalid input or unavailable channel

### `401` — Secret API key required

### `403` — Required project permission is missing

### `429` — Project rate limit exceeded. Retry-After identifies the wait in seconds.

### `503` — Rate limiter temporarily unavailable; retry later.

## Example request

```bash
curl -X POST 'https://api.bitelio.com/v1/retention/messages/claim' \
  -H 'Authorization: Bearer YOUR_API_KEY' \
  -H 'Content-Type: application/json' \
  -d '{"after":"string"}'
```
