Skip to content
REST API · MCP server · Bearer auth

Built for AI agents.

REST API + MCP server across 10+ platforms. One API key unlocks posts, profiles, analytics, and webhooks — and lets Claude Code, Cursor, or any MCP client drive LetsPost from your editor.

Free tier · No card required · Upgrade when you need more

How it works

Up and running in minutes

01

Get an API key

Sign up free — no card required. Generate a key in Settings → API Keys in under 60 seconds.

Get API key
02

Make a request

Hit the REST API with curl, fetch, or requests. Bearer token auth — one header, done.

03

Your agent posts

Create posts, schedule content, pull analytics — all from your automation. Same pipeline as the dashboard.

Code examples

Create a post and schedule it

No SDK needed — just curl, fetch, or requests. Bearer token, one header.

# Schedule a post — single image, three platforms, future time.
# Idempotency-Key is optional but recommended: a duplicate retry
# inside 24h returns the original post instead of creating a second.
curl https://api.letspost.it/v1/posts \
  -H "Authorization: Bearer lp_live_xxx" \
  -H "Idempotency-Key: launch-2026-05-01" \
  -H "Content-Type: application/json" \
  -d '{
    "profileId": "prof_abc123",
    "content": "New drop 🔥 #launch",
    "mediaUrl": "https://cdn.example.com/drop.jpg",
    "platforms": ["tiktok", "instagram", "youtube"],
    "scheduledFor": "2026-05-01T10:00:00Z"
  }'

API reference

REST endpoints

All endpoints use bearer auth. Base URL: .../v1

Posts
GET/posts
POST/posts
GET/posts/:id
PATCH/posts/:id
DELETE/posts/:id
GET/posts/:id/metrics
Profiles
GET/profiles
POST/profiles
GET/profiles/:id
PATCH/profiles/:id
DELETE/profiles/:id
Connected Accounts
GET/platform/connections
GET/platform/connect/:platform
DELETE/platform/connections/:id
Analytics
GET/analytics/account-metrics
GET/analytics/post-metrics
API Keys
GET/api-keys
POST/api-keys
DELETE/api-keys/:id
Webhooks
GET/webhooks
POST/webhooks
DELETE/webhooks/:id
Auth & Billing
GET/auth/me
GET/auth/usage
GET/billing/status
GET/billing/plans
Status
GET/status/components
GET/status/incidents/active
Live

MCP server — live now

letspost.it ships a remote MCP server at mcp.letspost.it/v1/mcp (streamable HTTP, JSON-RPC 2.0). One API key with mcp:read + mcp:write + mcp:publish scopes lets Claude Code, Claude Desktop, Cursor, or any MCP client drive LetsPost from inside your editor — no local binary, no daemon, no port forwarding. Same encrypted token storage, ownership checks, and rate-limited publish pipeline as the REST API.

POSThttps://mcp.letspost.it/v1/mcp

Its own subdomain

mcp.letspost.it is dedicated to MCP traffic — a separate host from the REST API with its own rate-limit lane. Clients point at https://mcp.letspost.it/v1/mcp with a Bearer key and that's it.

Same key, same scopes

Reuse the lp_live_ key you already issued for the REST API. Scopes (mcp:read, mcp:write, mcp:publish) let you grant read-only or preview-only access to an agent without handing it the publish button.

Same publish rails

An MCP commit goes through the same validation, idempotency, rate limit, and platform fan-out as a /v1/posts call. What works in the dashboard works from Claude Code — no second pipeline to debug.

Tool surface

53 tools, three scopes

The full assistant surface — read drafts and analytics, compose and schedule, then publish — split across three opt-in scopes so your agent gets only what it needs.

