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

  1. Open Team in your workspace (owners and admins only) and scroll to API keys.
  2. Name the key after the integration that will use it, for example Zapier, and select Create key.
  3. 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:

text
Authorization: Bearer sos_live_...

Endpoints

MethodPathWhat it does
GET/api/v1/meAuth check. Returns your workspace id, name and plan.
GET/api/v1/posts?status=sent&limit=20Newest posts first, optionally filtered by status.
POST/api/v1/postsCreate 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.

bash
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

bash
curl "https://sosial.app/api/v1/posts?status=sent&limit=10" \
  -H "Authorization: Bearer sos_live_..."

Zapier

  1. Create an API key named Zapier on the Team page.
  2. Add a Webhooks by Zapier step that POSTs to https://sosial.app/api/v1/posts with the Authorization: Bearer <key> header and your JSON body. Map the trigger's text, image URL and publish time into text, media_urls and scheduled_at.
  3. To trigger on "when Sosial publishes", poll /api/v1/posts?status=sent with 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 https URLs.
  • 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