MuseTalk
Integrer
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/no/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"
}
}
Kall MuseTalk-modellen (musetalk) gjennom Doitong API. Dokumentasjon for agenter: https://doitong.com/no/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"
}
Hvis responsstatusen er "queued" eller "running", send GET https://api.doitong.com/v1/requests/REQUEST_ID?wait=20-forespørsler til den er "succeeded"; filene ligger i outputs[].url. POST https://api.doitong.com/v1/quote/musetalk med samme innhold returnerer den nøyaktige prisen før kjøringen.
Opptil 4,50 $ per kjøring belastes etter faktisk bruk, resten tilbakebetales Kjør den på denne siden
Din nye API-nøkkel. Den vises bare nå og er allerede satt inn i koden og i API-nøkkelfeltet nedenfor. Hold den hemmelig: Legg den aldri i kode som kjører i en nettleser.
Det første resultatet ditt kommer her
Bygg en forespørsel nedenfor og kjør den med API-nøkkelen din. Utdata kopieres til lagringen vår, lagret for alltid eller 7 dager gratis.
Bygg en forespørsel
Kontrollene genereres fra modellskjemaet. Koden og prisen oppdateres når du endrer dem.
/run/musetalk?wait=20
pris → 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
}
}
}
Kjør denne forespørselen
Nøkkelen din blir i denne nettleseren: Den sendes bare til Doitong API og lagres bare i localStorage hvis du krysser av for Husk. Hent en API-nøkkel
Om MuseTalk
Tar imot `source_video_url` og `audio_url` og returnerer en video der munnbevegelsene følger lyden. Den trenger bare disse to inndataene og egner seg til dubbing eller animering av en taler med eget opptak.
Parametere
Send enten det kanoniske navnet eller det opprinnelige navnet, ikke begge. Kanoniske navn
source_video_urlobligatorisk
audio_urlobligatorisk
audio
Filparametere tar imot en offentlig https:// URL, en data: URI på opptil 10 MB eller file_url fra en opplasting. Filer
Utdata
{
"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"
}
}
Utdatafelt
- video
- object {url, content_type, file_name, file_size}Videofil produsert av genereringen.
Flere modeller: Leppesynkronisering og avatarer
For AI-agenter: Denne siden som Markdown finnes på https://doitong.com/no/developers/models/musetalk.md. Alle modeller og veiledninger: https://doitong.com/developers/llms.txt