Sprout Social has a REST API covering profiles, analytics, messages, listening, and publishing. It exists and it works. The question for developers is what it costs to get to it and what it can actually do once you're there — and both answers are more restrictive than a typical unified social posting API.
#What Sprout Social's API Costs
Sprout doesn't publish a separate API price. There's no per-call fee and no API add-on listed on its pricing page. Instead, API access comes with the Advanced plan, priced at $399 per seat per month billed yearly or $499 billed monthly, and with Enterprise. A user on that plan also needs the API Permissions permission in Sprout, plus acceptance of Sprout's Analytics API Terms of Service inside the app before anything works.
So the real cost of API access is $399 to $499 per seat per month, times however many seats your contract carries — there's no lighter, developer-only tier.
#What the API Actually Does (and Doesn't)
This is the part that catches teams off guard after they've paid for access:
- Publishing creates drafts only. There's no endpoint that sends a post live or replies to a message directly — someone still has to approve inside Sprout's dashboard.
- Rate limits are fixed in the docs: 60 requests per minute and 250,000 calls per month. The docs list no higher tier.
- Coverage gaps: paid ad data is excluded, X listening is excluded, Reddit listening messages are excluded, and review data from Yelp, TripAdvisor, Trustpilot, and Glassdoor isn't available through the API.
If your use case is "programmatically publish content to social accounts," an API that only creates drafts doesn't solve the problem — you still need a human in the loop, which defeats the point of automating the workflow in the first place.
#The Sprout Social API reference: endpoints and data model
Sprout's API documentation groups everything under a customer ID. You get that ID first, then every other path starts with /v1/<customer ID>/. This is the whole surface as of 7 October 2026:
| Area | Endpoints | What you get |
|---|---|---|
| Metadata | GET /v1/metadata/client, then GET .../metadata/customer plus /tags, /groups, /users, /topics, /teams, /queues |
Customer IDs, connected profiles, tags, groups, users, listening topics, teams, case queues |
| Analytics | POST .../analytics/profiles, POST .../analytics/posts |
Metrics for owned profiles and for individual posts |
| Messages | POST .../messages |
Inbox messages, filtered in the request body |
| Listening | POST .../listening/topics/<topic id>/messages and /metrics |
Messages and metrics for a listening topic |
| Publishing | POST .../publishing/posts, GET .../publishing/posts/<id> |
Create a draft post, read it back |
| Media | POST .../media/ (up to 50 MB), or a multipart .../media/submission flow |
A media_id to attach to a post |
| Cases | POST .../cases/filter |
Customer care cases |
Authentication. Sprout supports OAuth 2.0, which it recommends, or API tokens. Either way the request carries Authorization: Bearer <token>. A user with the API Permissions permission creates tokens on the API Tokens settings page.
Limits. 60 requests a minute and 250,000 a month.
#How to post to Sprout Social through the API
Short answer: you can create a draft, with scheduled times attached, but you cannot publish it through the API. Sprout's docs say: "Only posts created in draft status are supported at this time." Publishing endpoints were added on 31 May 2024 (changelog).
- Call
GET /v1/metadata/clientto get your customer ID. - Call
GET /v1/<customer ID>/metadata/customerto get the profile IDs and the group they belong to. - Upload any image, video or PDF with
POST /v1/<customer ID>/media/and keep themedia_id. - Create the post with
POST /v1/<customer ID>/publishing/posts.is_draftmust betrue. - Someone opens the draft in Sprout and sends it on its way.
A request body looks like this:
1{
2 "group_id": 55667788,
3 "customer_profile_ids": [2345, 5678],
4 "is_draft": true,
5 "text": "Post text",
6 "media": [{ "media_id": "1234-abcd-7890", "media_type": "PHOTO" }],
7 "delivery": { "type": "SCHEDULED", "scheduled_times": ["2026-10-14T15:00:00Z"] }
8}
Two details from the docs that cost people time:
- Profiles can be dropped without an error. If the media does not suit one of the profiles, Sprout drops that profile and creates the draft for the rest. A PDF sent to a LinkedIn profile and an Instagram profile creates a LinkedIn draft only.
- The status never changes. A post read back by its ID always shows
delivery_status: PENDING, even after it is published. To find the published post, use the Messages endpoint.
#What This Means If You're Building a Product Feature
Sprout Social's API was built to extend Sprout's own dashboard for enterprise social teams — think custom internal reporting on top of Sprout's data, not a third-party app that posts on a user's behalf. If that's your use case, the draft-only publishing model and the seat-gated pricing are reasonable tradeoffs for a company already paying for Sprout at scale.
If you're a developer building a scheduling feature, an AI agent that posts autonomously, or a SaaS product that needs to publish to a customer's connected accounts — none of that works against draft-only publishing. You need an API built for programmatic posting from day one, not a reporting API that happens to expose a publish endpoint.
#Schedule & Chill as the Alternative
Schedule & Chill is free — no credit card, no trial timer — and publishing actually publishes: schedule a post or send it immediately, or save it as a draft if you want to finish it later. The free plan covers 2 connected accounts, 500 posts a month, and 400MB uploads.
There's no per-seat pricing model at all. You can create an API key as soon as you sign up, plus an MCP server with 22 tools, 4 resources and 2 prompts if you're building with an AI agent framework like Claude, n8n, or LangGraph rather than hand-rolling REST calls.
For the full feature-by-feature breakdown: Sprout Social vs Schedule & Chill.
#When Sprout's API Still Fits
If your team runs Sprout Social as its primary social management tool and you're building internal tooling on top of an existing Advanced-plan contract — custom dashboards, data warehousing, listening reports — the API is already paid for and the draft-only publishing model isn't a blocker, since a human is reviewing content anyway. That's a legitimate use case; it's just not the common one for someone evaluating "which social posting API should my product use."
More context on the broader landscape is on the alternatives hub, and on rate limits specifically in our platform-by-platform reference.
#Frequently Asked Questions
Does Sprout Social have a public API? Yes. It covers profiles, analytics, messages, listening, and publishing, but publishing through the API creates drafts only — it doesn't send posts live.
How much does Sprout Social's API cost? There's no separate API fee. Access requires the Advanced plan ($399 per seat a month billed yearly, $499 billed monthly) or Enterprise, plus the API Permissions permission in Sprout.
Can you post to Sprout Social through the API?
Only as a draft. POST /v1/<customer ID>/publishing/posts creates a post on Sprout's publishing calendar, and it must have "is_draft": true. You can attach scheduled times, but a person still has to publish it in Sprout.
What objects does the Sprout Social API expose? Customers and their profiles, tags, groups, users, listening topics, teams and case queues; profile and post analytics; inbox messages; listening messages and metrics; draft publishing posts; media uploads; and cases.
What are Sprout Social's API rate limits? 60 requests per minute and 250,000 calls per month. Sprout's API docs list no higher limit for any plan.
Can I publish directly to social accounts through Sprout's API? No. Publishing through the API creates a draft that someone still has to publish inside Sprout. There's no endpoint for sending a post live or replying to a message directly.
Is Schedule & Chill's publishing draft-only or live? Live. Posts you schedule or send through the API or MCP server actually publish — no manual approval step required.
