Developers
REST API
Schedule and publish posts from Zapier, Make or your own code with one API key.
The Sosial API is a small REST surface authenticated with a workspace API key. Anything that can send an HTTPS request (Zapier, Make, n8n, a cron job, your own backend) can draft, schedule and publish posts through the same queue the app uses, with the same limits and plan quotas.
Get a key
- Open Team in your workspace (owners and admins only) and scroll to API keys.
- Name the key after the integration that will use it, for example
Zapier, and select Create key. - Copy the key now. It's shown once and never displayed again; afterwards only its prefix is listed so you can tell keys apart.
Keys post with owner permissions and belong to one workspace. Create one per integration, so a leaked key costs you one automation: revoke it and everything else keeps running.
Authentication
The base URL is https://sosial.app. Every request carries the key as a bearer token:
Authorization: Bearer sos_live_...Endpoints
| Method | Path | What it does |
|---|---|---|
| GET | /api/v1/me | Auth check. Returns your workspace id, name and plan. |
| GET | /api/v1/posts?status=sent&limit=20 | Newest posts first, optionally filtered by status. |
| POST | /api/v1/posts | Create a post. |
Create a post
text and channels are required. One call targets every connected account of each listed channel. Leave out scheduled_at for a draft, send "mode": "now" to queue it straight away, or send an ISO scheduled_at at least 5 minutes ahead to schedule it.
curl -X POST https://sosial.app/api/v1/posts \
-H "Authorization: Bearer sos_live_..." \
-H "Content-Type: application/json" \
-d '{
"text": "Morning Brew #42 is live, link in bio.",
"channels": ["instagram", "tiktok", "x"],
"scheduled_at": "2026-10-05T09:00:00Z",
"timezone": "Asia/Kuala_Lumpur",
"media_urls": ["https://example.com/cover.jpg"],
"idempotency_key": "brew-42"
}'Retries are safe: send the same idempotency_key and a duplicate returns the original post instead of posting twice.
List posts
curl "https://sosial.app/api/v1/posts?status=sent&limit=10" \
-H "Authorization: Bearer sos_live_..."Zapier
- Create an API key named
Zapieron the Team page. - Add a Webhooks by Zapier step that POSTs to
https://sosial.app/api/v1/postswith theAuthorization: Bearer <key>header and your JSON body. Map the trigger's text, image URL and publish time intotext,media_urlsandscheduled_at. - To trigger on "when Sosial publishes", poll
/api/v1/posts?status=sentwith a Schedule step plus a Webhooks GET.
Make
Add an HTTP Make a request module: POST, same URL and bearer header as above. To watch for published posts, schedule a scenario that GETs /api/v1/posts?status=sent and filters on created_at newer than the last run.
Limits
- API posts count against the same plan quotas as the app. A full workspace answers
402, never a silent drop. - Media is capped at 5 files of 25 MB each, fetched server-side from
httpsURLs. - Schedules need the same 5-minute lead the composer enforces.
- Channels must already be connected. Unknown or disconnected channels come back
400, naming which one.
For AI agents, see the MCP server.
Last updated: Oct 28, 2026, 1:52 PM UTC