PlanSend for developers
Approval-aware publishing, from scripts or AI assistants.
Use workspace-scoped API keys to create drafts, request client approval, schedule posts and inspect publishing jobs. The same keys work with the built-in MCP server, so an AI assistant follows the same approval rules as the app.
# Create a draft in the workspace this key belongs to
curl https://plansend.io/api/v1/posts \
-H "Authorization: Bearer $PLANSEND_KEY" \
-H "Content-Type: application/json" \
-d '{"title":"Launch week","body":"Ready to review.","channel_ids":[12,15]}'
# Ask the client to approve it
curl -X POST https://plansend.io/api/v1/posts/481/request-approval \
-H "Authorization: Bearer $PLANSEND_KEY" \
-H "Content-Type: application/json" \
-d '{"reviewer_email":"[email protected]"}'
# → { "data": { "review_url": "https://plansend.io/review/…", "expires_at": "…", "emailed": true } }
Authentication
Keys belong to one workspace
Create keys in Settings → API keys. Send the key as a Bearer token. Each key has a scope, read, write or admin, that the server enforces on every request, and the raw key is shown once when it is generated. Every call is written to the workspace audit log.
Version 1
REST endpoints
Responses are JSON under a data key. Errors return { "error": { "code", "message" } } with a matching HTTP status. Writes that change a post require the current revision, so two people can never overwrite each other unknowingly.
/api/v1/workspacesThe workspace this key belongs to
/api/v1/channelsConnected channels and their status
/api/v1/postsList posts, filter by status
/api/v1/postsCreate a draft with channel variants
/api/v1/posts/:idUpdate a draft (requires the current revision)
/api/v1/posts/:id/request-approvalCreate a review link for the current revision; add reviewer_email to send it by email
/api/v1/posts/:id/approveApprove a specific revision
/api/v1/posts/:id/scheduleSchedule an approved revision in a time zone
/api/v1/posts/:id/cancelCancel a scheduled post
/api/v1/jobsInspect publishing jobs, retries and errors
/api/v1/ai/creditsAI Assist credits used and remaining this month
/api/v1/ai/assistGenerate caption, hook, hashtag or rewrite suggestions
Model Context Protocol
The same approval rules, from an assistant
The streamable HTTP endpoint at /mcp exposes PlanSend as tools: list channels, create drafts, request approval, approve a revision, schedule, inspect jobs, and draft copy with AI Assist. Scopes, revision checks and the audit log apply exactly as they do for the REST API.
{
"mcpServers": {
"plansend": {
"url": "https://plansend.io/mcp",
"headers": { "Authorization": "Bearer $PLANSEND_KEY" }
}
}
}
Guarantees
What the API promises
Revision safety
Approvals, schedules and edits reference a revision number. A stale revision is rejected with 409 instead of silently winning.
Idempotent publishing
Each publish job carries an idempotency key per variant and revision, so retries after a network failure never double-post.
Tenant isolation
Every query is scoped to the key's workspace. There is no way to address another workspace's posts, channels or jobs.
Audit trail
Every API and MCP action is recorded with the key id, action and outcome, and is visible to workspace owners.