mcp:read16 tools
check_schedule_conflictDetect schedule clashes within a time window on overlapping platforms before you schedule.
find_postLook up the caller's own posts (by id, recent, or caption); returns minimal summaries.
get_brand_kitRead the brand kit: colors, logo, fonts, and voice notes.
get_connection_healthList connected accounts with health status and a reconnect URL for any broken one.
get_period_summaryActivity digest for a period: published / partial / failed counts, per-platform breakdown, top post.
get_post_detailsFull details for one post: caption, status, schedule/publish times, and per-platform results + URLs.
get_top_postTop-performing post in a period, ranked by impressions, views, or likes.
get_user_statusAccount snapshot: email, connected platforms, drafts, and what's scheduled today.
list_draftsList saved drafts, newest first.
list_jobsList scheduled digest jobs (name, cron, delivery channels, next run).
list_post_versionsList a post's edit-history snapshots.
list_recent_postsList recent posts in a terminal state — published, partial, or failed.
list_repost_sequencesList recent repost sequences.
list_reviewersList the approval roster (name, email, WhatsApp).
list_upcoming_scheduledList scheduled posts in a forward window (default next 7 days).
suggest_best_timeSuggest best-time posting windows per platform from industry data.
mcp:write33 tools
add_media_to_draftAppend an already-ingested media item to a draft (first sets the cover, rest form a carousel).
add_platforms_to_postAdd platforms to an existing post and re-enqueue publish for just the new ones.
add_reviewerAdd a reviewer to the approval roster (name + email, optional WhatsApp).
bulk_rescheduleBulk-shift scheduled posts by a delta or to a fixed time; dry-run supported.
cancel_draftDiscard the active workspace draft (caption, platforms, media).
cancel_repost_sequenceCancel a repost sequence; pending children drop, published ones stay.
create_postCreate a post (draft by default); returns the post id to drive the publish/schedule lifecycle.
crop_and_recomposeRe-crop media to 1:1 to recover from an Instagram aspect-ratio failure.
delete_jobDelete a scheduled digest job (irreversible).
fix_grammarFix grammar, spelling, and punctuation in a caption — preserves voice, emoji, and hashtags.
generate_publish_previewRender per-platform mockups of a draft and deliver them as images.
open_support_ticketOpen a support ticket after a publish exhausts its retries.
pause_jobPause a scheduled digest job until resumed.
permanent_deleteHard-delete a post, skipping the undo window.
presign_media_uploadIssue a 15-min signed upload URL; returns a storage path to attach to a post.
preview_post_summaryShow a text preview (media + caption + platforms + timing); required before publish.
remove_reviewerRemove a reviewer from the roster (soft-delete).
request_reviewSend a draft to a reviewer with a 72h magic link; sets approval to pending.
resume_jobResume a paused scheduled digest job.
schedule_jobSchedule a recurring digest delivery (cron + channels: WhatsApp / Telegram / Slack / email).
schedule_recurringRegister a recurring repost rule from a template post.
schedule_repost_sequenceSchedule a sequence of repost steps from a template (up to 10 steps).
set_brand_kitUpdate the brand kit (colors, logo, fonts, voice notes).
set_default_platformsPersist the default platforms used when a post names none.
set_default_schedule_slotPersist a default schedule slot (hour + minute, local time).
set_post_platformsReplace the platforms on a draft.
set_require_approval_defaultToggle whether every publish/schedule requires approval by default.
set_workspace_scheduleStamp a natural-language scheduled time on the active workspace.
start_connectReturn a deep link to connect (or reconnect) a social account.
translate_captionTranslate a caption to en / pt-BR / es, preserving emoji, hashtags, and line breaks.
undo_last_actionReverse the most recent soft-delete within the 30s undo window.
update_jobUpdate a scheduled digest job (name, cron, channels, params).
update_post_captionSet or replace a draft's caption.
mcp:publish4 tools
commit_workspaceCommit the active workspace to a post — save draft, publish now, or schedule.
publish_postPublish an existing draft now by id.
retry_failed_platformsRetry the platforms that failed on a publish; already-published ones are skipped.
schedule_postSchedule an existing draft for a future time.

Scopes are opt-in per key. Issue a read-only key for an analytics agent, a write-but-no-publish key for a copy reviewer, and reserve mcp:publish for the agent you actually trust.

Client setup

Pick your client

{
  "mcpServers": {
    "letspost": {
      "url": "https://mcp.letspost.it/v1/mcp",
      "headers": { "Authorization": "Bearer lp_live_xxx" }
    }
  }
}
Either paste the JSON into ~/.claude.json or run the one-liner `claude mcp add` shown above. The letspost tools appear in the next session — try `/mcp` to confirm.

Give your agent social superpowers

Free plan. No card required. API key ready in under a minute.

Free tier · No credit card · MCP server live