For the complete documentation index, see llms.txt. This page is also available as Markdown.
Connection and endpoint index
Choose MCP or REST, verify authentication with a read-only request, and find the supported operations.
Compact reference for agents making REST requests. All endpoint paths below are relative to https://backend.blotato.com/v2. For task instructions, read the workflow guide. For tool calls, use the MCP reference.
Connection
Reuse an authorized connection when available. Verify with blotato_get_user or REST GET /v2/users/me, then list accounts before selecting a publishing destination. Authentication success is not publication readiness. Keep API keys in credential storage, not in chat or committed files. Follow authentication and trial requirements before creating a key.
BLOTATO API REFERENCE
=====================
IMPORTANT: CHECK HOW YOU ARE CONNECTED
- If you have blotato_create_post, blotato_list_accounts, etc. as MCP tools:
You are connected via MCP. Call those tools directly. You do NOT need HTTP
endpoints, base URLs, or auth headers. See tool descriptions for parameters.
- If you are making HTTP requests directly (no MCP tools available):
Use the REST API reference below.
REST API:
Base URL: https://backend.blotato.com/v2
Auth Header: blotato-api-key: YOUR_API_KEY
Content-Type: application/json
API KEY FORMAT: Your key sometimes ends with one or more "=" characters (base64
padding). The "=" is part of the key. Send it exactly. Do not strip, trim, or
URL-encode it. In shells, .env files, and scripts, wrap the key in single quotes
(for example 'abc123=='), to preserve the value.
For a 401, verify the complete key and authentication method. Verify with GET /users/me.
Posts, sources, visuals, comments, and messages use asynchronous completion.
Use each operation's status rules. Presigned upload is a separate request/PUT/URL flow.
Mcp tool β rest api mapping (for reference only)
This table maps operations, not interchangeable payloads. MCP uses tool arguments and transforms some responses. REST uses its own request wrappers and response shapes. Read REST versus MCP before translating a call.
blotato_get_user β GET /users/me
blotato_list_accounts β GET /users/me/accounts
blotato_get_credits β GET /credits
blotato_buy_credits β POST /credits
blotato_create_post β POST /posts
blotato_get_post_status β GET /posts/:postSubmissionId
blotato_list_posts β GET /posts
blotato_list_top_posts β GET /analytics
blotato_get_post_analytics β GET /posts/:id/analytics
blotato_list_comments β GET /comments
blotato_get_comment β GET /comments/:commentId
blotato_post_comment β POST /comments
blotato_list_conversations β GET /conversations
blotato_get_conversation β GET /conversations/:conversationId
blotato_list_messages β GET /messages
blotato_get_message β GET /messages/:messageId
blotato_send_message β POST /messages
blotato_list_automations β GET /dm-automations
blotato_create_automation β POST /dm-automations
blotato_update_automation β PATCH /dm-automations/:id
blotato_update_automation_trigger β PATCH /dm-automations/:flowId/triggers/:triggerId
blotato_delete_automation β DELETE /dm-automations/:id
blotato_list_automation_runs β GET /dm-automations/:id/runs
blotato_list_automation_logs β GET /dm-automations/:id/logs
blotato_get_automation_analytics β GET /dm-automations/:id/analytics
blotato_create_source β POST /source-resolutions-v3 (polls internally)
blotato_get_source_status β GET /source-resolutions-v3/:id
blotato_list_visual_templates β GET /videos/templates
blotato_create_visual β POST /videos/from-templates
blotato_get_visual_status β GET /videos/creations/:id
blotato_list_schedules β GET /schedules
blotato_get_schedule β GET /schedules/:id
blotato_update_schedule β PATCH /schedules/:id
blotato_delete_schedule β DELETE /schedules/:id
blotato_list_pinterest_boards β GET /social/pinterest/boards
blotato_create_presigned_upload_url β POST /media/uploads
USER INFO & CONNECTED ACCOUNTS
GET /users/me - Verify API key, get user info
GET /users/me/usage - Get connected-account usage, active-contact usage, and active-contact limit
GET /users/me/accounts - List connected social accounts (get accountId)
GET /users/me/accounts/:accountId/subaccounts - Get Facebook/LinkedIn Page IDs or YouTube playlist IDs
GET /social/pinterest/boards?accountId=ID - List Pinterest boards (get boardId)
CREDITS (billing)
GET /credits - Get credit balance, account email, and pricing (price per 1,000 credits, min/max purchase quantity)
POST /credits - Create a Stripe Checkout link to buy credits (quantity 1000-10000). Returns checkoutUrl. Creating the link does NOT charge; a human completes payment in the browser. Confirm the account email first (credits are non-transferable). 10 req/hour
PUBLISHING
POST /posts - Create/publish a post (30 req/min)
GET /posts - List posts: scheduled/published/failed, cursor-paginated (60 req/min)
GET /posts/:postSubmissionId - Poll post status (60 req/min)
TIKTOK STARTER POSTING-DESTINATION LIMIT
The 3-unique-accounts-per-24-hours error is about accounts POSTED TO, not
accounts connected. Count distinct TikTok accountId values with successful
Blotato posts during the rolling previous 24 hours. Posting again to an account
already in that set does not use another destination slot. A post to a 4th
accountId fails until one of the prior 3 leaves the window. Connection date is
irrelevant. Creator and Agency have no 3-destination limit.
ANALYTICS (Published Post Metrics)
Collected for twitter/instagram/facebook/threads/bluesky/tiktok/youtube/pinterest. LinkedIn returns no metrics yet.
GET /analytics - Top performing published posts (sortBy likes_count/comments_count/views_count/reach_count, default views_count; since/until/platform/limit; Twitter/X comments ranking falls back to replies_count, views ranking falls back to impressions_count)
GET /posts/:id/analytics - Latest metrics + snapshot history for one published post (id = published post id, not postSubmissionId)
GET /published-posts - Search published posts (query/platform) with latest analytics snapshot attached
Metrics: every field is optional; counts are strings, rates are numbers, breakdowns are objects.
COMMENTS (Instagram, Facebook)
GET /comments - List comments on your Instagram and Facebook posts, cursor-paginated (60 req/min). Filters: postId, parentCommentId, accountId, platform, since, until
GET /comments/:commentId - Get a single comment (60 req/min). Poll to check comment status
POST /comments - Post a top-level comment, or a reply when parentCommentId is set, on a published Instagram or Facebook post (30 req/min)
MESSAGING (Instagram, Facebook)
GET /conversations - List direct-message conversations, cursor-paginated (60 req/min)
GET /conversations/:conversationId - Get a single conversation (60 req/min)
GET /messages - List messages, cursor-paginated (60 req/min)
GET /messages/:messageId - Get a single message (60 req/min). Poll to check send status
POST /messages - Send a direct message or a private reply to a comment, optionally with buttons or quick replies; async, poll GET /messages/:messageId until sent|failed (30 req/min)
DM AUTOMATIONS (Instagram, Facebook)
PLATFORM BOUNDARY: TikTok publishing, scheduling, and repurposing automation do not provide TikTok DM automation. TikTok DM automations are not supported. DM automations support Instagram and Facebook only.
TESTING: Own comments never trigger an automation. Test comment-received from a different Instagram or Facebook account.
GET /dm-automations - List DM automations, cursor-paginated (60 req/min)
GET /dm-automations/:id - Get a single DM automation (60 req/min)
POST /dm-automations - Create a DM automation (30 req/min)
PATCH /dm-automations/:id - Update a DM automation; body is { "patch": { ... } } (30 req/min)
PATCH /dm-automations/:flowId/triggers/:triggerId - Update a single trigger; body is { "patch": { "isActive": true|false } } (30 req/min)
DELETE /dm-automations/:id - Archive a DM automation; returns 200 with the archived flow (30 req/min)
GET /dm-automations/:id/runs - List execution runs, cursor-paginated (60 req/min)
GET /dm-automations/:id/logs - List execution logs, cursor-paginated; filter with flowRunId (60 req/min)
GET /dm-automations/:id/analytics - All-time run totals (60 req/min)
VISUALS
POST /videos/from-templates - Create visual from template (30 req/min)
GET /videos/creations/:id - Poll visual status
GET /videos/templates - List available templates
DELETE /videos/:id - Delete a video
SOURCES (Content Extraction)
POST /source-resolutions-v3 - Extract content from URL/text (30 req/min)
GET /source-resolutions-v3/:id - Poll source status (60 req/min)
SCHEDULES (Content Calendar)
GET /schedules - List future scheduled posts (cursor-paginated)
GET /schedules/:id - Get a single scheduled post
PATCH /schedules/:id - Update scheduled post (content and/or time)
DELETE /schedules/:id - Delete scheduled post and cancel publishing job
SCHEDULE SLOTS (Recurring Time Windows)
GET /schedule/slots - List all scheduling slots
POST /schedule/slots - Create one or more slots
PATCH /schedule/slots/:id - Update slot targets (platforms/accounts)
DELETE /schedules/slots/:id - Delete a slot
POST /schedule/slots/next-available - Find next open slot for a platform/account
MEDIA
POST /media - Upload media from URL (30 req/min, optional)
POST /media/uploads - Get presigned upload URL for local files (120 req/min)