Integration overview
You send the data. We send back the video. We build and maintain your template, so your integration only sends data through a simple API and receives a notification when each video is ready. The full API reference and your data format are provided during onboarding.
How it works
Each request renders one video. We handle the rendering; you decide where the video goes.
-
01
You send the data
Your system sends the data for each video to our API, whenever your data changes, on a schedule or in batches.
-
02
We render the video
We check the data and render the video from your approved template, with optional voice-over and captions.
-
03
You get notified
A signed webhook tells your system when the video is ready and includes its links.
-
04
You share it
Share the link, embed the video in your website or app, or download it to use wherever you choose.
Send the data
// A sketch: apiKey, projectId, externalId, data and the db helpers are yours.
// Your API base URL is given to you during onboarding.
const TALLYMOTION_API = process.env.TALLYMOTION_API_URL;
// Store the key before the first send, so a retry after a lost response reuses it.
const key = await db.idempotencyKeyFor(externalId); // e.g. crypto.randomUUID(), saved once
const res = await fetch(`${TALLYMOTION_API}/v1/renders`, {
method: "POST",
headers: {
Authorization: `Bearer ${apiKey}`,
"Content-Type": "application/json",
"Idempotency-Key": key,
},
body: JSON.stringify({ projectId, externalId, data }),
});
if (res.status !== 202) throw new Error(`Render not accepted: ${res.status}`);
const render = await res.json();
await db.saveRenderId(externalId, render.id); Receive the webhook
// A sketch: a route on your own server, not ours. Register its URL with us at onboarding.
// verify() checks the Standard Webhooks signature; share() is your own channel.
app.post("/webhooks/video-ready", (req, res) => {
const event = verify(req);
if (event.type === "render.ready") {
// Share the video through your own channel
share(event.data.externalId, event.data.videoPageUrl);
}
res.sendStatus(200);
}); What you build
Three small pieces in a system you already run. No SDK and no video infrastructure.
-
Send the data
A server-side request to our API with your API key, one per video. Send it from wherever your data lives, for example when a new report is ready or a scheduled job runs.
-
Receive the webhook
An HTTPS endpoint on your side that receives a signed event when a video is ready or has failed. If you can’t expose one, check status through the API, or in your TallyMotion dashboard, instead.
-
Share the video
Each finished video comes with a video URL, a poster image and a hosted playback page, in a standard design or branded for you on request. Store the links with your own data and use them in your website, app or messages.
Principles
Keep these in mind when planning the integration.
-
We handle the video. We build and maintain your template. Your integration only sends data, and template changes need no code changes on your side.
-
One project per template. Each project has its own template and data format. One API key covers all your projects.
-
Asynchronous by design. The API accepts your data straight away and your system is notified when rendering finishes. Nothing on your side waits for a render.
-
Safe to retry. Persist an idempotency key before sending. Retry the identical request with that key within the retry window, currently at least 24 hours, and it is recognised as the same request rather than a second video.
-
Signed events. Webhooks follow the Standard Webhooks specification. Verify the signature and ignore duplicate events.
-
Private video links. Video links are unguessable and work without authentication, so they can be shared and embedded. Share them only through channels you trust, and delete a video to withdraw its links.
-
A dashboard, too. You get one as well: render history, statuses and the technical detail you'd want for debugging, so you're never limited to the API and webhooks alone.
What onboarding covers
The API is the same for every project. What’s specific to your project is provided during setup:
-
Your video template
Built and authored to your brand and content, ready before your first real render.
-
Your data format
Required and optional fields, limits and sample data, for each template.
-
The full API reference
Request and response formats, video statuses, error codes and webhook details.
-
API keys and a test project
So you can try the integration before any video reaches your audience.
-
A joint test run
Sends data, receives the webhook, shares the link and deletes a video.
Let’s talk about your integration
Tell us about your data and what you want the videos to look like. We’ll help you scope the rest.