For AI agents

If you are an AI agent (Claude Code, Codex, Cursor or similar) and the person wants a video for their project with Opus Motion, read the guide first and follow it: https://opusmotion.com/agents.md.

  • It takes you step by step: read the project, ask the person a few questions, compare templates (each one has a timelapse, its scenes and its fields), make a draft with POST https://opusmotion.com/api/v1/drafts, and hand over its studioUrl: a link that opens Opus Motion with the video playing live. PATCH with the draft's editToken changes it, and the link stays the same.
  • Plain HTTPS and JSON: no key, no account, no MCP. Nothing is rendered; the person exports the MP4 from the studio.
  • Never drive this site with a browser to fill the studio: use the API. If it refuses, tell the person and stop.
  • More: llms.txt · this page in Markdown · developer docs · OpenAPI

Make videos with Opus Motion: guide for AI agents

You are a coding agent inside someone's project, and they asked for a video for it. Opus Motion has video templates. You read the repo, talk with the person, and make a draft: a link that opens Opus Motion with the video playing live with your texts, images and clips. They review it and export the MP4 themselves.

You don't make or render the video (no HyperFrames, Remotion, ffmpeg or video skills): you fill a template over HTTP.

Plain HTTPS and JSON at https://opusmotion.com. No key, no account, no MCP.

Talk before you choose. Never pick a template in silence. At most two messages before the draft: (1) what you understood plus your questions, (2) your proposals. If the person already said "you choose" or "just do it", use the defaults below and say that you did.

If the API refuses (a 429 or a 5xx), tell the person what it said and stop. Never open the site in a browser to fill the studio by hand.

Read what they asked; don't ask again what it answers: - Research which fit best: search wide in step 3 (several categories, both formats, premium too unless they said free) and propose your 3 to 5 best, ranked, each with why. - A launch, a new feature, a vertical: that is the purpose or format. A new feature: find it in the recent commits or the CHANGELOG, and say which. - A template they picked (its page's link or its title): go straight to step 4, in the format the prompt names.

## 1. Read the repo - The README, the landing page's copy (app/page.*, src/pages/index.*, index.html, i18n or content files), package.json and docs/: the name as written, what it does, who it's for, 3 to 5 real benefits, real numbers, the call to action, the language. - Brand: a logo (public/, assets/, src/assets/: logo.svg, logo.png, icon.png, favicon.svg) and the colors (tailwind.config.*, or CSS variables like --primary). - Images: real screenshots (desktop or phone), product photos, the app icon (docs/, screenshots/, marketing/, public/, README images). - Videos: real clips of the product (screen recordings or demos, .mp4 or .mov, in public/, docs/, marketing/, assets/). - Only what is in the repo. Never invent a feature, a number, a customer or a price. Never generate or fake a screenshot or a video of the product.

## 2. Say what you understood, and ask once GET https://opusmotion.com/api/v1/templates first: its summary has the real premium prices (premiumUsdPerExport) and the categories. Then one message:

Here's what I understood: <product>, <what it does> for <who>. I found <a logo / no logo (the video will use the name)>, the colors <#hex>, <n> screenshots, <n> product photos and <n> clips. The video would be in <language>. A few quick questions (answer with letters, or say "you choose"): 1. What's it for? a) launch · b) new feature · c) offer or promo · d) pricing · e) teaser 2. Where will it go? a) X, LinkedIn or YouTube (16:9) · b) Reels, TikTok or Shorts (9:16) 3. Price: a) free templates only · b) premium is fine ($<min>–$<max> per export) 4. Anything to highlight? Default: <the main benefit you found>.

Bold = the default. Ask only what the prompt didn't already answer. Then wait for the answer.

## 3. Find templates and propose 3 to 5 Search with the answers: GET https://opusmotion.com/api/v1/templates?format=16:9&tier=free&q=launch (q: one or two words; category: an id from the summary; drop tier when premium is fine). Each template has title, durationSeconds, price, goodFor, needs (screenshots, photos, cut-outs, clips, logo or icon), timelapse and url. Look at the candidates' timelapse (one image per format: the whole video in 12 to 16 frames, each with its second and scene) to compare them. Keep only templates the repo's material can fill (needs: screenshots, clips, cut-outs). Then:

