OriginShorts API and MCP server: Faceless videos from your workflow or AI assistant

One HTTP request, or one sentence to your AI assistant, turns a topic into a finished 9:16 video. Here is how it fits n8n, Make, Zapier, your own code, Claude, ChatGPT and Cursor.

TLDR

OriginShorts is a faceless video generator that automates each step of generation. You feed it a script or idea and it handles the scenes, visuals, voice, music, captions, and outputs a final video ready for upload. If you want more creative control it also allows you to customize your scenes, styles, music, and more. With the API and MCP server you can also generate a finished video with HTTP request or by asking Claude, ChatGPT or other AI assistants. The API fits any tool that can call a URL, including n8n, Make, Zapier and your own backend. The MCP server lets an assistant make, edit and post videos to your social media without leaving the chat. A video is usually ready in a few minutes.

Just ask and get a finished video

Type “make an animated short about fireflies” into your AI assistant. OriginShorts writes the script, records the voice, draws and animates every scene, and a few minutes later the assistant hands you something like “Firefly Synchrony”, ready to watch. The Short in the film depicts a project made with an MCP connector from a one-line request, shortened on screen.

You can make videos like that with an HTTP request for the other tools you automate with, so it works in both ways. Asking an assistant and calling the API.

Faceless video automation shouldn’t take five services

One of the biggest most obvious things you learn from reading the posts of AI content creators on reddit, is the uncertainty and struggle of finding the best services for scripting, visuals, voice, and other processes. Then you need to build a custom workflow which will have a bunch of functional edge cases. OriginShorts was designed to be a thoughtful product, putting a much higher focus on UI and UX than the harder to use alternatives. This has carried over to the API and MCP as well. You shouldn’t need to track all the best models, maintain a complicated automation pipeline, worry about script writing quality, captions and then rendering. That’s a bunch of API keys and a bunch of bills, and a bunch of places to run to if something doesn’t work. OriginShorts runs the whole relay in one call as a text to video API. Send a topic and get back an MP4 with a script, voiceover, scene images, word-synced captions and music already in it.

What the faceless video API does in one call

  • Writes the script from your topic, or uses yours word for word.
  • Narrates it in the voice you choose, from basic voices to premium ones, or a voice you have cloned. Voices that support direction take instructions like “slow, warm, a little conspiratorial” or custom accent voices to create completely new sounding characters.
  • Draws every scene in one consistent look: Photorealistic, Comic, Anime, 3D Animation, Noir, or a style you describe in your own words.
  • Times captions to every spoken word.
  • Adds music that fits the script, a track you pick, or none.
  • Renders a vertical 9:16 MP4, ready for TikTok, Instagram Reels and YouTube Shorts.
  • Animates every scene, if you want motion video instead of moving images.

Two ways in: ask an assistant, or call the API

Both run on one system: the MCP server is a layer over the same /v1 API, so anything you can do one way, you can do the other.

Ask an assistant (MCP)Call the API (REST)
Best forPeople who work in Claude, ChatGPT, Cursor or Claude CodeAutomations on n8n, Make or Zapier, your backend, your product
ConnectAdd https://originshorts.com/mcp as a connector and sign inSend an os_live_ key in the Authorization header
Ask for a video”Make a 45-second video about…”POST /v1/videos with a topic or a script
Get the MP4The assistant waits and hands you the linkA signed webhook says it’s ready, then one GET returns the link; or poll
Edit it”Redo scene 3 at night, then render it again”Batch your changes, then render once
PriceSame creditsSame credits

Call the API in three steps

1. Get an API key. Create one free on your account page. Keys start with os_live_.

2. Send one request.

curl https://originshorts.com/v1/videos \
  -H "Authorization: Bearer os_live_YOUR_KEY" \
  -H "Content-Type: application/json" \
  -H "Idempotency-Key: eiffel-2026-10-01" \
  -d '{
    "topic": "Why the Eiffel Tower grows taller every summer",
    "duration_range": "30-45",
    "art_style": "photorealistic",
    "background_music": "auto"
  }'

The reply comes back at once with the video’s id and the exact credits charged (trimmed here):

{
  "id": "3f2a9c1e-5b7d-4e8a-9c21-7d4e5f6a8b90",
  "status": "queued",
  "credits_charged": 100
}

The Idempotency-Key makes retries safe: send the same request twice and you get the same video back, charged once.

