Get started
Authentication & limits
Every request is made with an API key that belongs to a member of your organisation, and can do no more than that member can.
API keys
Create keys in the studio under Settings › Publishing API keys. A key starts with ps_, has a set of scopes and an expiry date, and is sent as a bearer token:
curl "https://dashboard.lifebliss.app/api/v1/identity" \
-H "Authorization: Bearer ps_…"Access follows the member who issued the key, as it is now: if their role or ecosystems change, so does what the key can reach. Social-network access tokens never leave Publishing Studio — your key is the only credential you hold.
Scopes
Give each integration only the scopes it uses. A request outside a key's scopes gets 403.
| Scope | Allows | Endpoints |
|---|---|---|
accounts:read | Read your identity, accounts, account groups and Pinterest boards. | GET/identityGET/accountsGET/account-groupsGET/org/accounts/{id}/boards |
posts:read | List posts and read a post's per-network results. | GET/postsGET/posts/{id} |
posts:write | Create, schedule, cancel and retry posts. | POST/postsDEL/posts/{id}POST/posts/{id}/retry |
media:write | Request signed media upload URLs. | POST/media/presign |
webhooks:manage | Create and manage webhook endpoints and deliveries. Org admins only. | GET/webhook-endpointsPOST/webhook-endpointsGET/webhook-endpoints/{id}PATCH/webhook-endpoints/{id}DEL/webhook-endpoints/{id}POST/webhook-endpoints/{id}/testGET/webhook-endpoints/{id}/deliveriesPOST/webhook-endpoints/{id}/deliveries/{deliveryId}/retry |
accounts:connect | Run headless connect flows for your users. | POST/connect/{platform}/headlessGET/connect/selectPOST/connect/select |
analytics:read | Read social media analytics for the accounts you can reach: followers, growth, post metrics and engagement. | GET/analytics/report |
site:read | Read website visit and sign-up analytics. Platform staff only. | GET/site/visitsGET/site/signins |
live:read | Read YouTube Live channels with their stream keys, available streams and broadcasts. Org admins only; not on a key limited to account groups. | GET/live/channelsGET/live/streamsGET/liveGET/live/{id} |
live:write. live:* only on an org admin's key not limited to account groups |
The validation endpoints (GET and POST /validate) need no key.
Limiting a key to account groups
A key can be limited to one or more account groups. It then sees and publishes to only the accounts in those groups. Webhook management is not available to group-limited keys, and a headless connection made with one must name one of its groups as groupId.
Rate limits
Each key has two budgets per minute: reads (GET) and writes (everything else). By default that is 1,800 reads and 600 writes a minute; reads have their own budget so polling for status never stops you creating posts. Every response made with a key reports the budget it spent in X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset (Unix seconds) and X-RateLimit-Bucket (read or write). When you go over, you get 429 with a Retry-After header saying how many seconds to wait. An integration that needs more can ask us to raise its key's limits. To avoid polling at all, use webhooks, or check many posts in one call with GET /posts?ids=….
HTTP/1.1 200 OK
X-Request-Id: req_…
X-RateLimit-Limit: 1800
X-RateLimit-Remaining: 1797
X-RateLimit-Reset: 1793563860
X-RateLimit-Bucket: readRequest ids
Every response carries an X-Request-Id header. Log it, and quote it when you ask for help — it finds the exact request in your organisation's API log in the studio. Errors include the same id in their body.