Video + soundVideo generation v1
Video with sound from a prompt, an image, or first and last frames, from 480p to 4K. Add a voice track and it lip-syncs.
From $0.025 per second
How to call itPick a model, send your inputs, and the finished output arrives on your webhook. Pay per job from a prepaid balance. No servers to run.

See all available APIs provided by Strontium.
Video + soundVideo with sound from a prompt, an image, or first and last frames, from 480p to 4K. Add a voice track and it lip-syncs.
From $0.025 per second
How to call it
Image
Images from a prompt, or new ones from your reference images, with a transparent background when you need one.
$0.0175 per image
How to call itSpeech in a voice cloned from a reference recording, in many languages.
$0.025 per 1,000 characters
How to call itDescribe a voice in words, then direct how it speaks. English and Chinese.
$0.045 per 1,000 characters
How to call itType what you want, press Generate and watch the result come in. Click any demo to watch it with sound.
Video v1
Image v1
Voice v1
Text to image
Restyle a picture
Edit with a prompt
Enhance prompt
Fast, Pro, 3D or anime
Consistent character
Text to video
Image to video
First and last frame
Lipsync
Camera moves
Restyle a video
Edit with a prompt
Drop in a product
Replace the background
Relight
New camera angle
Create image
Variations
Edit image
Upscale to 4K
Turnaround sheet
Camera angle
Face swap
Image to video
Text to video
Motion sync
Lipsync
Extend a video
Add sound
Restyle a video
Smart shot
The same for every model in the catalog.
Add funds with a card. Every job deducts its price per unit, nothing else is billed, and there is no subscription.
Create, rotate and revoke keys for each organization. Usage and spend are counted per key.
Run any model in the browser with a form, before you write a line of code.
Every model's page has its parameters, limits and a cURL you can copy.
Jobs, units and spend over time, with success and failure counts.
The result is POSTed to your address when a job finishes, and retried until you answer 200.
Authenticate once, post a job, receive the result on your webhook. Swap the slug to change what gets generated, or try the model in the playground first.
A bearer token: your key id and secret, joined with a colon and Base64 encoded.
Send modelParams and the webhookUrl we should call. You get 201 Created and a jobId.
When the job finishes we POST the result to your webhook: the job id, when it finished, the units used, the output path and the price per unit.
A failed job sends failedAt and a failCode instead of the output. Answer 200, or we keep retrying. A 403 on the request means your balance is empty.
curl -X POST https://api.strontium.ai/jobs/async/{slug} \
-H "Authorization: Bearer <BASE64_TOKEN>" \
-H "Content-Type: application/json" \
-d '{
"modelParams": { "prompt": "A lighthouse at sunset" },
"webhookUrl": "https://your-server.com/webhook"
}'import requests
job = requests.post(
"https://api.strontium.ai/jobs/async/{slug}",
headers={"Authorization": "Bearer <BASE64_TOKEN>"},
json={"modelParams": {"prompt": "A lighthouse at sunset"},
"webhookUrl": "https://your-server.com/webhook"},
).json()const res = await fetch("https://api.strontium.ai/jobs/async/{slug}", {
method: "POST",
headers: { Authorization: "Bearer <BASE64_TOKEN>", "Content-Type": "application/json" },
body: JSON.stringify({ modelParams: { prompt: "A lighthouse at sunset" },
webhookUrl: "https://your-server.com/webhook" }),
});
const { jobId } = await res.json();HTTP/1.1 201 Created
Content-Type: application/json
{
"success": true,
"jobId": "abc123",
"createdAt": "2025-02-12T10:30:45.123Z"
}POST https://your-server.com/webhook
Content-Type: application/json
{
"id": "abc123",
"succeededAt": "2025-02-12T10:31:02.512Z",
"unitsUsed": 5,
"outputPath": "jobs/abc123/output.mp4",
"pricePerUnit": 0.02
}A simulation of one job's lifecycle. Nothing is sent and nothing is billed.
The same endpoints on capacity, terms and support sized for a company, from the first pilot to production traffic.
Only your keys can reach them.
A throughput band that is yours alone.
Jobs and spend, per key, as they happen.
Engineers on the pipeline, not a ticket queue.
Endpoints only your keys can reach, on capacity no one else shares.
Private endpoints
Pay per job while you find the shape of your traffic, then reserve capacity once it settles.
Usage-based or reserved pricing
Our applied engineers work with your team on the pipeline, not only on the ticket.
Engineers on the same problem
Every job, its units and its cost, per key, in the dashboard as it happens.
Usage you can read
Tell us the capability. Custom inference is one of the services we build and run.
See custom services