3. Get the MP4. Two ways, and you can use both:

  • A webhook. Add an https webhook URL to your key and we POST a signed video.completed (or video.failed) event the moment the video is ready. The event names the video; call GET /v1/videos/{id} for its download_url. Your account page shows the signing secret once, when you save the URL. Most automations should use this, with an occasional status check as a fallback.
  • Polling. Call GET /v1/videos/{id} every 5 to 15 seconds. Until it finishes, the reply tells you where it is in plain words, for example "progress": {"stage": "Creating visuals", "percent": 40}.

When the video is done, download_url holds the MP4. It is a signed link that lasts an hour; fetch the video again for a fresh one.

Every webhook carries an X-OriginShorts-Signature header, so your endpoint can prove the call came from us:

import crypto from 'node:crypto';

// header looks like: t=1790000000,v1=5f8c...
export function isFromOriginShorts(rawBody, header, secret) {
  if (!header) return false;
  const parts = Object.fromEntries(header.split(',').map((p) => p.split('=')));
  const age = Math.abs(Date.now() / 1000 - Number(parts.t));
  if (age > 300) return false; // reject anything older than 5 minutes
  const expected = crypto
    .createHmac('sha256', secret)
    .update(`${parts.t}.${rawBody}`)
    .digest('hex');
  return expected.length === parts.v1?.length &&
    crypto.timingSafeEqual(Buffer.from(expected), Buffer.from(parts.v1));
}

It fits the workflow you already run

Because it is one REST call and a webhook, OriginShorts slots into anything that can send an HTTP request. There is no SDK to install and no new dashboard to learn.

  • n8n. A trigger (Schedule, a new Google Sheets row, an RSS item), an HTTP Request node that POSTs to /v1/videos, a Webhook node that catches video.completed, then an HTTP Request node that GETs /v1/videos/{id}. Pass its download_url to whatever comes next.
  • Make. The HTTP Make a request module creates the video; a Custom webhook scenario hears when it’s ready, and a GET to /v1/videos/{id} returns the MP4 link.
  • Zapier. Webhooks by Zapier sends the POST from one Zap; a Catch Hook trigger in a second Zap picks up the event, and a GET to /v1/videos/{id} returns the MP4 link.
  • Google Sheets as a content calendar. One row per video: topic, length, art style. A daily run takes the next row, creates the video and writes its id back; a GET to /v1/videos/{id} returns a fresh MP4 link whenever you need one.
  • Your CMS. When a blog post publishes, send its title and summary as the topic and get a Short that promotes it.
  • Your own code, on a server, where the key stays secret. A few lines in any language:
import requests

resp = requests.post(
    "https://originshorts.com/v1/videos",
    headers={"Authorization": "Bearer os_live_YOUR_KEY"},
    json={
        "topic": "Three habits of people who never lose their keys",
        "duration_range": "30-45",
        "art_style": "3d-animation",
    },
)
resp.raise_for_status()  # a 402 means the account needs credits
video = resp.json()
print(video["id"], video["credits_charged"])

The full contract is in the OpenAPI spec, so tools that read OpenAPI can generate a client for you.

Or ask Claude, ChatGPT or Cursor to make it (MCP)

OriginShorts runs a faceless video MCP server, hosted at https://originshorts.com/mcp. Connect it to your assistant once, then ask for videos in plain words: the assistant makes the video, waits for it to finish and hands you the MP4.

Connect it

  • Claude (web, desktop app and Cowork, on every plan): Customize → Connectors → + Add → Add custom connector. Name it OriginShorts, paste https://originshorts.com/mcp and sign in when asked. No key needed. The Free plan allows one custom connector. On Team and Enterprise, an owner adds it under Organization settings → Connectors, then members click Connect.
  • Claude Code: run the command below, then /mcp, pick originshorts and choose Authenticate. A connector you added on claude.ai also loads in Claude Code when you sign in with the same account.
claude mcp add --transport http originshorts https://originshorts.com/mcp
  • ChatGPT (on the web): Settings → Security and login → turn on Developer mode. In Plugins, create a developer-mode app with the URL https://originshorts.com/mcp and sign in. In a chat, choose Developer mode from the + menu and select OriginShorts. ChatGPT asks you to confirm before running anything that creates or changes something.
  • Cursor: add this to ~/.cursor/mcp.json (or .cursor/mcp.json in a project), then sign in when Cursor asks.
{ "mcpServers": { "originshorts": { "url": "https://originshorts.com/mcp" } } }
  • VS Code with GitHub Copilot: the same idea in .vscode/mcp.json.
{ "servers": { "originshorts": { "type": "http", "url": "https://originshorts.com/mcp" } } }
  • Any other MCP app: the same URL with sign-in, or an API key from your account page sent as Authorization: Bearer os_live_....

