# FAQs

## Can I post from Claude Code, Cursor, or Antigravity using prompts? Will Blotato create images and videos for me?

Yes. Setup is at [Settings > API](https://my.blotato.com/settings/api).

Step-by-step tutorial for Claude Cowork & Desktop: <https://youtu.be/1dSNfnFL40c>

Step-by-step tutorial for Claude Code: <https://youtu.be/3HVH2Iuplqo>

Once connected, you can ask Claude/Cursor/Antigravity to write your post, generate images or videos, and publish to your social accounts in a single prompt. Blotato handles content extraction, AI visuals, scheduling, and publishing.

***

## Do I need to install anything?

No. The Blotato MCP Server runs remotely. Connect via OAuth or add the server URL and API key to your AI tool's configuration and you're ready to go.

***

## Which AI tools are supported?

The MCP Server works with any MCP-compatible AI host, including:

* Claude.ai Web
* Claude Desktop
* Claude Cowork
* Claude Code
* Cursor
* Antigravity
* Replit Agent

Any tool supporting the MCP protocol with remote HTTP servers works with Blotato. Claude.ai, Claude Desktop, and Claude Cowork connect via OAuth. All other tools use your API key.

Generate your API key: [Settings > API](https://my.blotato.com/settings/api)

Step-by-step tutorials:

* Claude Cowork and Desktop: <https://youtu.be/1dSNfnFL40c>
* Claude Code: <https://youtu.be/3HVH2Iuplqo>

***

## Do I need a paid Blotato subscription?

Yes. API access (including MCP) requires a paid subscription. This keeps the platform in good standing with social media platforms by reducing spam.

***

## Blotato shows as Connected in Claude Settings but Claude.ai returns an OAuth error

This means your account is not on a paid plan. Blotato API and MCP require a paid subscription.

To fix it:

1. Go to [Settings > API](https://my.blotato.com/settings/api)
2. Click **Generate API Key**

Once your subscription is active, the OAuth connection works without any other changes.

***

## Is this different from the REST API?

The MCP Server wraps the same Blotato API into 14 AI-friendly tools. Your AI host calls these tools automatically based on your prompts. You get the same functionality as the REST API without writing code.

***

## How does authentication work?

Two methods depending on your AI tool:

* **OAuth (Claude.ai, Claude Desktop, Claude Cowork):** Add Blotato as a custom connector in Settings > Connectors. You approve access through your Blotato account in the browser. No API key needed.
* **API key (Claude Code, Cursor, Antigravity, Replit Agent, etc.):** Use the `blotato-api-key` header. Get your key from [Settings > API](https://my.blotato.com/settings/api).

***

## Do I need to know which tools to call?

No. Your AI tool reads the tool descriptions and picks the right ones based on your prompt. Say what you want in natural language and the AI figures out the right sequence of calls.

***

## What happens if a tool call fails?

The AI tool receives an error message and decides how to proceed. Common errors include:

* Invalid API key - check your config
* Rate limit exceeded - wait and retry
* Account not found - connect your account in [Settings](https://my.blotato.com/settings)

***

## Can I see my published or failed posts via MCP?

Yes. Use `blotato_list_posts` to retrieve published, failed, and scheduled posts. For example:

* "What did I publish on Instagram last week?" → `blotato_list_posts` with `status=published` and `platform=instagram`
* "Which posts failed this month?" → `blotato_list_posts` with `status=failed`
* "Show me everything I posted recently" → `blotato_list_posts` with no filters

Each result includes the post text, platform, media URLs, post time, and — for published posts — the live URL. Failed posts include an error message explaining why they failed.

Note: `blotato_list_schedules` only returns **future scheduled posts**. To see published or failed post history, use `blotato_list_posts`.

***

## How do I create and publish visuals (videos, carousels, images)?

Tell your AI tool what you want to create. For example: "Make a carousel about productivity tips and post it to Instagram." The AI tool:

1. Picks a template from your available templates
2. Generates the visual using your prompt
3. Waits for the visual to finish rendering
4. Posts it to the platform you specified

***

## Where do I get my account IDs?

You do not need account IDs when using the MCP Server. The AI tool calls `blotato_list_accounts` to find the right account based on your prompt. For example, if you say "post to my Twitter," the tool looks up your Twitter account automatically.

***

## How do I post to a specific Facebook or LinkedIn page?

Tell your AI tool which page you want to post to by name. For example:

* "Post this to my Business Page on Facebook"
* "Schedule this to my company's LinkedIn page"

The AI tool calls `blotato_list_accounts` behind the scenes, finds all your connected pages, and picks the one matching your description. You do not need to look up or pass any page IDs.

If you have multiple pages with similar names, be specific: "Post to my Facebook page called Sunrise Bakery."

***

## How do I upload a local file (image or video) from my computer?

Use the `blotato_create_presigned_upload_url` tool. Tell your AI tool something like "upload this image from my desktop and post it to Instagram" and it handles the rest.

**Copy-paste prompt for Claude:** `use blotato presigned media url endpoint to upload my local files`

Behind the scenes:

1. The AI calls `blotato_create_presigned_upload_url` with the filename (e.g., "photo.jpg")
2. Blotato returns a presigned upload URL and a public URL
3. The AI uploads the file to the presigned URL
4. The AI uses the public URL in `blotato_create_post`

No Google Drive, S3, or other intermediate storage required. Upload size depends on your plan (see [Plan Limits](/settings/billing-and-credits.md#plan-limits)).

## Presigned upload PUT fails / "Sandbox error" / network egress blocked in Claude Cowork or Claude Desktop

If you set up Blotato MCP in Claude Cowork or Claude Desktop and scheduling, publishing, or uploading a file fails with a sandbox, network, proxy, or egress error, you need to allow Blotato's storage domain in Cowork's network settings.

Common symptoms (literal error strings and plain-English descriptions):

* "Sandbox error" when scheduling or publishing a video from Claude Cowork
* "Access to this website is blocked by your network egress settings. You can adjust this in Settings."
* "The upload is blocked by a network proxy in this sandbox environment -- external PUT requests to storage endpoints aren't allowed from here."
* "Stream closed" error during the presigned upload step
* The sandbox proxy is blocking all outbound HTTPS calls
* The sandbox cannot execute the PUT step / binary file uploads via PUT are blocked
* The host SOCKS proxy, SOCKS5 tunnel, or alternate HTTP port is refused or blocked
* Raw external HTTPS connections from the sandbox shell (curl, Python) are blocked
* `blotato_create_presigned_upload_url` returns a URL but the PUT upload to that URL fails
* Video upload silently fails before the post is created
* Scheduling or publishing fails right after MCP setup with a network/sandbox message

Fix:

1. Go to Claude Cowork/Desktop > Settings > Capabilities > Allow network egress
2. Under Additional allowed domains, add `database.blotato.io`
3. Click the "Add" button
4. Restart Claude Cowork/Desktop

## Using Claude Code (not Claude Cowork/Desktop)?

Claude Code's sandbox egress is not user-configurable, so the steps above do not apply. Instead, skip the local file upload entirely:

1. Host your image or video at a public URL first (any public web URL works, e.g., Dropbox direct link, Google Drive with public share, S3 public bucket, your own web server)
2. Pass the hosted URL directly into the `mediaUrls` parameter of `blotato_create_post`

This avoids the presigned PUT step, which is the step Claude Code cannot perform.

## How do I edit a scheduled post via MCP (caption, media, or time)?

Call **only** `blotato_update_schedule`. It updates an existing schedule in place — it never creates a new post.

To change the caption or media: pass the **whole `post` object**, not just the field you're editing. The tool requires `accountId`, `platform`, `text`, plus the platform-specific fields (e.g., `pageId` for Facebook). If you pass a partial `post` (e.g., only `text`), the draft change is silently dropped and only `scheduledTime` is applied.

Recommended flow:

1. `blotato_list_schedules` — find the schedule ID
2. `blotato_get_schedule` — fetch the current full post object
3. `blotato_update_schedule` — pass the schedule ID, the full post object with your edit applied, and `scheduledTime` if changing the time

To change only the time: pass `id` + `scheduledTime`. No `post` needed.

If you ever see two posts published for what should have been an edit, your AI tool likely also called `blotato_create_post`. Tell it explicitly: "use only `blotato_update_schedule`, do not create a new post."

***

**Didn't find your answer?**

* [General FAQs](/support/faqs.md)
* [API FAQs](https://github.com/Blotato-Inc/help.blotato.com/blob/main/api/faqs.md)
* [n8n FAQs](/api/n8n/faqs.md)
* [Make.com FAQs](/api/make.com/faqs.md)


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://help.blotato.com/api/mcp/faqs.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
