Endpoint index
Every route on https://api.postlyra.com, generated from the router itself.
"Bearer token" means the endpoint needs an Authorization header. "Brand-scoped" means it also reads X-Postlyra-Brand.
Authentication
| Method | Path | Auth | Notes |
|---|---|---|---|
DELETE | /auth/account | Bearer token | — |
POST | /auth/login | None | 10 per 1 min |
POST | /auth/logout | Bearer token | — |
GET | /auth/me | Bearer token | — |
GET | /auth/passkeys | Bearer token | — |
POST | /auth/passkeys | Bearer token | 10 per 1 min |
POST | /auth/passkeys/login | None | 10 per 1 min |
POST | /auth/passkeys/login/options | None | 10 per 1 min |
POST | /auth/passkeys/options | Bearer token | 10 per 1 min |
DELETE | /auth/passkeys/{passkeyId} | Bearer token | — |
PATCH | /auth/profile | Bearer token | — |
POST | /auth/register | None | 10 per 1 min |
DELETE | /auth/two-factor | Bearer token | 10 per 1 min |
GET | /auth/two-factor | Bearer token | 10 per 1 min |
POST | /auth/two-factor-challenge | None | 10 per 1 min |
POST | /auth/two-factor/confirm | Bearer token | 10 per 1 min |
POST | /auth/two-factor/recovery-codes | Bearer token | 10 per 1 min |
POST | /auth/two-factor/setup | Bearer token | 10 per 1 min |
Brands
| Method | Path | Auth | Notes |
|---|---|---|---|
GET | /teams | Bearer token | — |
GET | /teams/{id} | Bearer token | — |
PATCH | /teams/{id} | Bearer token | — |
Current user
| Method | Path | Auth | Notes |
|---|---|---|---|
GET | /me/entitlements | Bearer token | brand-scoped |
PATCH | /me/team | Bearer token | — |
Ideas
| Method | Path | Auth | Notes |
|---|---|---|---|
POST | /ideas/import | Bearer token | brand-scoped |
GET | /ideas/mining-context | Bearer token | brand-scoped |
Media
| Method | Path | Auth | Notes |
|---|---|---|---|
GET | /media | Bearer token | brand-scoped |
POST | /media | Bearer token | brand-scoped |
GET | /media/assets | Bearer token | brand-scoped |
POST | /media/assets | Bearer token | brand-scoped |
POST | /media/assets/from-url | Bearer token | brand-scoped |
DELETE | /media/assets/{kind}/{id} | Bearer token | brand-scoped |
GET | /media/assets/{kind}/{id} | Bearer token | brand-scoped |
PATCH | /media/assets/{kind}/{id} | Bearer token | brand-scoped |
POST | /media/assets/{kind}/{id}/new-post | Bearer token | brand-scoped |
GET | /media/usage | Bearer token | brand-scoped |
DELETE | /media/{id} | Bearer token | brand-scoped |
Members
| Method | Path | Auth | Notes |
|---|---|---|---|
GET | /users | Bearer token | brand-scoped |
GET | /users/roles | Bearer token | brand-scoped |
Notification preferences
| Method | Path | Auth | Notes |
|---|---|---|---|
GET | /notification-preferences | Bearer token | brand-scoped |
PUT | /notification-preferences | Bearer token | brand-scoped |
Device tokens
| Method | Path | Auth | Notes |
|---|---|---|---|
DELETE | /device-tokens | Bearer token | brand-scoped |
POST | /device-tokens | Bearer token | brand-scoped |
Subscription
| Method | Path | Auth | Notes |
|---|---|---|---|
POST | /subscription/checkout | Bearer token | brand-scoped |
GET | /subscription/plans | Bearer token | brand-scoped |
GET | /subscription/status | Bearer token | brand-scoped |
POST | /subscription/switch | Bearer token | brand-scoped |
Public
| Method | Path | Auth | Notes |
|---|---|---|---|
GET | /public/plans | None | — |
Other
| Method | Path | Auth | Notes |
|---|---|---|---|
GET | / | None | — |
GET | /calendar | Bearer token | brand-scoped |
GET | /cli/auth-metadata | None | 30 per 1 min |
POST | /cli/token | None | 10 per 1 min |
GET | /comments | Bearer token | brand-scoped |
PATCH | /comments/skip-matching | Bearer token | brand-scoped |
POST | /comments/{item}/draft | Bearer token | brand-scoped |
PATCH | /comments/{item}/mark-posted | Bearer token | brand-scoped |
PATCH | /comments/{item}/skip | Bearer token | brand-scoped |
POST | /composer/ai/generate | Bearer token | brand-scoped |
POST | /composer/ai/image | Bearer token | brand-scoped |
POST | /composer/ai/image/prompt | Bearer token | brand-scoped |
GET | /composer/ai/models | Bearer token | brand-scoped |
POST | /composer/ai/split | Bearer token | brand-scoped |
GET | /composer/channels | Bearer token | brand-scoped |
POST | /composer/design/ai | Bearer token | brand-scoped |
POST | /composer/design/render | Bearer token | brand-scoped |
GET | /composer/design/render/{job} | Bearer token | brand-scoped |
GET | /composer/design/templates | Bearer token | brand-scoped |
POST | /composer/labels | Bearer token | brand-scoped |
DELETE | /composer/labels/{label} | Bearer token | brand-scoped |
PUT | /composer/labels/{label} | Bearer token | brand-scoped |
GET | /composer/media | Bearer token | brand-scoped |
POST | /composer/media | Bearer token | brand-scoped |
DELETE | /composer/media/{item} | Bearer token | brand-scoped |
GET | /composer/presets | Bearer token | brand-scoped |
POST | /composer/presets | Bearer token | brand-scoped |
DELETE | /composer/presets/{preset} | Bearer token | brand-scoped |
PUT | /composer/presets/{preset} | Bearer token | brand-scoped |
GET | /connections | Bearer token | brand-scoped |
POST | /connections/groups | Bearer token | brand-scoped |
DELETE | /connections/groups/{group} | Bearer token | brand-scoped |
PUT | /connections/groups/{group} | Bearer token | brand-scoped |
GET | /connections/pick/{token} | Bearer token | brand-scoped |
DELETE | /connections/{account} | Bearer token | brand-scoped |
GET | /connections/{account}/pinterest/boards | Bearer token | brand-scoped |
GET | /connections/{account}/threads/locations | Bearer token | brand-scoped |
GET | /connections/{account}/tiktok/creator-info | Bearer token | brand-scoped |
POST | /connections/{platform}/credentials | Bearer token | brand-scoped |
POST | /connections/{platform}/finalize | Bearer token | brand-scoped |
POST | /connections/{platform}/start | Bearer token | brand-scoped |
POST | /extension/token | None | 10 per 1 min |
GET | /home/summary | Bearer token | brand-scoped |
GET | /inbox/conversations | Bearer token | brand-scoped |
GET | /inbox/conversations/{contact} | Bearer token | brand-scoped |
POST | /inbox/conversations/{contact}/ai/draft | Bearer token | brand-scoped |
POST | /inbox/conversations/{contact}/ai/polish | Bearer token | brand-scoped |
GET | /inbox/conversations/{contact}/messages | Bearer token | brand-scoped |
POST | /inbox/conversations/{contact}/read | Bearer token | brand-scoped |
POST | /inbox/conversations/{contact}/reply | Bearer token | brand-scoped |
GET | /inspiration | Bearer token | brand-scoped |
GET | /inspiration/{video} | Bearer token | brand-scoped |
POST | /inspiration/{video}/analyze | Bearer token | brand-scoped |
POST | /inspiration/{video}/to-idea | Bearer token | brand-scoped |
POST | /inspiration/{video}/transcript | Bearer token | brand-scoped |
GET | /invitations | Bearer token | brand-scoped |
POST | /invitations | Bearer token | brand-scoped |
DELETE | /invitations/{id} | Bearer token | brand-scoped |
POST | /invitations/{id}/resend | Bearer token | brand-scoped |
POST | /posts | Bearer token | brand-scoped |
GET | /posts/approvals | Bearer token | brand-scoped |
POST | /posts/compose | Bearer token | brand-scoped |
POST | /posts/draft | Bearer token | brand-scoped |
GET | /posts/{post} | Bearer token | brand-scoped |
PATCH | /posts/{post} | Bearer token | brand-scoped |
POST | /posts/{post}/approve | Bearer token | brand-scoped |
GET | /posts/{post}/design | Bearer token | brand-scoped |
POST | /posts/{post}/duplicate | Bearer token | brand-scoped |
POST | /posts/{post}/publications | Bearer token | brand-scoped |
POST | /posts/{post}/reject | Bearer token | brand-scoped |
GET | /publications | Bearer token | brand-scoped |
POST | /publications/{publication}/reschedule | Bearer token | brand-scoped |
POST | /publications/{publication}/retry | Bearer token | brand-scoped |
POST | /publications/{publication}/retry-plug | Bearer token | brand-scoped |
POST | /publications/{publication}/retry-repost | Bearer token | brand-scoped |
POST | /publications/{publication}/skip | Bearer token | brand-scoped |
POST | /research/hooks | Bearer token | brand-scoped |
POST | /research/posts | Bearer token | brand-scoped |
POST | /research/videos | Bearer token | brand-scoped |
POST | /research/videos/status | Bearer token | brand-scoped |
GET | /social-accounts | Bearer token | brand-scoped |
GET | /v1/channels | Bearer token | brand-scoped |
GET | /v1/media/assets | Bearer token | brand-scoped |
POST | /v1/media/assets | Bearer token | brand-scoped |
POST | /v1/media/assets/from-url | Bearer token | brand-scoped |
DELETE | /v1/media/assets/{kind}/{id} | Bearer token | brand-scoped |
GET | /v1/media/assets/{kind}/{id} | Bearer token | brand-scoped |
PATCH | /v1/media/assets/{kind}/{id} | Bearer token | brand-scoped |
POST | /v1/media/assets/{kind}/{id}/new-post | Bearer token | brand-scoped |
GET | /v1/media/usage | Bearer token | brand-scoped |
GET | /v1/posts | Bearer token | brand-scoped |
POST | /v1/posts | Bearer token | brand-scoped |
GET | /v1/posts/{post} | Bearer token | brand-scoped |
DELETE | /v1/posts/{post}/publications/{publication} | Bearer token | brand-scoped |
GET | /v1/slots/next | Bearer token | brand-scoped |
POST | /video-assets | Bearer token | brand-scoped |
DELETE | /video-assets/{asset} | Bearer token | brand-scoped |
GET | /video-assets/{asset} | Bearer token | brand-scoped |
POST | /video-assets/{asset}/complete | Bearer token | brand-scoped |
POST | /video-assets/{asset}/parts | Bearer token | brand-scoped |
Notes
POST /teams appears on the router but its handler is not implemented, so calling it errors. Create a brand in Studio instead.
GET /auth/two-factor is the one endpoint under /auth/two-factor/ that is not throttled, since clients poll it to render the security screen.
The /v1/* routes are the Posts API: creating and scheduling content from an outside tool, not just reading it.