What it can do: 28 tools, grouped

GroupWhat it doesAsk it
MakeStarts a video from a topic or a script, waits for it, lists your videos”Make a 45-second video about the oddest law in Texas”
ChooseVoices, styles, music, and your credit balance”Which voices can do a British accent?”
LookThe script, the settings and every scene, as text or as pictures”Show me the scenes”
EditNarration, image prompts and scene order; redo an image; re-record the voice; music, Ken Burns, captions, animation and the title”Redo scene 3 at night and animate scene 1”
CharactersAdds a recurring character, changes their look, redraws their scenes”Add a detective in a grey coat to scenes 2 and 4”
RenderRenders the MP4 once your edits are in”Render it again”
PostConnects TikTok, YouTube and Instagram, posts now or later, cancels a scheduled post”Post it to TikTok and YouTube tomorrow at 9 a.m.”

It looks before it re-renders. view_video hands the assistant every scene as one numbered contact sheet, so it can check the pictures against the script, redo a scene and look again. Edits don’t re-render on their own: the assistant makes them all, then renders once.

It waits for you. Assistants can’t pause between steps, so the status tool waits on our side, up to about 40 seconds a call, and returns the moment the video is done. You get the link without asking twice.

Your account stays yours. You sign in on originshorts.com, not in the chat, so the assistant never sees your login. Each connected app gets its own key on your account page, named after the app; revoke it there and the app is disconnected. The connection spends your credits like the app does, and every paid step reports what it cost. Read-only tools are marked read-only and the five that post, delete or disconnect are marked destructive, so apps can ask first; ChatGPT asks before every step that creates, changes or posts.

Prompts to paste:

  • “Make a 45-second video about the oddest law still on the books in Texas. Photorealistic, with upbeat music.”
  • “Turn this article into a 30-second Short and give me the MP4.”
  • “Show me the scenes. Redo scene 3 at night, then render it again.”
  • “Post it to my TikTok and YouTube tomorrow at 9 a.m. with a short caption.”
  • “How many credits do I have left?”

Edit the video without opening an editor

The first cut is rarely the final cut. Every edit to a narrated video, from script to captions, is also an API call, so a script or an AI agent can review the video and fix it.

  • Look before you render. GET /v1/videos/{id}/preview returns every scene as one JPEG contact sheet. An agent can look at the frames and decide what to change.
  • Free and instant: edit a scene’s narration or image prompt; add, delete or reorder scenes; swap the background music; change Ken Burns motion and overlays; restyle the captions; rename the video.
  • Paid and queued: redo one scene’s image, re-record the narration in a new voice, animate a single scene, or add a recurring character, then redraw the scenes it should appear in. Any change to the narration, including adding, deleting or moving a scene, needs the voice re-recorded before the next render, and a new or reprompted scene needs its image redone.
  • Render once at the end. POST /v1/videos/{id}/render is free and waits for any queued edits, so you can chain changes and render a single time.
# Redo scene 3 at night, then render the new cut
curl -X POST https://originshorts.com/v1/videos/VIDEO_ID/scenes/3/image \
  -H "Authorization: Bearer os_live_YOUR_KEY" \
  -H "Content-Type: application/json" \
  -d '{"prompt": "The same street at night, lit by neon signs"}'

curl -X POST https://originshorts.com/v1/videos/VIDEO_ID/render \
  -H "Authorization: Bearer os_live_YOUR_KEY"

Post it to TikTok, YouTube Shorts and Instagram Reels

A finished MP4 is only half the job. The API also publishes it.

  1. Connect each account once. POST /v1/social/connect returns a link the account owner opens to approve access.
  2. Post to one, two or all three platforms in a single call, now or at a scheduled time. Posting is free.
POST /v1/videos/VIDEO_ID/post
{
  "platforms": ["tiktok", "youtube", "instagram"],
  "schedule_at": "2026-10-08T09:00:00-05:00",
  "youtube": { "title": "Texas still bans this", "tags": ["texas", "weird laws"], "privacy": "public" },
  "tiktok": { "caption": "Still on the books. #texas #weirdlaws", "privacy": "everyone" },
  "instagram": { "caption": "Still on the books.", "hashtags": ["texas", "weirdlaws"], "share_to_feed": true }
}

