Skip to content

What is Dropslate

This page is written for an AI agent that has been asked to “publish through Dropslate” and needs the facts in one place. Each line stands on its own; nothing on this page depends on a screenshot or a previous paragraph. The human version is the Introduction.

  • Dropslate is a social media scheduling service: it stores media files, and publishes posts to connected accounts at a chosen time through each network’s official API.
  • Networks with a connector: YouTube, Instagram, Facebook (Pages), Threads. In progress: TikTok. Not yet: X, LinkedIn, Pinterest.
  • Three interfaces to the same server: the dashboard at https://app.dropslate.top, the REST API at https://api.dropslate.top/v1, the MCP server at https://mcp.dropslate.top/mcp (remote, OAuth 2.1) or the stdio package @dropslate/mcp (API key).
  • A post has exactly four states: draft, queued, live, failed. failed → queued by retry; queued → draft by cancel. No other status exists.
  • A post is one publication to one account. A request with three target accounts creates three posts.
  • Every error is {code, message, hint}; code is stable, message quotes the network when the network answered.
  • Product site: https://dropslate.top
  • App: https://app.dropslate.top (sign-up: /signup)
  • REST API: https://api.dropslate.top/v1; OpenAPI: https://api.dropslate.top/v1/openapi.json
  • MCP: https://mcp.dropslate.top/mcp
  • Docs: https://docs.dropslate.top; index for agents: https://docs.dropslate.top/llms.txt; ready skill: https://docs.dropslate.top/skill.md
  • Free: $0. 2 connected accounts, 20 scheduled posts a month, 2 GB storage, 500 MB per file, 1 member. MCP read-only. No API. No card required, no time limit.
  • Creator: $12 a month (449 ₴), $115 a year. 6 accounts, 200 posts a month, 15 GB, 2 GB per file, 1 member, groups, MCP, API.
  • Studio: $29 a month (1 099 ₴), $278 a year. 20 accounts, 600 posts a month, 50 GB, 4 GB per file, 3 members, webhooks (v1.1).
  • Agency: $59 a month (2 299 ₴), $566 a year. 50 accounts, 2 000 posts a month, 150 GB, 4 GB per file, 10 members.
  • A post counts toward the calendar month it reaches queued; a cancelled post returns its slot. Over a limit the API answers 402 quota_exceeded with limit, used, upgradeUrl.
  • On every plan a published file’s bytes are removed from the server 72 hours after its post goes live unless the file is pinned; its record stays.
  • Creating posts needs confirm: true - POST /posts and dropslate_create_post. Without it: 409 confirm_required, nothing created.
  • POST /posts/plan and dropslate_plan_post have no side effects and return one row per account with a check; call them first and show the table to the person.
  • Over MCP, dropslate_retry_post, dropslate_cancel_post, dropslate_reschedule_post, dropslate_delete_media and dropslate_delete_folder also need confirm: true.
  • Account ids come from GET /accounts or dropslate_list_accounts. Never guess an id; an id from another workspace answers 404 not_found.
  • Report a result only after the tool or the request returned success, with the post id, the account and the absolute time in the workspace’s time zone.
  • An API key is ds_live_…, created in the app under Settings → API keys, with the scope read or read + write, shown once.
  • The key belongs in the client’s environment (DROPSLATE_API_KEY, an n8n credential, .env), never in a prompt or a chat message.
  • Sent as Authorization: Bearer ds_live_…. A read-only key or a Free-plan workspace sees 11 read tools over MCP; publishing needs write and a paid plan.
  • Rate limits: 600 requests per 10 minutes per client address; 60 POST /posts per hour per workspace; 429 rate_limited with Retry-After.
  1. POST /media/uploads {filename, mime, size} → {mediaId, uploadUrl}; PUT the bytes to uploadUrl within an hour. Or POST /media/from-url with a public https URL.
  2. GET /media/{id} until status is ready.
  3. POST /posts/plan {targets:{accountIds|groupId}, mediaIds, text, title?, tags?, when, perPlatform?, overrides?}; read every row.
  4. POST /posts with the same body plus confirm: true → posts[], each queued.
  5. GET /posts/{id} until live (with externalUrl) or failed (with error).

when is "now", "draft", or {"publishAt": "2026-09-29T18:00", "timezone": "Europe/Kiev"} - a local time and the IANA zone it is written in - at least 2 minutes ahead and at most a year out.