The API surface.
Publishing is the heart of it, Media uploads bytes once and references them by id, Webhooks push state changes back to you. Same auth, same error envelope, same idempotency rules across the whole API.
API SURFACES
POST /v1/posts — text, media, schedule
One POST endpoint, eight platforms. Idempotency keys on every write. Preflight validation before the upstream call. Schedule with `scheduledAt`; webhooks confirm publish.
POST /v1/posts · idempotency · preflight rules · scheduled posts · per-platform overrides
POST /v1/media — multipart upload
Upload bytes once, reference by `mediaId` on every post that uses them. Cuts publish-time latency, deduplicates assets across posts, and unlocks video on platforms (Bluesky, Twitter, Pinterest) where inline base64 doesn't scale.
POST /v1/media · multipart · S3-backed · scoped per-org · referenced from `media: [{ mediaId }]`
HMAC-signed delivery for every state transition
Subscribe once, receive `post.queued`, `post.published`, `post.failed`, `post.rejected`, `token.expiring`, `token.revoked`, `version.deprecated`. Every payload HMAC-signed with a per-endpoint secret you rotate.
POST /v1/webhook-endpoints · 8 event types · HMAC-SHA256 · exponential backoff · dead-letter inspection
One auth, one error shape, one retry contract.
stable across every endpoint
Same Authorization: Bearer lmp_live_… on every call. Same Idempotency-Key
semantics on every write. Same failure envelope (stable code + rule + remediation + request id)
on every non-2xx. Build against one endpoint and the others feel familiar in minutes.