Each platform keeps its own settings: YouTube title, description, tags, privacy and made-for-kids; TikTok caption, privacy, comments, duets and stitches; Instagram caption, hashtags and share-to-feed. A scheduled post can be cancelled until it goes out.

Posts are public unless you set YouTube or TikTok privacy; Instagram is always public. You connect one account per platform, and Instagram needs a Business or Creator account. Each video posts once, so list every platform in that one call.

Built for production pipelines

Automations run unattended, often at 3 a.m. These are the details that keep them from breaking or double-billing:

  • Idempotency keys. Send an Idempotency-Key header and a retried request never creates or charges twice. The replay returns the original video with credits_charged: 0 and an Idempotent-Replay: true header.
  • Signed webhooks. Every video.completed and video.failed delivery carries an HMAC-SHA256 signature with a timestamp, so your endpoint can reject forgeries and replays.
  • Automatic refunds. If generation fails, its credits come back on their own. No ticket needed.
  • Clear limits. Every account and key has published rate limits. Going over returns 429 with a Retry-After header, so well-behaved clients back off on their own.
  • Fresh download links. download_url is a presigned link valid for one hour. Ask the status endpoint again for a new one.
  • Machine-readable docs. A full OpenAPI spec at /openapi.yaml, an llms.txt for AI crawlers, and a SKILL.md that teaches coding agents the whole workflow.
  • Up to five keys per account, each revocable on its own and each with its own webhook URL, so you can route webhooks and cut off one pipeline without touching the others. Keys share the account’s credits, videos and limits.

Pricing: credits per video

The API uses the same credits as the OriginShorts app. There is no separate API plan and no per-request fee.

API keys are free on every account. Editing text, music, Ken Burns moves, overlays and captions is free, and so are rendering, re-rendering and posting. A generation that fails is refunded automatically.

Plans are on the pricing page, and the docs list what each step costs. Videos made without a plan carry a small “Made with OriginShorts” mark and a 3.5-second outro.

What teams build with the OriginShorts API

  • Faceless channels on autopilot. A spreadsheet of topics, a daily trigger, and a Short posted to three platforms every morning.
  • Agencies serving many clients. One key and webhook per pipeline, and each request carries its own voice and art style. Keys share the account’s credits, videos and connected social accounts, so one account posts to one channel per platform.
  • Content repurposing. Every new blog post, newsletter or podcast episode becomes a 30-second Short that points back to it.
  • News and trend accounts. Send a story’s key facts as the topic, or your own script, and the video is live while the story is still fresh.
  • Education. Lesson notes become 60-second explainers with captions, in a consistent voice.
  • Products that need video. Add short-video generation to your own app, at modest volume, without building a rendering stack.
  • AI agents. Give an agent the MCP server and a goal, and it writes, reviews and edits on its own, then posts when you approve.

Start in five minutes

  1. Sign up at originshorts.com. If your account has no credits, pick a plan on /pricing.
  2. With an assistant: add https://originshorts.com/mcp as a connector in Claude or ChatGPT and sign in. No key needed.
  3. With code: create an API key on your Account page (it starts with os_live_ and is shown once), optionally add an https webhook URL, then send the request from “Call the API in three steps” above.

Your first Short is usually ready in a few minutes.

FAQ

What is the OriginShorts API?

The OriginShorts API is a REST API that turns a topic or a script into a finished faceless short-form video: script, AI voiceover, images, captions, music and a rendered 9:16 MP4. You send one POST request to /v1/videos, and a webhook or polling tells you when the MP4 is ready. The same API edits videos and posts them to TikTok, YouTube Shorts and Instagram Reels.

How do I automate faceless YouTube Shorts?

Connect a trigger you already use, such as a schedule in n8n, a new Google Sheets row or an RSS feed, to one POST request to the OriginShorts API with a topic and a length. When the video.completed webhook arrives, call /v1/videos/{id}/post to publish the video to YouTube Shorts, TikTok and Instagram Reels, now or at a scheduled time.

Does OriginShorts work with n8n, Make and Zapier?

Yes. OriginShorts needs no plugin or SDK: any tool that can send an HTTP request can create a video. Use the HTTP Request node in n8n, the HTTP module in Make or Webhooks by Zapier to call POST /v1/videos, a webhook trigger for video.completed, then a GET to /v1/videos/{id} for the download link.

Can ChatGPT or Claude make videos with OriginShorts?

