Publish from your own code, or from your AI agent.
Create and schedule posts, upload media, read analytics and use the AI from your own code, or give an AI agent the tools to do it for you. Start with a key for one workspace and only the permissions it needs.
Everything you publish, your code can publish.
The API runs the same rules and the same validation as the app: a post that passes in one passes in the other.
- Keys with scopes
A key is created for one workspace and one set of permissions. A read-only key cannot publish, and every call is rate limited and recorded.
- An OpenAPI document
Posts, media uploads, queues, social accounts, analytics and AI: write a caption, generate an image, suggest and set alt text. The whole surface is described by a spec you can generate a client from.
- Signed webhooks
Thirteen events, from post.published to connection.revoked. Each delivery is signed, retried on failure, and replayable from the app.
- MCP for agents
Connect your AI agent with one URL. Agents find posts and media by name, draft, schedule and read results, and SPREVA asks before anything public or costly. Agents never see a provider token.
- 120 / minute
- Per person in a workspace, with the wait in the error.
- 10 seconds
- To answer a webhook before it is retried.
curl -X POST https://app.spreva.ai/api/v1/posts \
-H "Authorization: Bearer spreva_sk_..." \
-H "Content-Type: application/json" \
-d '{
"content": {
"caption": "Ship day. New build is live.",
"mediaIds": ["c47e2a90-0000-4000-8000-000000000004"]
},
"targets": [
{ "connectionId": "e81b3f52-...-005", "placement": "feed" },
{ "connectionId": "a31d9f07-...-006", "placement": "reel",
"override": { "caption": "Ship day. Full notes in bio." } }
]
}'curl -X POST https://app.spreva.ai/api/v1/posts/$POST_ID/schedule \
-H "Authorization: Bearer spreva_sk_..." \
-d '{ "scheduledAt": "2026-10-01T09:00:00.000Z",
"timezone": "Europe/Lisbon" }'POST /hooks/spreva HTTP/1.1
x-spreva-event: target.published
x-spreva-event-id: 7f3c2d10-0000-4000-8000-000000000000
x-spreva-timestamp: 1790845202
x-spreva-signature: v1=6f1c… # HMAC-SHA256 of "timestamp.body"
{
"id": "7f3c2d10-0000-4000-8000-000000000000",
"type": "target.published",
"createdAt": "2026-10-01T09:00:02.412Z",
"workspaceId": "0b9f6c1e-0000-4000-8000-000000000001",
"data": {
"type": "TargetPublished",
"workspaceId": "0b9f6c1e-0000-4000-8000-000000000001",
"postId": "5d2a7c3e-0000-4000-8000-000000000002",
"targetId": "9a1f4b7d-0000-4000-8000-000000000003",
"provider": "instagram",
"remoteId": "17900000000000000",
"remoteUrl": "https://www.instagram.com/p/EXAMPLE/"
}
}