Manage Swell from your own tools.
Create content, schedule posts, generate tracked links, inspect connected accounts, and pull analytics with scoped API keys.
https://api.growonswell.com/v1Quick Start
Create a key
Open Account Settings, choose API keys, and create a read/write token.
Call the API
Send the token as an Authorization bearer token to api.growonswell.com.
Use returned IDs
Use social_account_ids, media_ids, post IDs, and tracked link IDs in later calls.
Authentication
API keys belong to one workspace and can be revoked from Account Settings. Store the full key in your secret manager; Swell only shows it once.
Authorization: Bearer $SWELL_API_KEYRate Limits
Successful API responses include `X-RateLimit-Limit`, `X-RateLimit-Remaining`, and `X-RateLimit-Reset`. When a key is over its window, Swell returns 429 with `Retry-After`.
X-RateLimit-Remaining: 128Retry-After: 42OpenAPI Contract
The customer API publishes a filtered OpenAPI document that excludes internal app routes and includes bearer-token security metadata for the public `/v1` surface.
https://api.growonswell.com/v1/openapi.jsonView specEndpoint Reference
Workspace
/workspaceRead workspace identity, slug, timezone, and plan key for the API key.
/social-accountsList the social accounts available for programmatic content and scheduling.
Content
/postsReturn recent posts. Add status=draft, scheduled, published, failed, or archived to filter, and limit up to 200.
/postsCreate a draft with caption, tags, media IDs, social account IDs, and platform overrides.
/posts/{post_id}Read one workspace post by ID, including schedule, targets, media, tags, and publishing state.
/posts/{post_id}Edit a draft or scheduled post using the same fields as the app composer.
/posts/{post_id}/scheduleQueue a draft for future publishing after the same validation used in the app.
/posts/{post_id}/rescheduleMove a scheduled or failed post to a new future publish time.
/posts/{post_id}/unscheduleClear a scheduled post and return it to draft status.
/posts/{post_id}/archiveArchive a draft, scheduled, or failed post without deleting its history.
Media
/mediaReturn recent images and videos that can be attached to API-created posts.
/mediaUpload a JPG, PNG, MP4, or MOV asset with optional alt text.
/media/{media_id}/fileFetch the stored media bytes for a workspace asset.
Campaigns
/linksRead tracked links with destination URLs, tracking URLs, and attribution keys.
/linksCreate a campaign link with UTM fields and optional post or social account context.
Analytics
/analytics/overviewRead visitors, pageviews, conversions, revenue, sources, pages, performance, and recent events.
Examples
Create a draft
curl -X POST "https://api.growonswell.com/v1/posts" \
-H "Authorization: Bearer $SWELL_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"title": "Launch proof carousel",
"base_caption": "A customer story with one clear next step.",
"scheduled_at": null,
"tags": ["launch", "customer-story"],
"media_ids": [],
"social_account_ids": [123],
"platform_captions": {
"linkedin": "A customer story with one clear next step."
}
}'Upload media
curl -X POST "https://api.growonswell.com/v1/media" \
-H "Authorization: Bearer $SWELL_API_KEY" \
-F "file=@launch-image.png;type=image/png" \
-F "alt_text=A product dashboard with a clean launch report."Schedule a post
curl -X POST "https://api.growonswell.com/v1/posts/42/schedule" \
-H "Authorization: Bearer $SWELL_API_KEY" \
-H "Content-Type: application/json" \
-d '{"scheduled_at": "2026-07-02T14:30:00Z"}'Create a tracked link
curl -X POST "https://api.growonswell.com/v1/links" \
-H "Authorization: Bearer $SWELL_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"label": "Summer launch",
"destination_url": "https://example.com/summer",
"utm_source": "linkedin",
"utm_medium": "organic",
"utm_campaign": "summer_launch",
"utm_content": "carousel"
}'Errors
401 means the API key is missing, malformed, revoked, or invalid.
402 means the key owner must select a plan before making API calls.
403 means the key lacks the required scope or the key owner no longer has workspace access.
429 means the key exceeded its rate limit. Wait the number of seconds in `Retry-After` before retrying.
422 means the payload failed Swell validation, such as an unavailable social account or a past scheduled time.