Yes. OriginShorts runs an MCP server at https://originshorts.com/mcp with 28 tools for creating, editing, rendering and posting videos. Add it as a custom connector in Claude, or as a developer-mode app in ChatGPT, sign in, and ask for a video in plain language. Claude Code, Cursor and VS Code use the same URL and sign-in, or an API key.

How much does the OriginShorts API cost?

API keys and MCP connections are free. Videos use the same credits as the OriginShorts app. Editing text, music, Ken Burns moves and captions is free, as are rendering and posting. A failed generation is refunded automatically. Plans are on the pricing page, and the docs list what each step costs.

How long does it take to generate a video with the API?

A video is usually ready in a few minutes. Creation is asynchronous: the create call returns a video id straight away, then OriginShorts writes the script, records the voice, generates the images and renders the MP4. A signed video.completed webhook tells your workflow the moment it is done.

Can the API post to TikTok, YouTube Shorts and Instagram Reels?

Yes. Connect each account once (one per platform; Instagram needs a Business or Creator account), then one POST to the OriginShorts /v1/videos/{id}/post endpoint publishes to up to three platforms, now or at a scheduled time. Posts are public unless you set YouTube or TikTok privacy. Posting is free, and a scheduled post can be cancelled before it goes out.

Can I use my own script and my own voice?

Yes. Send a custom script instead of a topic and OriginShorts uses it as the narration. Pick a voice from the catalog, add voice direction for tone, accent and pace on voices that support it, or use a voice you have cloned in OriginShorts by its clone_ id. Cloned and directed voices need a paid plan.

What happens if a video fails?

If OriginShorts can’t generate a video, its credits are refunded automatically and a signed video.failed webhook is sent. To try again, create it with a new Idempotency-Key, because reusing the old key returns the failed video. Keep the same key only when retrying a create request that may not have arrived, so it never charges twice.

What formats and lengths does the API produce?

OriginShorts makes vertical 9:16 MP4s with word-timed captions. From a topic, you pick a length range from 15-30 to 60-90 seconds; with your own script, the video runs as long as the script. You also choose an art style (photorealistic, comic, anime, 3D animation, noir or your own), image quality, music, and whether to animate every scene.

Are there rate limits?

Yes. Every account and key has rate limits, listed in the API and MCP docs. Going over returns HTTP 429 with a Retry-After header, so well-behaved clients wait and try again. Contact us for higher limits: [email protected]

What is the OriginShorts MCP server?

The OriginShorts MCP server lets AI assistants such as Claude, ChatGPT and Cursor make faceless short-form videos for you. Connect https://originshorts.com/mcp once, sign in, and ask in plain words. Its 28 tools create, review, edit, render and post videos, using the same credits as the OriginShorts app and API.

How do I add OriginShorts to Claude?

In Claude on the web or the desktop app, open Customize, then Connectors, choose Add custom connector, name it OriginShorts and paste https://originshorts.com/mcp. Sign in when asked; no API key is needed. Every plan can do this: Free allows one custom connector, and on Team and Enterprise an owner adds it first. In Claude Code, run claude mcp add —transport http originshorts https://originshorts.com/mcp.

Can I use OriginShorts in ChatGPT?

Yes, on ChatGPT on the web, on plans that include developer mode. Turn it on under Settings, then Security and login, create a developer-mode app in Plugins with the URL https://originshorts.com/mcp, and sign in to OriginShorts. Pick it from Developer mode in a chat. ChatGPT asks you to confirm each step that creates, changes or posts something.

Do I need an API key to use the OriginShorts MCP server?

No. In Claude, ChatGPT, Cursor and VS Code you sign in with your OriginShorts account and approve access once; you never handle a key. Each connected app appears on your account page, where you can revoke it at any time. Apps without sign-in support can send a free API key instead, as an Authorization: Bearer header.

Can the AI assistant see the video it makes?

It sees the pictures. The OriginShorts MCP server’s view_video tool shows the assistant every scene as one numbered contact sheet, a single scene up close, or a character’s portrait. It doesn’t watch the motion or hear the audio. Ask it to check the scenes against the script, redo any that miss, and look again before it renders.

Start building

Your first Short is one request away.

Connect the MCP server to your assistant, or create an API key on your account page.

Get started

Features, limits and the setup steps for each assistant are current as of the publication date and may change. If you notice an inaccuracy or would like to suggest a correction, please contact us at [email protected].

apimcpautomationfaceless-videoai-video