Skip to content

Be the first to know.

SPREVA opens soon. Leave your email and we will write once, the day you can sign up.

We only use it to tell you when SPREVA opens.

Developers

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.

See pricing

For developers

Everything you publish, your code can publish.

The dashboard is one client of the API, not a wrapper around it. Same endpoints, same rules, same validation.

  • 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 dashboard.

  • MCP for agents

    Twenty-four tools over MCP, from scheduling a post to writing a caption, suggesting alt text or generating an image, so an assistant can work for you. Agents never see a provider token.

120 / minute
Rate limit per key, with the wait in the error.
10 seconds
To answer a webhook before it is retried.
Create a post for two accounts
curl -X POST https://spreva.app/api/v1/posts \
  -H "Authorization: Bearer POST_API_KEY_..." \
  -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." } }
    ]
  }'
Give it a date
curl -X POST https://spreva.app/api/v1/posts/$POST_ID/schedule \
  -H "Authorization: Bearer POST_API_KEY_..." \
  -d '{ "scheduledAt": "2026-10-01T09:00:00.000Z",
        "timezone": "Europe/Lisbon" }'
Get told when it lands
POST /hooks/post HTTP/1.1
x-post-event: target.published
x-post-signature: v1=6f1c…               # HMAC-SHA256 of "timestamp.body"

{
  "id": "7f3c2d10-0000-4000-8000-000000000000",
  "type": "target.published",
  "createdAt": "2026-10-01T09:00:02.412Z",
  "data": {
    "type": "TargetPublished",
    "postId": "5d2a7c3e-0000-4000-8000-000000000002",
    "provider": "instagram",
    "remoteUrl": "https://www.instagram.com/p/EXAMPLE/"
  }
}

Stop posting twelve times.

Connect your accounts, write the thing once, and get your afternoon back.

  • Facebook
  • Instagram
  • Threads
  • X
  • LinkedIn
  • Bluesky
  • Mastodon
  • TikTok
  • YouTube
  • Pinterest
  • Tumblr
  • Google Business