Does Synthesia Syren have an API? A backend route with Sume Formats

Synthesia's Syren beta launched Oct 9 as an in-app button; its launch post mentions no API. How to call a saved video recipe from your server with Sume.

5 min readSume
All posts

Synthesia's launch post for Syren, published October 9, 2026, does not mention an API. It describes a beta that you open from a Syren button in the left-hand navigation of the Synthesia app. If you need to start video generation from your own server, Sume's Format API is a route that exists today: POST /v1/formats/{handle}/{slug}/runs starts a saved video recipe, and you read the finished media back by webhook or poll.

This page compares the two shapes. It does not claim that Synthesia has no API for anything; it only reports what the Syren announcement says.

What does the Syren announcement say?

Synthesia says you describe a video or share a document and Syren builds motion graphics, avatars and voiceover. It launched in beta for self-serve, free and all Enterprise customers, with launch credits so every customer can make a first video.

Syren launch facts, read 2026-10-13
ItemLaunch post
DateOctober 9, 2026
AccessSyren button in the Synthesia app; beta
InputsPrompt or preset; branded documents, images, videos, PowerPoints, YouTube links
Length and shapeUp to three minutes, horizontal or vertical
Avatars240+ avatars in 140+ languages
APINot mentioned

What is a Sume Format run?

A Format is a saved production recipe: a house style, an output contract and a playbook for one kind of video. A run executes it once, unattended, in a fresh sandbox with Sume's generation tools. The run is not a chat; approvals a chat-authored recipe would ask for are pre-granted inside the run's spend cap.

You call a Format you own at {handle}/{slug}, or one of the ready-made Formats by Sume at sume/{slug}, such as sume-product-commercial or sume-slideshow. The body carries a free-form input object and an instruction. Read GET /v1/formats/sume/{slug} first to see its declared input and output kind.

How do I start one from my server?

Send an Idempotency-Key on every create, and set generation_spend_cap_credits so one run cannot exceed a ceiling you chose. A fresh run returns 202; a replay of the same key and body returns 200 with the original receipt and no second charge.

Runs that make video take minutes. The docs say long-form host video usually completes in 15 to 30 minutes, so design for the asynchronous path from the first call.

import json, os, time, urllib.request

BASE = "https://api.sume.com/v1"
HEADERS = {
    "Authorization": f"Bearer {os.environ['SUME_API_KEY']}",
    "Content-Type": "application/json",
}

def call(method, url, body=None, extra=None):
    data = json.dumps(body).encode() if body is not None else None
    req = urllib.request.Request(url, data, {**HEADERS, **(extra or {})}, method=method)
    with urllib.request.urlopen(req) as res:
        return json.load(res)["data"]

run = call(
    "POST", f"{BASE}/formats/acme/product-promo/runs",
    {"instruction": "Vertical 9:16, 30 seconds, upbeat.",
     "input": {"product_url": "https://shop.example.com/p/8823"},
     "generation_spend_cap_credits": 300},
    {"Idempotency-Key": "order-8823-v1"},
)
while run["status"] not in ("completed", "failed", "canceled", "skipped"):
    time.sleep(30)
    run = call("GET", f"{BASE}/format-runs/{run['id']}")
print(run["status"], run.get("primary_output_url"))

How do I get the result back?

A completed receipt carries primary_output_url, an artifacts[] list and an output object. Media URLs are durable media.sume.com HTTPS URLs that do not expire, and they are public to anyone who holds the link, so proxy or copy them if customers must not see each other's files.

In production, register communication.webhook_url and verify the sume-v1 signature on the raw body. Keep polling as a backup. skipped and canceled runs send no webhook, so read those from the create or cancel response.

What stays different from an app button?

Syren builds the video while you watch and lets you ask in chat to change the script or avatar. A Format run is one unattended turn, so a change means a new run with an edited instruction and a new idempotency key. Keys must carry the formats:read and formats:write scopes, and service-account keys cannot create Format runs.

Pick Syren when a person wants to iterate in an app. Pick a Format when your own product or job queue must start the video.

Sources

Related posts

More in Formats

All Formats posts

Written by Sume