MuseTalk
Integrere
musetalk
# 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/musetalk?wait=20" \
-H "Authorization: Bearer $DOITONG_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"source_video_url": "https://content.doitong.com/video/showcase/v3/gen_fox_cartoon.mp4",
"audio": "https://content.doitong.com/audio/showcase/v3/tools/dub_es.mp3"
}'
# 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/musetalk?wait=20", {
method: "POST",
headers,
body: JSON.stringify({
"source_video_url": "https://content.doitong.com/video/showcase/v3/gen_fox_cartoon.mp4",
"audio": "https://content.doitong.com/audio/showcase/v3/tools/dub_es.mp3"
}),
});
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 = {
"source_video_url": "https://content.doitong.com/video/showcase/v3/gen_fox_cartoon.mp4",
"audio": "https://content.doitong.com/audio/showcase/v3/tools/dub_es.mp3",
}
# Run the model; wait up to 20 s for the finished result in the same call
r = requests.post(API + "/run/musetalk", 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/se/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": "musetalk",
"input": {
"source_video_url": "https://content.doitong.com/video/showcase/v3/gen_fox_cartoon.mp4",
"audio": "https://content.doitong.com/audio/showcase/v3/tools/dub_es.mp3"
}
}
Riŋge MuseTalk-modeallii (musetalk) Doitong API bokte. Dokumentašuvdna ageanttaide: https://doitong.com/se/developers/models/musetalk.md
POST https://api.doitong.com/v1/run/musetalk?wait=20
Authorization: Bearer $DOITONG_API_KEY
Content-Type: application/json
{
"source_video_url": "https://content.doitong.com/video/showcase/v3/gen_fox_cartoon.mp4",
"audio": "https://content.doitong.com/audio/showcase/v3/tools/dub_es.mp3"
}
Jus vástádusa status lea "queued" dahje "running", jeara GET https://api.doitong.com/v1/requests/REQUEST_ID?wait=20 dassážii go dat lea "succeeded"; fiillat leat outputs[].url:s. POST https://api.doitong.com/v1/quote/musetalk seamma boduin máksá dárkilis haddái ovdal vuodjámis.
Gitta 4,50 $ juohke ráŋggas mákso duohta geavaheami mielde, loahppa máhcaheami Vuodje dán siiddu alde
Du ođđa API-čoavdda. Dat čájehuvvo dušše dál ja lea juo koden ja API-čoavdda giettis dás vuolábealde. Bisso dan čihkosis: ale goassige bidde dan kodaide mat vuđđojuvvojit fierpmádatrávnnji.
Dát lea du vuosttaš bohtos
Daga jearaldaga vuolábealde ja vuodje dan iežat API-čoavddain. Boađusat kopierejuvvojit min vurkemii, bisuhuvvojit álo dahje 7 beaivvi nuvttá.
Ráhkat jearaldaga
Kontrollat ráhkaduvvojit modealla skeama vuođul. Koda ja haddi ođasmahttojuvvojit go rievddadat daid.
/run/musetalk?wait=20
haddemearrádus → 4,50 $
# 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/musetalk?wait=20" \
-H "Authorization: Bearer $DOITONG_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"source_video_url": "https://content.doitong.com/video/showcase/v3/gen_fox_cartoon.mp4",
"audio": "https://content.doitong.com/audio/showcase/v3/tools/dub_es.mp3"
}'
# 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/musetalk?wait=20", {
method: "POST",
headers,
body: JSON.stringify({
"source_video_url": "https://content.doitong.com/video/showcase/v3/gen_fox_cartoon.mp4",
"audio": "https://content.doitong.com/audio/showcase/v3/tools/dub_es.mp3"
}),
});
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 = {
"source_video_url": "https://content.doitong.com/video/showcase/v3/gen_fox_cartoon.mp4",
"audio": "https://content.doitong.com/audio/showcase/v3/tools/dub_es.mp3",
}
# Run the model; wait up to 20 s for the finished result in the same call
r = requests.post(API + "/run/musetalk", 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": "musetalk",
"input": {
"source_video_url": "https://content.doitong.com/video/showcase/v3/gen_fox_cartoon.mp4",
"audio": "https://content.doitong.com/audio/showcase/v3/tools/dub_es.mp3"
},
"wait_seconds": 20
}
}
}
Geavat dán ohcamuša
Du key báhcá dán fierpmádatlogan: dat sáddejuvvo dušše Doitong API:ii ja vurkejuvvo (localStorage) dušše jos válljet Remember. Viečča API-keya
Dát lea MuseTalk birra
Váldá `source_video_url` ja `audio_url` ja máhccá video mas čáhki njuni lihkadusat čuovvut jiena. Dárbbaša dušše dáid guokte inputa ja heiveha dubberen dahje hupma animerejeaddjin iežas jienain.
Parametterat
Sádde kanonala nama dahje iežas nama, ii goappašiid. Kanonala namat
source_video_urlgáibiduvvo
audio_urlgáibiduvvo
audio
Fiilaparametterat váldet almmolaš https:// URL:a, data: URI:a gitta 10 MB, dahje uploada file_url:a. Fiillat
Boađus
{
"id": "req_8k2m4q7x1z9c3v5b6n0p2r4t",
"object": "request",
"model": "musetalk",
"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": 4500,
"usd": "4.50",
"charged": 4500,
"refunded": 0
},
"input": {
"source_video_url": "https://content.doitong.com/video/showcase/v3/gen_fox_cartoon.mp4",
"audio_url": "https://content.doitong.com/audio/showcase/v3/tools/dub_es.mp3"
},
"output": {
"video": {
"url": "https://content.doitong.com/dev-api/2026/10/20/req_8k2m4q7x1z9c3v5b6n0p2r4t/0-output.mp4",
"content_type": "video/mp4",
"file_name": "0-output.mp4",
"file_size": 1843200
}
},
"outputs": [
{
"type": "video",
"url": "https://content.doitong.com/dev-api/2026/10/20/req_8k2m4q7x1z9c3v5b6n0p2r4t/0-output.mp4",
"content_type": "video/mp4",
"file_size": 1843200,
"width": 1280,
"height": 720,
"duration": 5,
"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"
}
}
Outputa giettit
- video
- object {url, content_type, file_name, file_size}Ráhkadeami bokte buvttaduvvon videofiila.
Eanet modeallat: Gubbelsynchroniseren ja avatárat
AI-agenttaide: dán siidu Markdowna lea dáppe https://doitong.com/se/developers/models/musetalk.md. Buot modeallat ja ráđit: https://doitong.com/developers/llms.txt