# CaptureFlow API > Connect AI assistants and your own tools to CaptureFlow: the REST API and the MCP server. - [CaptureFlow API & MCP](https://capture-flow.mintlify.app/index.md): Let AI assistants and your own tools read your CaptureFlow content and create drafts. Nothing is ever published without your approval. - [Quickstart](https://capture-flow.mintlify.app/quickstart.md): Create an API key, check who it acts for, and create your first draft post. - [Authentication](https://capture-flow.mintlify.app/guides/authentication.md): API keys for scripts, OAuth 2.1 for apps your users connect. Both act for a CaptureFlow user. - [Permissions (scopes)](https://capture-flow.mintlify.app/guides/scopes.md): What a key or connected app may do. - [Workspaces](https://capture-flow.mintlify.app/guides/workspaces.md): Which workspace a call works in, and who may do what there. - [Approvals](https://capture-flow.mintlify.app/guides/approvals.md): The API never publishes. Scheduling or posting is a proposal you accept in CaptureFlow. - [File uploads](https://capture-flow.mintlify.app/guides/uploads.md): Upload a video, a voice note, a PDF or an image as an input, in three calls. - [Content agent](https://capture-flow.mintlify.app/guides/content-agent.md): Let CaptureFlow's content agent write draft posts from an idea, an input or text. - [Conventions](https://capture-flow.mintlify.app/guides/conventions.md): Base URL, lists, safe retries, request ids and text you shouldn't trust. - [Rate limits](https://capture-flow.mintlify.app/guides/rate-limits.md): How many calls per minute, and how to back off. - [Errors](https://capture-flow.mintlify.app/api/errors.md): Every error code, what it means and what to do. - [OAuth for app builders](https://capture-flow.mintlify.app/guides/oauth.md): Let CaptureFlow users connect your app with OAuth 2.1. - [Changelog](https://capture-flow.mintlify.app/changelog.md): Changes to the CaptureFlow API and MCP server. - [MCP server](https://capture-flow.mintlify.app/mcp/overview.md): Connect Claude, ChatGPT and other AI assistants to CaptureFlow. - [Claude](https://capture-flow.mintlify.app/mcp/claude.md): Connect CaptureFlow to Claude (claude.ai, Claude Desktop and mobile). - [ChatGPT](https://capture-flow.mintlify.app/mcp/chatgpt.md): Connect CaptureFlow to ChatGPT. - [Claude Code](https://capture-flow.mintlify.app/mcp/claude-code.md): Connect CaptureFlow to Claude Code. - [Cursor](https://capture-flow.mintlify.app/mcp/cursor.md): Connect CaptureFlow to Cursor. - [VS Code](https://capture-flow.mintlify.app/mcp/vscode.md): Connect CaptureFlow to GitHub Copilot in VS Code. - [Other apps](https://capture-flow.mintlify.app/mcp/other-apps.md): Codex, Grok, Le Chat and any MCP client. - [Is the API up](https://capture-flow.mintlify.app/api-reference/meta/is-the-api-up.md): No key needed. - [Who this key or app acts for](https://capture-flow.mintlify.app/api-reference/account/who-this-key-or-app-acts-for.md): The user the key or connected app acts for, and what it may do. Works on every plan. - [Workspaces this key can act in](https://capture-flow.mintlify.app/api-reference/account/workspaces-this-key-can-act-in.md): Pass a workspace `id` as `workspace_id` on other calls. Works on every plan; `paid` tells whether the rest of the API is available there. - [List ideas](https://capture-flow.mintlify.app/api-reference/ideas/list-ideas.md): Your ideas (not archived): scheduled ones first by date, then the most recently changed. - [Create an idea](https://capture-flow.mintlify.app/api-reference/ideas/create-an-idea.md): A new idea under your content strategy (needs one). Questions are what the user will be asked when recording it. - [Get an idea](https://capture-flow.mintlify.app/api-reference/ideas/get-an-idea.md) - [List inputs](https://capture-flow.mintlify.app/api-reference/inputs/list-inputs.md): Your inputs (recordings, uploads, text, links), newest first. - [Get an input](https://capture-flow.mintlify.app/api-reference/inputs/get-an-input.md): With its summary and transcript (cut at 4 KB; `full=true` for up to 50 KB). - [Add text as an input](https://capture-flow.mintlify.app/api-reference/inputs/add-text-as-an-input.md): Notes, a transcript or a draft the content agent can turn into posts. A missing title is written by AI. With `idea_id`, the idea is marked done. - [Add a web page as an input](https://capture-flow.mintlify.app/api-reference/inputs/add-a-web-page-as-an-input.md): The page is read (public pages only) and saved as an input. With `idea_id`, the idea is marked done. - [Start a file upload](https://capture-flow.mintlify.app/api-reference/inputs/start-a-file-upload.md): Step 1 of uploading a video, audio file, PDF or image as an input. Returns `upload`: PUT the file to `upload.url` with exactly `upload.headers` (and no Authorization header), e.g. `curl -X PUT -H "Content-Type: " --upload-file ./file ""`, then call complete_input_upload (PO… - [Get a file upload](https://capture-flow.mintlify.app/api-reference/inputs/get-a-file-upload.md): Where an upload stands: pending (with `uploaded` telling whether the file arrived), completed (with the input), failed or expired. Never returns an upload URL (refresh_input_upload_url does). - [Get a new upload URL](https://capture-flow.mintlify.app/api-reference/inputs/get-a-new-upload-url.md): A new URL for a pending upload (the previous one expired, or a retried create came back without one). When the file has already arrived, answers `uploaded: true` and no URL: call complete_input_upload. - [Complete a file upload](https://capture-flow.mintlify.app/api-reference/inputs/complete-a-file-upload.md): Step 3: checks the uploaded file (size, type, contents) and creates the input. Safe to repeat: a completed upload answers with the same input. Audio and video keep processing for minutes afterwards: follow `input.id` with get_input. - [List posts](https://capture-flow.mintlify.app/api-reference/posts/list-posts.md): Your posts of every format, the most recently changed first. Archived posts only when `status` is `archived`. - [Create a draft post](https://capture-flow.mintlify.app/api-reference/posts/create-a-draft-post.md): A text draft (LinkedIn text in `content`, other platforms in `platform_variations`). It stays a draft until it is proposed and accepted. - [Get a post](https://capture-flow.mintlify.app/api-reference/posts/get-a-post.md): With its text per platform and every publish target (proposed, scheduled, published, failed). - [Edit a draft post](https://capture-flow.mintlify.app/api-reference/posts/edit-a-draft-post.md): Only a draft or a failed post. Platform texts are merged per platform. The status is never changed here. - [Check a post before proposing it](https://capture-flow.mintlify.app/api-reference/posts/check-a-post-before-proposing-it.md): Whether each account could take this post as it is (connected, enabled, text within the platform's rules). Changes nothing. Media is checked again when the post is accepted. - [Propose a post for approval](https://capture-flow.mintlify.app/api-reference/posts/propose-a-post-for-approval.md): Proposes the post to the given accounts at `when` (ISO 8601 with a time zone, at least 5 minutes ahead) or "now". It goes out only after the user accepts it in CaptureFlow at `approval_url`: the API never publishes on its own. A post already waiting for acceptance must be withdrawn (DELETE /posts/{i… - [Withdraw a proposal](https://capture-flow.mintlify.app/api-reference/posts/withdraw-a-proposal.md): The post goes back to a draft and its proposed targets are cancelled. Only while it waits for approval. - [List connected social accounts](https://capture-flow.mintlify.app/api-reference/social-accounts/list-connected-social-accounts.md): The accounts posts can be proposed to. Never tokens or account settings. - [Get the content strategy](https://capture-flow.mintlify.app/api-reference/strategy/get-the-content-strategy.md): The strategy that applies to you: your own, or the workspace strategy when you inherit it. `found` is false when there is none yet. - [Start the content agent](https://capture-flow.mintlify.app/api-reference/content-agent/start-the-content-agent.md): Drafts posts in the background from one of your ideas, inputs, or new text (saved as an input). Check the run (get_agent_run, GET /agent/runs/{id}) until it is `completed`; the user reviews the drafts in CaptureFlow at `app_url`. Nothing is posted. One run at a time; a daily limit applies. - [Get a content agent run](https://capture-flow.mintlify.app/api-reference/content-agent/get-a-content-agent-run.md): Its status and the drafts written so far. A run usually completes within a few minutes (an audio or video input waits for its transcript first). ## OpenAPI Specs - [openapi](/openapi.json) This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.