mcp · rest · llms.txt
Let your AI agent run the channel.
SimilarClip speaks MCP and REST. Any agent with your API key can generate narrated, illustrated videos, buy plans and credit (you approve every payment), and publish to your YouTube channels.
- 01
Create a key
Sign up, pick a plan, and create an API key in Settings → API. One key works for both MCP and REST.
- 02
Connect your agent
Add the MCP server to Claude, Cursor or any MCP client, or call the REST API from your own code.
- 03
Let it ship
Your agent picks a style and voice, generates the video, buys credit with your approval, and publishes to YouTube.
Connect
The MCP server lives at https://similarclip.com/mcp (Streamable HTTP, stateless). The REST API lives under https://similarclip.com/api/v1. Both take Authorization: Bearer sc_live_….
claude mcp add --transport http similarclip https://similarclip.com/mcp --header "Authorization: Bearer sc_live_YOUR_KEY"{
"mcpServers": {
"similarclip": {
"type": "http",
"url": "https://similarclip.com/mcp",
"headers": {
"Authorization": "Bearer sc_live_YOUR_KEY"
}
}
}
}{
"mcpServers": {
"similarclip": {
"command": "npx",
"args": [
"-y",
"mcp-remote",
"https://similarclip.com/mcp",
"--header",
"Authorization: Bearer sc_live_YOUR_KEY"
]
}
}
}curl -X POST https://similarclip.com/api/v1/videos \
-H "Authorization: Bearer sc_live_YOUR_KEY" \
-H "Content-Type: application/json" \
-d '{"topic": "why octopuses have three hearts", "duration_min": 5, "publish": {"visibility": "unlisted"}}'Tools
Every capability exists both as an MCP tool and as a REST endpoint, with the same parameters.
- get_accountGET /api/v1/me
- Who the API key belongs to, plan/subscription status, AI credit balance, connected YouTube channels and saved defaults (style, voice, description footer). Call this first to see what the account can do.
- get_optionsGET /api/v1/options
- Every valid value for create_video and create_schedule: visual style presets (with their art direction), TTS providers and voices, narration vibes, speeds, duration limits and visibilities. Also returns this account's saved defaults.
- get_billingGET /api/v1/billing
- Credit balance (plan credit + credit packs), the current plan, the purchasable plans (monthly and annual), credit packs and the estimated cost per minute of video. Use it to work out whether a video is affordable before creating it.
- create_checkoutPOST /api/v1/billing/checkout
- Start a purchase for the account: a subscription plan (monthly or annual) or a one-time credit pack (needs an active plan). Returns a checkout_url that a HUMAN must open to pay (agents never handle card details). Share the link with your user, wait for them to confirm, then check get_billing.
- estimate_video_costGET /api/v1/videos/estimate
- Estimated USD cost of a video of the given length, compared with the current balance. Calibrated from this account's own recent videos when it has at least 3 (else the platform rate), and scaled by seconds_per_image and image_check, since images are most of the cost. Real billing is metered at exact AI cost; get_video.cost_breakdown shows where a finished video's money went.
- create_videoPOST /api/v1/videos
- Generate a narrated, fully illustrated video. Give EITHER `topic` (SimilarClip researches it, picks an angle and writes an original script) OR `youtube_url` (it reimagines that clip with a fresh script, new visuals and a new voice; the source needs captions). Generation is asynchronous and takes several minutes: poll get_video until status is "completed" or "failed". Set `publish` to upload to YouTube automatically when done.
- list_videosGET /api/v1/videos
- The account's videos, newest first. Filter by status to find running or finished ones.
- get_videoGET /api/v1/videos/{id}
- Full status of one video: progress, current pipeline step, errors (and whether they are resumable), the downloadable MP4 and thumbnail URLs once completed, generated YouTube SEO metadata, the latest YouTube publication, the resolved creative settings, and `render`: what the last render actually contained (motion, transition, caption style, pop-up word count, music, sound-effect count). Check `render` when a setting seems to have no effect.
- start_videoPOST /api/v1/videos/{id}/start
- Start generating a draft video (one created with start=false, or refused earlier for billing).
- resume_videoPOST /api/v1/videos/{id}/resume
- Resume a paused video, or retry a failed one from the step it stopped at (when error.resumable is true).
- pause_videoPOST /api/v1/videos/{id}/pause
- Pause a queued or processing video at the next step boundary. Resume later with resume_video.
- stop_videoPOST /api/v1/videos/{id}/stop
- Stop a running or paused video for good (it cannot be resumed afterwards).
- delete_videoDELETE /api/v1/videos/{id}
- Permanently delete a video and its files. Running videos must be stopped first. Already-published YouTube uploads are not touched.
- publish_videoPOST /api/v1/videos/{id}/publish
- Upload a completed video to one of the account's connected YouTube channels, with the generated thumbnail. Title/description/tags default to the AI-generated SEO metadata. The upload runs in the background: poll get_video and read `publication` for the YouTube URL.
- get_scriptGET /api/v1/videos/{id}/script
- The video's script, line by line (one line per scene), with word count and estimated narration length. Use it on a script_ready video before approve_script, or on any video to read what is narrated.
- update_scriptPOST /api/v1/videos/{id}/script
- Replace the script of a script_ready video. Send every line in order: lines with a scene_id keep that scene (its text replaced), lines without one are new scenes, and scenes you leave out are deleted. To change lines of an already rendered video use edit_scene_line instead.
- approve_scriptPOST /api/v1/videos/{id}/script/approve
- Render a script_ready video: narration, images, captions, music and the final video. This is where most of the cost is spent, so it passes the same credit check as start_video.
- list_scenesGET /api/v1/videos/{id}/scenes
- Every scene of a video in order: its narration line, timing, and each image (slide) shown during it, with the image URL, the exact words it illustrates, the storyboarded visual it was drawn from, and the image check result (passed, redraws, issues). Also returns the key subjects every image was told to draw accurately. Use the ids with edit_scene_line, regenerate_scene_image and regenerate_slide_image.
- edit_scene_linePOST /api/v1/videos/{id}/scenes/{scene_id}
- Change one scene's narration on a completed or failed video. Only that line is re-voiced and only its images are redrawn; every other scene, the SEO and the thumbnail are kept, and the video is re-rendered.
- regenerate_scene_imagePOST /api/v1/videos/{id}/scenes/{scene_id}/regenerate-images
- Redraw every image of one scene (text and voice untouched), then re-render the video.
- regenerate_slide_imagePOST /api/v1/videos/{id}/slides/{slide_id}/regenerate
- Redraw a single image (slide) — e.g. one with a mangled hand or a poor match — then re-render the video. Everything else is kept.
- regenerate_voicePOST /api/v1/videos/{id}/regenerate-voice
- Re-narrate a completed or failed video, optionally with a different voice, vibe or speed. Images, SEO and thumbnail are kept; image timing follows the new narration.
- update_video_settingsPOST /api/v1/videos/{id}/settings
- Change a video's creative settings. On a completed or failed video, caption, pop-word, motion, transition, music and sound-effect changes re-render it from the existing images and voice (cheap, no new AI generation). seconds_per_image, hook_style and image_check only affect steps that haven't run yet.
- set_video_metadataPOST /api/v1/videos/{id}/metadata
- Set your own YouTube title, description, tags and/or thumbnail headline (pick from get_video.seo_options or write your own). Applies now on a finished video and survives any later re-render. Changing thumbnail_headline also redraws the thumbnail.
- regenerate_thumbnailPOST /api/v1/videos/{id}/thumbnail/regenerate
- Redraw a completed video's thumbnail, optionally with a new headline (e.g. one of get_video.seo_options.thumbnail_headlines). Call it again for another variant.
- get_video_statsGET /api/v1/youtube/stats
- Live YouTube views, likes and comments for the account's published videos, next to the settings each was made with (topic, style, voice, vibe, creative settings, length), so you can learn what works. Pass video ids, or omit them for the 50 most recent.
- list_youtube_channelsGET /api/v1/youtube/channels
- The YouTube channels connected to the account for publishing. Connecting a channel needs a human (Google OAuth): if none are connected, give your user the connect_url.
- list_schedulesGET /api/v1/schedules
- Autopilot schedules: each turns a queue of topics into videos on a cadence (daily, every 2 days, weekly) and can auto-publish them to YouTube.
- get_scheduleGET /api/v1/schedules/{id}
- One schedule with its topic queue (pending, generating, completed, failed topics and their video ids).
- create_schedulePOST /api/v1/schedules
- Put a channel on autopilot: SimilarClip produces one video per run from the topic queue (queue topics via `topics`, add_schedule_topics or generate_schedule_topics; a run with an empty queue is skipped) and optionally auto-publishes each to YouTube.
- add_schedule_topicsPOST /api/v1/schedules/{id}/topics
- Append topics to a schedule's queue (duplicates are skipped). One topic is consumed per run.
- generate_schedule_topicsPOST /api/v1/schedules/{id}/topics/generate
- Have the AI brainstorm fresh, non-duplicate topics from the schedule's niche and append them to its queue.
- update_schedulePOST /api/v1/schedules/{id}
- Change any of a schedule's settings. Only the fields you send change. Changing frequency, time_of_day or timezone re-plans the next run.
- delete_scheduleDELETE /api/v1/schedules/{id}
- Delete a schedule and its topic queue. Videos it already made are kept.
- delete_schedule_topicDELETE /api/v1/schedules/{id}/topics/{topic_id}
- Remove a pending topic from a schedule's queue (topics already turned into videos stay in the history).
- set_schedule_enabledPOST /api/v1/schedules/{id}/enabled
- Turn a schedule on or off.
- run_schedule_nowPOST /api/v1/schedules/{id}/run
- Produce the schedule's next video immediately instead of waiting for its next slot.
- update_account_settingsPOST /api/v1/me/settings
- Account-wide defaults that create_video and create_schedule use when a field is omitted: style, custom_style_prompt and voice (provider, voice, vibe, instructions, speed), plus description_footer, appended to every YouTube description this account publishes (links, socials, a call to action). Omitted fields are left as they are; "" clears custom_style_prompt, voice.instructions or description_footer. Returns the saved settings.
- list_webhooksGET /api/v1/webhooks
- The account's webhook endpoints, the events each receives, and how the last delivery went.
- create_webhookPOST /api/v1/webhooks
- Have SimilarClip POST to your HTTPS endpoint when a video's script is ready, it completes or fails, or a publish succeeds or fails, instead of polling. The response includes the signing secret ONCE: verify X-SimilarClip-Signature (t=<unix>,v1=<hex HMAC-SHA256 of "<t>.<raw body>">) with it. Failed deliveries retry with backoff for about 15 minutes.
- delete_webhookDELETE /api/v1/webhooks/{id}
- Stop sending events to an endpoint.
For machines
- /llms.txt
- Short index for LLMs (llmstxt.org format).
- /llms-full.txt
- The full agent manual: workflows, every tool, errors, limits.
- /openapi.json
- OpenAPI 3.1 spec of the REST API.
- /.well-known/mcp.json
- MCP discovery card: endpoint, auth and tools.
Payments always need a human: purchase tools return a Stripe checkout link for you to approve. Connecting a YouTube channel also needs you, through Google sign-in.