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

# API reference

> REST API for received messages and webhook deliveries.

The receiving API lets your application list received messages, read their metadata and parsed content, create download links and retry webhook deliveries.

```text theme={null}
https://talario.eu/api/v1
```

* Authenticate with an [API key](/authentication) as bearer token. Receiving endpoints need the permission **Read received messages**; retries need **Retry webhooks**.
* Requests and responses use JSON with UTF-8. Times are ISO 8601 in UTC, for example `2026-10-21T16:00:00Z`.
* Message and delivery IDs are UUIDs.
* Errors use the [error format](/errors).
* Responses with download links or content are sent with `Cache-Control: no-store`. Do not cache them.

## Endpoints

| Method and path | Purpose |
| - | - |
| `GET /receiving/messages` | List received messages, one row per message and recipient |
| `GET /receiving/messages/{id}` | Metadata, content state and webhook deliveries of a message |
| `POST /receiving/messages/{id}/download-url` | New download link for the original message |
| `GET /receiving/messages/{id}/content` | Parsed content with download links |
| `POST /receiving/messages/{id}/attachments/{attachment}/download-url` | New download link for an attachment |
| `POST /receiving/deliveries/{delivery_id}/retry` | Retry a failed or cancelled webhook delivery |

## Pagination

`GET /receiving/messages` returns the newest messages first and uses cursor pagination. Pass `meta.next_cursor` as `cursor` to get the next page; `null` means there are no more pages. The links in `links.next` and `links.prev` contain the cursor and your filters.

```bash theme={null}
curl --get https://talario.eu/api/v1/receiving/messages \
  -H "Authorization: Bearer $TALARIO_API_KEY" \
  --data-urlencode "domain=inbound.example.com" \
  --data-urlencode "since=2026-10-21T00:00:00Z" \
  --data-urlencode "limit=50"
```

```php Laravel theme={null}
use Illuminate\Support\Facades\Http;

$talario = Http::baseUrl('https://talario.eu/api/v1')
    ->withToken(config('services.talario.api_key'))
    ->acceptJson();

$cursor = null;

do {
    $page = $talario->get('receiving/messages', array_filter([
        'domain' => 'inbound.example.com',
        'limit' => 100,
        'cursor' => $cursor,
    ]))->throw()->json();

    foreach ($page['data'] as $row) {
        // $row['id'], $row['recipient'], $row['last_event']['type'] …
    }

    $cursor = $page['meta']['next_cursor'];
} while ($cursor !== null);
```


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