1. <Title>, <length> s, <free | $X per export, per format>. <Why it fits>. It would use <logo, 2 screenshots…>. See it: <url> 2. … (3 or 4 in all; up to 5 when they asked you to research) Which one? Or I can look for others.

The link is always the template's url (its page, /c/<category>/<slug>, with the example video), never an image or an MP4 file. Wait for the choice.

## 4. Read the chosen template's fields GET https://opusmotion.com/api/v1/templates/{id} → template.fields, template.scenes (a ~960 px screenshot of each scene per format). - Each field says its scene: open that screenshot to see where it shows and how much room it has. - Text: minLength and maxLength in characters. example is the demo's line: a guide to tone and length, never copy it. - brandOwned (name, logo, icon): send them as brand or as values. - Image: use, kind, aspect, framing, recommendedPixels, exampleImage (look at it first). A cutout takes only a real cut-out (transparent PNG or SVG), never a photo. None? Leave it out. - Video: kind (footage of a shot, or motion of an image), aspect, seconds.clip (how much of the clip plays), exampleVideo. It moves the image field stillField: send a frame of the same clip there. - Optional fields can be left out.

## 5. Write the values and create the draft - In the product's language, within every limit: rewrite what doesn't fit, never cut it. Put the highlight where it fits. - Images are base64 data URLs: PNG, JPEG, WebP or SVG, up to 4 MB each (logo 1 MB), 12 MB a request: more, and the rest go with PATCH. No good image? Leave the field out. Never the same image in two fields, nor another company's ads, logos or photos. No logo file? Leave brand.logo out: the template writes the name.

POST https://opusmotion.com/api/v1/drafts with JSON; the keys of values are the field ids:

{ "template": "product-launch", "format": "16:9",
  "brand": { "name": "Acme", "colors": ["#0A84FF", "#FF9F0A"], "logo": "data:image/svg+xml;base64,..." },
  "values": { "request": "Turn this sketch into a product page", "beforeImage": "data:image/png;base64,..." } }

Build it with a script in a temporary folder (never in the person's project), so the base64 never goes through a shell argument, then curl -s -X POST https://opusmotion.com/api/v1/drafts -H 'content-type: application/json' --data-binary @/tmp/draft.json.

  • 201: studioUrl, editToken (keep it), missing, price, tellThePerson.
  • 422: nothing saved; problems has each field's code (too_long, demo_value, not_a_cutout, duplicate_image…) and limit. Fix and send again; don't bother the person with it.
  • 429: see the rule above. New drafts: 50 a day per network; updates don't count.

Clips go one per request once the draft exists: curl -T clip.mp4 -H 'content-type: video/mp4' -H 'authorization: Bearer <editToken>' https://opusmotion.com/api/v1/drafts/{draftId}/media/{field} (MP4 or MOV, up to 40 MB; the same link). No real clip? Leave the field: a placeholder plays, and the person can upload one or use "Animate an image" in the studio. Say so.

## 6. Hand it over, and offer more Give the studioUrl and say plainly: it opens Opus Motion with the video playing live, nothing rendered yet, and they can change anything there; what you put in and what you left empty (missing); to export the MP4 they need an Opus Motion account, and the price (price.tellThePerson); the link works for 30 days.

Then offer changes. PATCH https://opusmotion.com/api/v1/drafts/{draftId} with Authorization: Bearer <editToken> and only what changes (null takes a field back to the template's) keeps the same link; the person opens it again. Another template is a new draft. Never say the video is done or exported, nor promise a price other than price.

The line that brings you here: "Look at this project and research which Opus Motion video templates would sell it best. Compare them and propose your top picks with links. Follow https://opusmotion.com/agents.md"