FFmpeg API Compose
Integreiddio
ffmpeg-api/compose
# Run the model; wait up to 20 s for the finished result in the same call
curl -X POST "https://api.doitong.com/v1/run/ffmpeg-api/compose?wait=20" \
-H "Authorization: Bearer $DOITONG_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"tracks": [
{
"id": "your-id",
"type": "example",
"keyframes": [
{
"timestamp": 1,
"duration": 1,
"url": "https://content.doitong.com/images/showcase/v3/gen_fox_cartoon.jpg"
}
]
}
]
}'
# Still "queued" or "running"? Poll with the id from the response:
curl "https://api.doitong.com/v1/requests/REQUEST_ID?wait=20" \
-H "Authorization: Bearer $DOITONG_API_KEY"
const API = "https://api.doitong.com/v1";
const headers = {
"Authorization": "Bearer " + process.env.DOITONG_API_KEY,
"Content-Type": "application/json",
};
// Run the model; wait up to 20 s for the finished result in the same call
let res = await fetch(API + "/run/ffmpeg-api/compose?wait=20", {
method: "POST",
headers,
body: JSON.stringify({
"tracks": [
{
"id": "your-id",
"type": "example",
"keyframes": [
{
"timestamp": 1,
"duration": 1,
"url": "https://content.doitong.com/images/showcase/v3/gen_fox_cartoon.jpg"
}
]
}
]
}),
});
let request = await res.json();
if (!res.ok) throw new Error(request.error.code + ": " + request.error.message);
// Not finished yet: long-poll until it is
while (request.status === "queued" || request.status === "running") {
res = await fetch(API + "/requests/" + request.id + "?wait=20", { headers });
request = await res.json();
}
if (request.status !== "succeeded") throw new Error(JSON.stringify(request.error));
console.log(request.outputs.map((o) => o.url), request.cost.credits + " API credits ($" + request.cost.usd + ")");
import os
import requests
API = "https://api.doitong.com/v1"
headers = {"Authorization": "Bearer " + os.environ["DOITONG_API_KEY"]}
payload = {
"tracks": [
{
"id": "your-id",
"type": "example",
"keyframes": [
{
"timestamp": 1,
"duration": 1,
"url": "https://content.doitong.com/images/showcase/v3/gen_fox_cartoon.jpg",
},
],
},
],
}
# Run the model; wait up to 20 s for the finished result in the same call
r = requests.post(API + "/run/ffmpeg-api/compose", params={"wait": 20}, json=payload, headers=headers)
request = r.json()
if not r.ok:
raise RuntimeError(request["error"]["code"] + ": " + request["error"]["message"])
# Not finished yet: long-poll until it is
while request["status"] in ("queued", "running"):
request = requests.get(API + "/requests/" + request["id"], params={"wait": 20}, headers=headers).json()
if request["status"] != "succeeded":
raise RuntimeError(request["error"])
print([o["url"] for o in request["outputs"]], request["cost"]["credits"], "API credits", "$" + request["cost"]["usd"])
# 1. Connect once (Claude Code; Cursor, VS Code, Claude Desktop: https://doitong.com/cy/developers/docs/mcp)
claude mcp add --transport http doitong-models https://api.doitong.com/v1/mcp \
--header "Authorization: Bearer $DOITONG_API_KEY"
# 2. Your agent calls the "run" tool with:
{
"model_id": "ffmpeg-api/compose",
"input": {
"tracks": [
{
"id": "your-id",
"type": "example",
"keyframes": [
{
"timestamp": 1,
"duration": 1,
"url": "https://content.doitong.com/images/showcase/v3/gen_fox_cartoon.jpg"
}
]
}
]
}
}
Galwch y model FFmpeg API Compose (ffmpeg-api/compose) drwy Doitong API. Dogfennaeth ar gyfer asiantau: https://doitong.com/cy/developers/models/ffmpeg-api/compose.md
POST https://api.doitong.com/v1/run/ffmpeg-api/compose?wait=20
Authorization: Bearer $DOITONG_API_KEY
Content-Type: application/json
{
"tracks": [
{
"id": "your-id",
"type": "example",
"keyframes": [
{
"timestamp": 1,
"duration": 1,
"url": "https://content.doitong.com/images/showcase/v3/gen_fox_cartoon.jpg"
}
]
}
]
}
Os yw statws yr ymateb yn "queued" neu "running", holwch GET https://api.doitong.com/v1/requests/REQUEST_ID?wait=20 nes ei fod yn "succeeded"; mae'r ffeiliau yn outputs[].url. Mae POST https://api.doitong.com/v1/quote/ffmpeg-api/compose gyda'r un corff yn dychwelyd yr union bris cyn y rhediad.
Y cais hwn: ≈$0.001 1 credyd API Ei redeg ar y dudalen hon
Eich allwedd API newydd. Dim ond nawr y caiff ei ddangos ac mae eisoes yn y cod ac ym maes allwedd API isod. Cadwch ef yn gyfrinachol: peidiwch byth â’i roi mewn cod sy’n rhedeg mewn porwr.
Mae eich canlyniad cyntaf yn mynd yma
Adeiladwch gais isod a'i redeg gyda'ch allwedd API. Mae allbynnau'n cael eu copïo i'n storio, wedi'u cadw am byth neu am 7 diwrnod am ddim.
Adeiladu cais
Cynhyrchir rheolyddion o sgema'r model. Mae'r cod a'r pris yn diweddaru wrth i chi eu newid.
/run/ffmpeg-api/compose?wait=20
dyfynbris → $0.001
# Run the model; wait up to 20 s for the finished result in the same call
curl -X POST "https://api.doitong.com/v1/run/ffmpeg-api/compose?wait=20" \
-H "Authorization: Bearer $DOITONG_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"tracks": [
{
"id": "your-id",
"type": "example",
"keyframes": [
{
"timestamp": 1,
"duration": 1,
"url": "https://content.doitong.com/images/showcase/v3/gen_fox_cartoon.jpg"
}
]
}
]
}'
# Still "queued" or "running"? Poll with the id from the response:
curl "https://api.doitong.com/v1/requests/REQUEST_ID?wait=20" \
-H "Authorization: Bearer $DOITONG_API_KEY"
const API = "https://api.doitong.com/v1";
const headers = {
"Authorization": "Bearer " + process.env.DOITONG_API_KEY,
"Content-Type": "application/json",
};
// Run the model; wait up to 20 s for the finished result in the same call
let res = await fetch(API + "/run/ffmpeg-api/compose?wait=20", {
method: "POST",
headers,
body: JSON.stringify({
"tracks": [
{
"id": "your-id",
"type": "example",
"keyframes": [
{
"timestamp": 1,
"duration": 1,
"url": "https://content.doitong.com/images/showcase/v3/gen_fox_cartoon.jpg"
}
]
}
]
}),
});
let request = await res.json();
if (!res.ok) throw new Error(request.error.code + ": " + request.error.message);
// Not finished yet: long-poll until it is
while (request.status === "queued" || request.status === "running") {
res = await fetch(API + "/requests/" + request.id + "?wait=20", { headers });
request = await res.json();
}
if (request.status !== "succeeded") throw new Error(JSON.stringify(request.error));
console.log(request.outputs.map((o) => o.url), request.cost.credits + " API credits ($" + request.cost.usd + ")");
import os
import requests
API = "https://api.doitong.com/v1"
headers = {"Authorization": "Bearer " + os.environ["DOITONG_API_KEY"]}
payload = {
"tracks": [
{
"id": "your-id",
"type": "example",
"keyframes": [
{
"timestamp": 1,
"duration": 1,
"url": "https://content.doitong.com/images/showcase/v3/gen_fox_cartoon.jpg",
},
],
},
],
}
# Run the model; wait up to 20 s for the finished result in the same call
r = requests.post(API + "/run/ffmpeg-api/compose", params={"wait": 20}, json=payload, headers=headers)
request = r.json()
if not r.ok:
raise RuntimeError(request["error"]["code"] + ": " + request["error"]["message"])
# Not finished yet: long-poll until it is
while request["status"] in ("queued", "running"):
request = requests.get(API + "/requests/" + request["id"], params={"wait": 20}, headers=headers).json()
if request["status"] != "succeeded":
raise RuntimeError(request["error"])
print([o["url"] for o in request["outputs"]], request["cost"]["credits"], "API credits", "$" + request["cost"]["usd"])
{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "run",
"arguments": {
"model_id": "ffmpeg-api/compose",
"input": {
"tracks": [
{
"id": "your-id",
"type": "example",
"keyframes": [
{
"timestamp": 1,
"duration": 1,
"url": "https://content.doitong.com/images/showcase/v3/gen_fox_cartoon.jpg"
}
]
}
]
},
"wait_seconds": 20
}
}
}
Rhedeg y cais hwn
Mae'ch allwedd yn aros yn y porwr hwn: caiff ei hanfon at Doitong API yn unig a'i chadw (localStorage) dim ond os ticiwch Cofio. Cael allwedd API
Ynglŷn â FFmpeg API Compose
Yn adeiladu fideo terfynol o restr o `tracks`. Rhaid i'r rhestr gynnwys union un trac gweledol, naill ai fideo neu ddelwedd, a gall gynnwys unrhyw nifer o draciau sain. JSON gyda `video_url` a `thumbnail_url` yw'r allbwn.
Paramedrau
tracksgofynnol
tracks[].idgofynnol
tracks[].typegofynnol
tracks[].keyframesgofynnol
tracks[].keyframes[].timestampgofynnol
tracks[].keyframes[].durationgofynnol
tracks[].keyframes[].urlgofynnol
Allbwn
{
"id": "req_8k2m4q7x1z9c3v5b6n0p2r4t",
"object": "request",
"model": "ffmpeg-api/compose",
"status": "succeeded",
"created_at": "2026-10-20T12:00:00Z",
"started_at": "2026-10-20T12:00:02Z",
"completed_at": "2026-10-20T12:00:09Z",
"queue_position": null,
"cost": {
"credits": 1,
"usd": "0.001",
"charged": 1,
"refunded": 0
},
"input": {
"tracks": [
{
"id": "your-id",
"type": "example",
"keyframes": [
{
"timestamp": 1,
"duration": 1,
"url": "https://content.doitong.com/images/showcase/v3/gen_fox_cartoon.jpg"
}
]
}
]
},
"output": {
"video_url": "string",
"thumbnail_url": "string"
},
"outputs": [
{
"type": "file",
"url": "https://content.doitong.com/dev-api/2026/10/20/req_8k2m4q7x1z9c3v5b6n0p2r4t/0-output.jpeg",
"content_type": "image/jpeg",
"file_size": 1843200,
"stored": true
}
],
"error": null,
"metrics": {
"inference_seconds": 6.8
},
"urls": {
"self": "https://api.doitong.com/v1/requests/req_8k2m4q7x1z9c3v5b6n0p2r4t",
"cancel": "https://api.doitong.com/v1/requests/req_8k2m4q7x1z9c3v5b6n0p2r4t/cancel"
}
}
Meysydd yr allbwn
- video_url
- string (video URL)URL sy'n pwyntio at y fideo wedi'i brosesu.
- thumbnail_url
- stringURL sy'n pwyntio at y mân-lun ar gyfer y fideo.
Amrywiadau FFmpeg eraill
Mwy o fodelau: Fideo i Fideo
Ar gyfer asiantau AI: mae'r dudalen hon fel Markdown ar gael yn https://doitong.com/cy/developers/models/ffmpeg-api/compose.md. Pob model a chanllaw: https://doitong.com/developers/llms.txt