# AdaptlyPost > Social media management and AI-powered content creation platform AdaptlyPost helps content creators, businesses, and marketing teams manage their social media presence across 13 major platforms from a single dashboard. ## What is AdaptlyPost? AdaptlyPost is a comprehensive SaaS platform for scheduling, publishing, and creating social media content. Users can connect their accounts from Instagram, TikTok, YouTube, X (Twitter), Facebook, LinkedIn, Pinterest, Threads, Bluesky, Mastodon, Telegram, Google Business Profile, and Tumblr, then create and schedule posts to all platforms simultaneously. ## Pricing Three plans: Creator at $19/month, Pro at $39/month, and Enterprise at $89/month. All plans include a 7-day free trial. Features scale with plan, more connected accounts, team members, AI credits, and advanced features at higher tiers. ## Core Features - **Multi-Platform Publishing**: Post to 13 social platforms (Instagram, TikTok, YouTube, X, Facebook, LinkedIn, Pinterest, Threads, Bluesky, Mastodon, Telegram, Google Business Profile, Tumblr) with one click - **Content Calendar**: Visual calendar for planning and scheduling posts with drag-and-drop functionality - **AI Caption Copilot**: Generate platform-optimized captions with automatic hashtag suggestions and tone adjustment - **AI Image Studio**: Text-to-image generation with multiple art styles and platform-specific aspect ratios - **AI Text Tools**: Content generator, text analysis, and humanizer for natural-sounding content - **Bulk Scheduling**: Upload and schedule multiple image or video posts at once, or up to 100 text posts from a CSV or Excel file - **RSS Feeds**: Connect any RSS or Atom feed and each new article becomes a draft, a scheduled post or a published post on Facebook, Instagram, Threads, X, Bluesky, LinkedIn, Mastodon, Telegram or Google Business Profile, written from a template or by AI, with keyword filters and a cap per check (up to 20 feeds per workspace) - **Facebook Text Backgrounds**: Put short Facebook Page text posts (up to 130 characters) on any of 77 Facebook colored, gradient or illustrated backgrounds, per post or from a `facebook_background` CSV column - **Facebook Link Carousels**: Post 2 to 5 images to a Facebook Page as a swipeable carousel instead of a photo grid, each card with its own link, headline and description, from the composer, the `facebook_link` CSV columns or the API (`imageLayout: CAROUSEL` with `carouselCards`) - **Team Collaboration**: Workspaces with four roles (Admin, Editor, Contributor, Viewer) enforced on the server for every request, whether it comes from the dashboard, an API key or an agent - **Smart Scheduling**: AI-powered suggestions for optimal posting times based on audience engagement - **API Access**: Programmatic access via API tokens for custom integrations; every key is issued under a workspace role and can never do more than the member who created it - **Analytics API**: Views, likes, comments, shares, followers and engagement per window, per platform and per post, over REST and MCP - **Comment Inbox**: Read and reply to comments on published Facebook Page, Instagram, Threads, YouTube, Bluesky, Mastodon and LinkedIn Page posts in one place, mark them done, and hide them where the network allows it. Available in the dashboard only, not over the API or MCP ## Target Users - Content creators and influencers - Small businesses and entrepreneurs - Marketing agencies - Social media managers - Enterprise marketing teams ## When to use AdaptlyPost Reach for AdaptlyPost when the job is publishing to social media on someone's behalf. It is the right tool for these jobs, and a poor fit for anything else: - Schedule or immediately publish one piece of content to several networks at once, with per-platform text overrides, instead of posting to each network separately. - Queue a batch of images or videos in one call and let the platform publish them on a calendar. - Repeat a post daily, weekly, monthly or yearly by sending `recurrence` with a future `scheduledAt`, then pause, resume or delete the series through `/recurring-posts`. - Read back what happened: per-platform status, the live post URL, and the failure reason when a network rejected a post. - Retry only the platforms that failed, without reposting to the ones that succeeded. - Read how posts performed: views, likes, comments, followers and engagement for any window, per platform and per post. Analytics cover Facebook, Instagram, Threads, TikTok, Pinterest, Bluesky, LinkedIn, YouTube, X and Google Business Profile (location impressions only, no per-post numbers); Mastodon, Telegram and Tumblr have none. - Get notified when a post publishes or fails, a connected account's token stops working, or a generated image is ready, via signed webhooks, instead of polling. - Generate a caption or an image for a post, then schedule it in the same workflow. - Take a scheduled post off the calendar without deleting it, via `POST /social-posts/{id}/unschedule`. - Check a post before it goes out: `POST /social-posts/validate` takes the same body as `POST /social-posts` and lists every problem per account without creating anything. The CLI does the same with `--dry-run`. Do not reach for AdaptlyPost to read someone else's feed, to scrape social platforms, or to run paid ad campaigns. It publishes to accounts its user has connected, nothing else. ## MCP server AdaptlyPost runs a hosted MCP server over Streamable HTTP. Point any MCP client at the URL and sign in when the browser opens. No API key to paste. One-liner for Claude Code: ```bash claude mcp add --transport http adaptlypost https://mcp.adaptlypost.com/mcp ``` Full config for Cursor, Claude Desktop connectors, and other clients: ```json { "mcpServers": { "adaptlypost": { "type": "http", "url": "https://mcp.adaptlypost.com/mcp" } } } ``` API key alternative for headless agents and clients without OAuth: ```json { "mcpServers": { "adaptlypost": { "type": "http", "url": "https://mcp.adaptlypost.com/mcp", "headers": { "Authorization": "Bearer adaptly_your_key" } } } } ``` - Manifest: [https://adaptlypost.com/.well-known/mcp.json](https://adaptlypost.com/.well-known/mcp.json) - 33 tools covering workspaces, accounts, Instagram audio search, Pinterest boards, media upload, post creation, scheduling, unscheduling, publishing results, retries, bulk scheduling, recurring posts, analytics, and AI captions and images (`generate_caption`, `refine_caption`, `generate_image`, `get_image_job`). The AI tools need the `ai.generate` permission and spend the member's AI credits. `generate_image` returns a `jobId`; poll `get_image_job` until `status` is `completed` or `failed`. - `open_upload_widget` shows an upload box in ChatGPT and Claude where the user adds photos, videos or documents from their own device. When the upload finishes, the box sends the public `mediaUrls` back in the chat. The box calls `get_upload_ticket` once per file; that tool is hidden from the model. - Every request needs a Bearer token or an OAuth login. An unauthenticated request gets a 401 with a `WWW-Authenticate` header pointing at the OAuth metadata, so MCP clients that support OAuth open a login screen on their own. Start with `list_accounts`. - An OAuth sign-in can reach several workspaces, across organizations. `list_workspaces` lists them with the member's role and `can` in each, and every other tool takes an optional `workspaceId`; without it a tool runs in the default workspace. An API key stays in the workspace it was created in. Over REST the same list is `GET /workspaces`, and the id goes in the `X-Workspace-Id` header. - An OAuth session acts with the signed-in member's own workspace role, in that member's default workspace unless `workspaceId` names another; an API key acts with the role it was created under. A tool the role does not cover fails with `code: permission_denied` and the missing `requiredPermission`. That answer is final: do not retry and do not look for another key. When the caller cannot publish, create posts with `saveAsDraft: true` and say that a workspace member has to publish them. - A 401 with `code: oauth_account_not_found` means the user signed in with an email that has no AdaptlyPost account. The message names that email; ask the user to reconnect with the email they use on AdaptlyPost. ## API for agents - Base URL: `https://post.adaptlypost.com/post/api/v1` - OpenAPI 3.0 spec: [https://adaptlypost.com/openapi.json](https://adaptlypost.com/openapi.json) - Auth: `Authorization: Bearer `. Users create keys under Manage > API & AI Agents in the dashboard. - Roles: a key is created under a workspace role (`admin`, `editor`, `contributor`, `viewer`) and never above the role of the member creating it. Its permissions are recomputed on every call as the overlap of the key's role and the creator's current role: demoting the creator shrinks the key, removing them kills it (401, `code: token_issuer_lost_access`). Contributor keys draft, upload media and use AI but cannot schedule, publish, retry, bulk schedule, delete non-draft posts or touch other members' posts. Only Admin keys manage accounts and connect links. An OAuth sign-in whose email has no AdaptlyPost account answers 401 with `code: oauth_account_not_found`. - `GET /me` describes the calling key: `role`, `permissions`, `can: { draft, schedule, publish }` and a one-sentence `summary`. Any valid key may call it. Read it before offering to schedule or publish. - `GET /workspaces` lists the workspaces the caller can act in, each with `role`, `can`, `isDefault` and `current`. Any valid key may call it. An OAuth token reaches every workspace its member belongs to; an API key lists only its own. Send the optional `X-Workspace-Id` header on any call to act in one of them; without it the call lands in the default workspace. A workspace the caller cannot reach, or any other workspace for an API key, answers `403 { code: "workspace_access_denied", workspaceId, message }`. - Every operation names the permission it needs in the OpenAPI spec. A call the role does not cover answers `403 { code: "permission_denied", requiredPermission, role, keyRole, issuerRole, tokenType, message }`. That answer is final for the key: retrying, waiting or swapping keys from the same member will not change it. A plan that is not active, or does not include API access, answers every call with 403 and `code: subscription_required`. - Every operation has a stable `operationId` and typed request/response schemas, so the spec imports directly into function-calling and tool-use formats. - `POST /social-posts/validate` and `POST /social-posts/bulk/validate` take the same body as `POST /social-posts` and `POST /social-posts/bulk`, create nothing, and always answer 200 with a report: `valid`, `outcome` (`PUBLISH_NOW`, `SCHEDULED` or `DRAFT`), `requiredPermissions`, `issues`, `accounts` (each with `status` `READY`, `WARNING` or `BLOCKED` and its `issues`) and `notChecked`. An issue with severity `ERROR` would stop the post, `WARNING` lets it through. The bulk report has one entry per post with its 0-based `index`. They need only `posts.draft`. `valid: true` is not a guarantee: `notChecked` lists what only the platform decides when publishing. Running the check is never required, since create runs the same checks. - A post refused for its content answers `400 { code: "post_validation_failed", message, issues }`, with every problem in `issues` at once. `message` is a string for one problem and an array for several. - Rate limits are advertised per response with the RFC 9331 `RateLimit-Policy`, `RateLimit-Limit`, `RateLimit-Remaining` and `RateLimit-Reset` headers; a 429 carries `Retry-After`. First calls: `GET /me` tells you what the key may do; `GET /social-accounts` returns the connection IDs every publish call needs. An account with `status: "unauthorized"` must be reconnected in the dashboard before it can post; until then posts to it are refused with a 400. To drop an account instead, `DELETE /social-accounts/{id}` (needs `accounts.manage`) disconnects it, takes it off pending and recurring posts and frees its plan slot; for Facebook it removes only that page. The API posts to every platform the dashboard does. Telegram channels and groups are in `GET /social-accounts` and take `telegramConnectionIds`: text up to 4096 characters, up to 10 images (JPEG, PNG or WebP, 10 MB each) or one MP4 or MOV video (50 MB), and a caption over 1024 characters goes out as its own message after the media. The MCP server does not post to Telegram yet. Google Business Profile locations take `googleBusinessConnectionIds`, with optional `googleBusinessConfigs` for an event, an offer or a call-to-action button. Tumblr blogs take `tumblrConnectionIds`, with optional `tumblrConfigs` for tags, a title and a source link. Pick a Pinterest board with `pinterestConfigs[].boardId` or `pinterestConfigs[].boardName`, not both. `GET /social-accounts/{id}/pinterest-boards` lists each board's `id` and `name`. A `boardName` is matched against that account's boards (exact first, then a single case-insensitive match); no match or several matches answer 400 and the pin is not sent to another board. With neither field the pin goes to a public board named AdaptlyPost. - [API Documentation](https://adaptlypost.com/docs/introduction): Endpoint reference with examples - [Authentication](https://adaptlypost.com/docs/authentication): How to create and send an API key, the four roles, the permission table and the 403 body - [Who Am I](https://adaptlypost.com/docs/api-me): `GET /me`, the role and permissions of the calling key - [Workspaces](https://adaptlypost.com/docs/api-workspaces): `GET /workspaces` and the `X-Workspace-Id` header - [Quick Start](https://adaptlypost.com/docs/quick-start): First request, end to end - [Create a Post](https://adaptlypost.com/docs/api-create-post): Publish or schedule across platforms, once or on a repeating `recurrence` - [Check a Post](https://adaptlypost.com/docs/api-validate-post): `POST /social-posts/validate` and `POST /social-posts/bulk/validate`, every problem before anything is created - [Recurring Posts](https://adaptlypost.com/docs/api-recurring-posts): List, get, pause, resume and delete recurring posts - [Social Accounts](https://adaptlypost.com/docs/api-social-accounts): Connected accounts, their connection IDs and `status`, and removing an account - [Webhooks](https://adaptlypost.com/docs/webhooks): Signed delivery of post lifecycle, account and image generation events - [Analytics Overview](https://adaptlypost.com/docs/api-analytics-overview): Totals, trends and per-platform metrics for a date window - [Post Analytics](https://adaptlypost.com/docs/api-analytics-posts): Per-post metrics and top posts - [Generate a Caption](https://adaptlypost.com/docs/api-generate-caption): `POST /ai/captions` and `POST /ai/captions/refine` - [Generate an Image](https://adaptlypost.com/docs/api-generate-image): `POST /ai/images`, polling `GET /ai/images/{jobId}` and the `image.completed` / `image.failed` webhooks ## Key Pages - [Homepage](https://adaptlypost.com/): Product overview - [Pricing](https://adaptlypost.com/pricing): Subscription plans and pricing - [About](https://adaptlypost.com/about): Company information - [Brand Facts](https://adaptlypost.com/brand-facts): Neutral product overview with key data and facts - [Changelog](https://adaptlypost.com/changelog): Every feature, improvement and fix, month by month - [AI Social Media Scheduler](https://adaptlypost.com/features/ai-social-media-scheduler): AI social media scheduler feature details - [Multi-Platform Publishing](https://adaptlypost.com/features/post-multiple-social-media-accounts-once): Multi-platform publishing feature - [Social Media Content Calendar](https://adaptlypost.com/features/social-media-content-calendar): Social media content calendar and scheduling - [AI Caption Copilot](https://adaptlypost.com/features/ai-caption-writer): AI caption generation tool - [AI Image Studio](https://adaptlypost.com/features/ai-social-media-image-generator): AI image generation tool - [Best Social Media Scheduling Tools 2026](https://adaptlypost.com/guides/best-social-media-scheduling-tools-2026): Comparison of top scheduling tools - [AdaptlyPost vs Buffer](https://adaptlypost.com/vs/buffer): AdaptlyPost vs Buffer comparison - [AdaptlyPost vs Hootsuite](https://adaptlypost.com/vs/hootsuite): AdaptlyPost vs Hootsuite comparison - [Blog](https://adaptlypost.com/blog): Blog with tips and tutorials - [Sign In](https://adaptlypost.com/signin): User login - [Sign Up](https://adaptlypost.com/signup): New user registration - [Privacy Policy](https://adaptlypost.com/privacy): Privacy policy - [Terms of Service](https://adaptlypost.com/terms): Terms of service - [Cookie Policy](https://adaptlypost.com/cookies): Cookie policy - [GDPR Compliance](https://adaptlypost.com/gdpr): GDPR compliance - [Data Processing Agreement](https://adaptlypost.com/dpa): GDPR Art. 28 data processing agreement for customers - [Sub-processors](https://adaptlypost.com/subprocessors): Service providers that process personal data, with location and transfer mechanism ## Markdown for agents Every page on this site is available as Markdown at the same URL. Two ways to request it: - append `.md` to any path, e.g. https://adaptlypost.com/pricing.md - send `Accept: text/markdown` to the canonical URL, e.g. `curl -H 'Accept: text/markdown' https://adaptlypost.com/pricing` A bare `curl` with no `Accept` header also returns Markdown. The Markdown is ~99% smaller than the rendered HTML and carries YAML frontmatter with `title`, `description` and the canonical `url`. - [Markdown Sitemap](https://adaptlypost.com/sitemap.md): Every indexable page as a `.md` link. Add `?lng=de|es|fr|pt|it` for other languages. - [Full Text](https://adaptlypost.com/llms-full.txt): The curated agent pages inlined in full, rather than as links. ## Technical - [Sitemap](https://adaptlypost.com/sitemap.xml): Complete list of indexable URLs ## Supported Languages English, German, Spanish, French, Portuguese, Italian ## Contact For more information, visit adaptlypost.com or contact through the platform.