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

# API overview

> Base URL, auth, pagination, and every Connect REST resource.

```
https://connect.trypost.it/api
```

Every authenticated route needs:

```
Authorization: Bearer YOUR_API_KEY
```

Create keys in the [dashboard](https://connect.trypost.it/api-keys) or [`POST /api-keys`](/docs/api-reference/api-keys/create). The two credentials are not interchangeable — [Authentication](/docs/getting-started/authentication).

Try the same routes in the [playground](https://connect.trypost.it/playground).

## Rate limits

Authenticated routes are **60 requests / minute** per account (`429` + `Retry-After`). Local development is unlimited.

[`GET /social-accounts/{id}/boards`](/docs/api-reference/social-accounts/boards) and [`/channels`](/docs/api-reference/social-accounts/channels) are **60 / minute** on their own.

The signed media PUT is **60 / minute per account** and **1200 / minute per IP**.

## Errors

All error bodies include a `message` field. Validation errors also include `errors`.

| Status | Meaning                                        |
| ------ | ---------------------------------------------- |
| `200`  | Success                                        |
| `201`  | Created                                        |
| `204`  | Deleted                                        |
| `401`  | Missing or invalid API key                     |
| `402`  | Card / active subscription required            |
| `403`  | Forbidden (role, or an API key sent to `/mcp`) |
| `404`  | Missing, or not on this account                |
| `422`  | Validation                                     |
| `429`  | Rate limit — wait `Retry-After` seconds        |

A **402** on connect or any other call means the account needs a card (X, or a third non-X identity) or lost app access. Fix it under [Settings → Billing](https://connect.trypost.it/settings/account/billing), then retry.

## Quick reference

| Resource        | Endpoints                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                |
| --------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| Posts           | [`GET /posts`](/docs/api-reference/posts/list), [`POST /posts`](/docs/api-reference/posts/create), [`GET /posts/{id}`](/docs/api-reference/posts/get), [`PUT /posts/{id}`](/docs/api-reference/posts/update), [`DELETE /posts/{id}`](/docs/api-reference/posts/delete), [`GET /posts/{id}/metrics`](/docs/api-reference/posts/metrics), [`GET /posts/{id}/preview`](/docs/api-reference/posts/preview)                                                                                                                                                                                                      |
| Media           | [`POST /medias/presign`](/docs/api-reference/media/presign), [`PUT /medias/{token}`](/docs/api-reference/media/upload) (signed, no Bearer)                                                                                                                                                                                                                                                                                                                                                                                                                                         |
| Social accounts | [`GET /social-accounts/connect/{platform}`](/docs/api-reference/social-accounts/connect), [`GET /social-accounts`](/docs/api-reference/social-accounts/list), [`DELETE /social-accounts/{id}`](/docs/api-reference/social-accounts/disconnect), [`PUT /social-accounts/{id}/set`](/docs/api-reference/social-accounts/assign-set), [`GET /social-accounts/{id}/boards`](/docs/api-reference/social-accounts/boards), [`GET /social-accounts/{id}/channels`](/docs/api-reference/social-accounts/channels)                                                                                              |
| Social sets     | [`GET /social-sets`](/docs/api-reference/social-sets/list), [`POST /social-sets`](/docs/api-reference/social-sets/create), [`GET /social-sets/{id}`](/docs/api-reference/social-sets/get), [`PUT /social-sets/{id}`](/docs/api-reference/social-sets/update), [`DELETE /social-sets/{id}`](/docs/api-reference/social-sets/delete)                                                                                                                                                                                                                                                                |
| Account         | [`GET /account`](/docs/api-reference/account/get)                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             |
| API keys        | [`GET /api-keys`](/docs/api-reference/api-keys/list), [`POST /api-keys`](/docs/api-reference/api-keys/create), [`DELETE /api-keys/{id}`](/docs/api-reference/api-keys/delete)                                                                                                                                                                                                                                                                                                                                                                                                           |
| Logs            | [`GET /logs`](/docs/api-reference/logs/list), [`GET /logs/{id}`](/docs/api-reference/logs/get)                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     |
| Webhooks        | [`GET /webhooks`](/docs/api-reference/webhooks/list), [`POST /webhooks`](/docs/api-reference/webhooks/create), [`GET /webhooks/{id}`](/docs/api-reference/webhooks/get), [`PUT /webhooks/{id}`](/docs/api-reference/webhooks/update), [`DELETE /webhooks/{id}`](/docs/api-reference/webhooks/delete), [`POST /webhooks/{id}/send-test`](/docs/api-reference/webhooks/send-test), [`POST /webhooks/{id}/rotate-secret`](/docs/api-reference/webhooks/rotate-secret), [`GET /webhooks/{id}/logs`](/docs/api-reference/webhooks/logs), [`POST /webhooks/{id}/logs/{log_id}/replay`](/docs/api-reference/webhooks/replay) |

There are no `/assets`, `/content-types`, `/signatures`, `/labels`, `/repurposes`, or `/workspace` routes.

## Pagination

These lists paginate (`data`, `links`, `meta`). Use `page`. Size is `meta.per_page` (default 25). There is no `per_page` query.

* [`GET /posts`](/docs/api-reference/posts/list)
* [`GET /logs`](/docs/api-reference/logs/list)
* [`GET /webhooks/{id}/logs`](/docs/api-reference/webhooks/logs)

Everything else that lists resources returns a **plain array**.

Resources are **unwrapped** — no `data:` envelope on a single object.
