Skip to main content
The text capabilities answer synchronously: send a request, wait, and the result is in the response. There is no job to poll. Some take minutes because they research and fact-check as they write, so set a generous client timeout instead of a short one with retries. Every one of them needs a projectId, and each returns its result under a field named for what it made — research, script, paraphrase, copy, questions, solution, outline, article, localization — next to credits and creditBalance.

Make a call

Start from a subject or a source

text.script or video.remix? text.script watches one video, researches around it, fact-checks its own claims and returns a claim ledger with the script. video.remix reads up to ten references — URLs it transcribes for you, or transcripts you send — and writes one original script across them. One goes deep on a single source; the other synthesizes many. video.remix takes brandContext (your brand’s voice, claims and things to avoid; it shapes the script and is never treated as a source) and verify. With verify: true the finished script is fact-checked against public sources before it is returned, and the answer carries gate.decision. A script whose hook or thesis cannot be verified is withheld: the call answers 422 content_not_cleared, nothing is charged, and details.gate carries the decision (killed or escalated), the fact-check reportId and reasons. No script is returned. Retrying with the same Idempotency-Key returns the same answer; change the sources or instructions to get a different script. text.adapt takes brandContext too: your brand’s voice, audience, claims and words to avoid. The adaptation follows it; it is never treated as the source. text.script also takes products to promote inside the script, with rules against inventing links, prices or features. Send "format": "plaintext" to get only the title and the teleprompter-ready script back, without the research ledger, at the same price.

Rework something you already wrote

paraphrase or copywrite? paraphrase restyles long-form as long-form — the same material in a new tone, register or audience, with preserveKeywords for terms that must survive verbatim. copywrite rewrites content down into one platform’s native post, with that platform’s conventions, length and hashtag habits. copywrite, research, paraphrase, questions, solve and film return their text under result in the field they name (copy.result, research.result, paraphrase.result, questions.result, solution.result, outline.result), with the platform or domain you named beside it. text.article turns a finished script into a publishable article. It carries citations through from the claim ledger and returns Schema.org markup under jsonLd.

Transcribe an asset

POST /v1/assets/{assetId}/transcript transcribes an asset in your project and returns the products you ask for in formats (text by default; also readable, verbatim, markdown, srt, vtt, json, chapters). Send the projectId that holds the asset and an Idempotency-Key.
  • instruction rewrites the finished transcript in plain words — “redact phone numbers”, “expand abbreviations”, “as bullet notes”. It is an ElevenLabs Scribe transcript edit, applied to the source-language words, and comes back as result.editedTranscript (kind: "transcript" with its text). It always runs a fresh recognition at +30%. If Scribe could not apply it, editedTranscript.kind is "error" and the +30% is not charged; where Scribe is not configured the call is refused with invalid_request and nothing is charged.
  • translateTo translates the timed products; editedTranscript stays in the source language.
  • The price depends on the asset’s measured length: quote first with X-Sigmora-Quote-Only: 1, then send the call capped at that quote with X-Sigmora-Max-Credits. The quote is held before recognition starts and only what recognition measured is charged.
  • An asset that already has a transcript, called without instruction, is formatted from it at no charge. Read a stored transcript page by page with GET /v1/assets/{assetId}/transcript?projectId=....
cURL
POST /v1/assets/{assetId}/analysis runs a scene-by-scene retention analysis of the asset and answers 202 with a jobId (kind media.analysis): poll GET /v1/jobs/{jobId}. A failed run is refunded, and while the asset already has an analysis queued or running the call returns that job at no charge.

Working from a transcript

Send the transcript inline as transcript, or name an asset in the project that already has one with assetId (list them with GET /v1/assets?projectId=...). Send exactly one: with both or neither it would be unclear which transcript was translated and priced.
Both transcript capabilities are priced by length, and the response reports what was counted: languageMinutes for localize, transcriptMinutes for moments. Cue timings are validated — an end earlier than its start is refused rather than rendered. When you translate an assetId that has no recorded language, send sourceLanguage; it is never guessed. For text.packaging, asr is the speech-recognition result for the finished edit: the full text, its languageCode, and timed words when you have them (the list may be empty).

Thumbnails and music

Two non-text capabilities work the same way — synchronous, filed in the project, returning a URL you fetch directly:
  • POST /v1/image/thumbnail — a platform-sized thumbnail from a title: 16:9 for youtube, 9:16 for Shorts, Reels and TikTok. subject (who or what is visible) and transcript (or the assetId of a transcribed asset) improve it most; a thumbnail made from a title alone has to guess at the content. The image has no text on it unless you send headline: then the words are laid on it in heavy capitals on the side the composition leaves open, in your palette and fontFamily when you send them. variants (1 to 4) makes several images to choose from, each priced as one thumbnail and each with a small preview. Send source (assetId of one of your videos, or a public videoUrl, and optionally atSeconds) to make it from a frame of your own video instead, with the headline (or the title) on it. Returns thumbnail.url and thumbnail.variants.
  • POST /v1/audio/music — music from one to ten weighted prompts, up to three minutes. Returns music.url and the blocks you were charged for.

Prices

Prices are live in GET /v1/capabilities, which also tells you which capabilities can run right now. Every response reports credits — what was actually charged — and creditBalance. A call that fails, or returns nothing usable, is free. See Pricing & credits.

From a document to a video

Turn the writing into a narrated video.

Errors

Every error code and how to respond.