Personaplex
ᠵᡠᠸᡝᠪᡠᠮᠪᡳ
personaplex
# 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/personaplex?wait=20" \
-H "Authorization: Bearer $DOITONG_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"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/personaplex?wait=20", {
method: "POST",
headers,
body: JSON.stringify({
"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 = {
"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/personaplex", 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/mnc/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": "personaplex",
"input": {
"audio": "https://content.doitong.com/audio/showcase/v3/tools/dub_es.mp3"
}
}
Personaplex ᠮᠣᠳᡝᠯ (personaplex) ᠪᡝ Doitong API ᠵᠠᠯᡳᠨᡩᡝ ᠠᠰᡠᠮᠪᡳ. ᠠᡤᡝᠨᡨᡳ ᡩᠠᡳᠯᠠᠨ: https://doitong.com/mnc/developers/models/personaplex.md
POST https://api.doitong.com/v1/run/personaplex?wait=20
Authorization: Bearer $DOITONG_API_KEY
Content-Type: application/json
{
"audio": "https://content.doitong.com/audio/showcase/v3/tools/dub_es.mp3"
}
ᡝᡵᡝᠮᡝ ᠪᡠᠮᡝᠨᡳ ᠠᠨᠠᠮᡝ "queued" ᡳᠨᡠ "running" ᠪᡝ, GET https://api.doitong.com/v1/requests/REQUEST_ID?wait=20 ᠪᡝ ᠠᠨᠠᠮᡝ "succeeded" ᠪᡝᠴᡳ ᠠᠰᡠᠮᠪᡳ; ᡶᡳᠯᡝ ᠪᡝ outputs[].url ᠪᡝᠴᡳ ᠣᠨᡩᠣᠮᡝ. POST https://api.doitong.com/v1/quote/personaplex ᠪᡝ ᡝᠮᡠ ᠪᡠᠶᡝᠮᡝ ᠪᡝ ᠠᠰᡠᠮᠪᡳᡩᡝ ᠵᠠᠯᡤᠠᠨ ᠪᡝ ᠶᠠᠪᡠᠮᠪᡳ ᠰᡳᠨᡳ ᠠᠮᡤᠠ ᠠᠰᡠᠮᠪᡳ ᠣᠯᡥᠣᠮᡝ.
ᠵᠠᠨᡳ ᡥᠠᠯᠠᠮᠠ ᡥᡡᠯᠠᠨᡳ ᡶᡳᠯᡝ: $0.01 10 API ᠺᠷᡝᡩᡳᠲ ᠰᡳᠨᡳ ᡶᡳᠯᡝ ᠵᠠᠯᡤᠠᠨ ᠠᠰᡠᠮᠪᡳᠨᡳ ᠠᠯᡳᠮᠪᡳ ᡝᡵᡝ ᠵᠠᠯᡳᠨᡩᡝ ᠠᠰᡠᠮᠪᡳ
ᠰᡳᠨᡳ ᠵᠠᠮᡠᠰᡳᠨ API ᠵᡳᡵᡤᠠ. ᡝᠯᡝ ᡝᠨᡩᡝ ᡳᠯᡤᠠᠮᠪᡳ ᡝᡵᡝ ᠮᡠᠨᡩᡝ ᡴᠣᡩᡝ ᡩᠠᠮᡠ ᠮᡝᠨᡩᡝᡵᡝ ᠪᠠᡩᡝᠯᡝᠨ ᠠᠮᡪᡳ ᡳᠨᡠ API ᠵᡳᡵᡤᠠ ᡩᡝᠪᡨᡝᡵᡝ ᡩᡝ ᠠᡴᡠ᠉ ᡳᠨᡠ ᡝᡵᡝᠩᡤᡝ ᠠᠮᠪᠠᠨ ᠮᡠᠨᡩᡝ ᠪᡝ ᠠᠰᡠᡵᠠᠮᠪᡳ: ᠮᡠᡵᡝ ᡩᠠᠮᡠ ᠪᡠᠶᡝᡵᡝ ᠪᠠᡩᡝᠯᡝᠨ ᡩᡝ ᠰᡳᠨᡩᡝᠮᡝ ᠠᠪᡠᠮᡝ ᠰᠠᠮᡪᡳ᠉
ᡳᠨᡝ ᡝᠮᡠᠨᡳᠩᡤᡝ ᡝᡵᡝᠮᡝ ᡩᡝ
ᡝᡵᡝ ᠵᡠᠯᡝᠨ ᡩᡝ ᡤᡝᡪᡳᠯᡝᠨ ᠪᠠᠶᠠᠨᠠᠮᡝ ᠠᠮᡪᠠᠯᠠ ᡶᡳᠯᡝᠮᡝ ᠪᡝᠶᡝᠮᡝ᠃ API ᠵᡳᡵᡤᠠᡳ ᡤᠠᡳᡥᠠᡩᡝ ᡤᡝᡪᡳᠯᡝᠨ ᠵᠠᠯᠠᠨᠠᠮᡝ ᠪᡠᠶᡝᠮᡝ ᠮᡠᠰᡝᡳ ᠰᡠᠯᡠᠨᡩᡝ ᠪᠠᠶᠠᠨᠠᠮᡝ᠂ ᠮᡤᡳ ᠮᡠᠰᡝ ᠠᠶᠠᠨ 7 ᡥᠠᠨ ᠰᠠᡳᠨᠠᠮᡝ᠃
ᡤᡳᠰᡠᠨ ᠪᡠᠶᡝᠮᡝ
ᠵᠠᡴᡠᠨᡳ ᠵᡠᠯᡝ ᡩᡝᡵᡤᡳ ᡩᡝᠪᡝᠰᡠᠮᡝ ᠵᡠᠯᡤᡝ ᠪᡠᠶᡝᠮᡝ᠈ ᡳᠨᡳ ᡤᡳᠰᡠᠨ ᠪᠠᡳ ᡝᠨᡝᠩᡤᡳ ᠠᠮᠪᡳ
/run/personaplex?wait=20
ᠵᠠᠯᡳᠨ → $0.01
# 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/personaplex?wait=20" \
-H "Authorization: Bearer $DOITONG_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"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/personaplex?wait=20", {
method: "POST",
headers,
body: JSON.stringify({
"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 = {
"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/personaplex", 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": "personaplex",
"input": {
"audio": "https://content.doitong.com/audio/showcase/v3/tools/dub_es.mp3"
},
"wait_seconds": 20
}
}
}
ᡝᠨᡳ ᠵᠠᠯᡳᠨ ᠪᡝ ᠵᠠᠯᠠᠨᠠᠮᡝ
ᡳᠨᡝ ᠵᠠᠯᠠᠨ ᡝᡵᡝ ᠪᡠᡵᡝᠪᡝᡵᡳ ᡩᡝ ᠪᡳᠮᡝ᠈ Doitong API ᡩᡝ ᠵᡝᠯᡤᡳ ᡩᠠᡵᠠᠮᡝ᠈ Remember ᠵᡠᠯᡝᠮᡝ ᡤᡳᠯᠠᠮᡝ localStorage ᡩᡝ ᠰᡠᠯᡝᠮᡝ ᠪᡳᠮᡝ API ᠵᠠᠯᠠᠨ ᠠᠪᠠᠮᡝ
Personaplex ᡠᡵᡝᠮᡝ
ᡤᡳᠰᡠᠨ ᡳ ᠠᠮᠠᠯᡤᠠᠨ `audio_url` ᡩᡝᡵᡳ ᠠᠪᡠᠮᠪᡳ, ᠠᠮᡝ ᡝᠮᡠ ᠠᠮᠠᠯᡤᠠᠨ ᡳ ᡤᡳᠰᡠᠨ ᠠᠮᡝ ᠪᠠᠨᠵᡳᡥᠠ ᡳ ᡩᡠᠷᡠᠨ ᠪᡝ ᡩᡝᠯᡤᡳ ᡤᠠᠷᡤᠠᠮᠪᡳ. ᡤᡳᠰᡠᠨ ᡳ `prompt` ᠪᡝ ᡩᡝᠯᡤᡳ ᡩᡝᠯᡝᠮᠪᡳ, ᠠᠮᡝ `voice` ᡩᡝᡵᡳ ᡝᠮᡠ ᠵᠠᠯᡠᠪᡠᠮᠪᡳ. ᡳᠨᡠ ᠪᡝ `voice_audio_url` ᡩᡝᡵᡳ ᠵᠠᠯᡠᠪᡠᠮᠪᡳ; 10 ᠰᡝᡵᡤᡳ ᠠᠮᡝ ᡩᡝᡵᡳ ᠰᠠᠶᠠᠨ ᠠᠮᠠᠯᡤᠠᠨ ᠰᡠᠯᡥᡝ ᠪᡳ. temperature ᠠᠮᡝ top-k ᡩᡝᡵᡳ ᠵᠠᠰᡳᠮᠪᡳ.
ᠵᠠᡴᡠᠨ
ᠵᠠᡴᡠᠨᡳ ᡤᡳᠰᡠᠨ ᠵᡝᠯᡤᡳ ᠠᠪᠠᠮᠪᡳ᠈ ᠨᡝᠮᡝ ᠮᡠᠰᡝ ᡠᠯᠠᠮᠪᡳ ᠵᠠᡴᡠᠨᡳ ᡤᡳᠰᡠᠨ
promptᠵᡠᠯᡝ
voiceᠵᡠᠯᡝ
+2 ᡝᠨᡝ
VARM3VARM4voice_audio_urlᠵᡠᠯᡝ
temperature_audioᠵᡠᠯᡝ
temperature_textᠵᡠᠯᡝ
top_k_audioᠵᡠᠯᡝ
top_k_textᠵᡠᠯᡝ
seedᠵᡠᠯᡝ
audio_urlᡴᠠᠷᠠᡴᡡ
audio
enable_safety_checkerᠵᡠᠯᡝ
ᠪᡠᠮᠪᡳᠯᡝᠰᡝ ᡝᠮᡠ ᡤᡝᠮᡠᠨᡳ https:// URL᠈ 10 MB ᡩᡝ ᡩᡝᠷᡤᡳ data: URI ᠵᡝᡵᡤᡳ ᡝᠮᡝ᠈ ᡳᠨᡝ ᠪᡠᠮᠪᡳᠯᡝᠰᡝᠨᡳ file_url ᠠᠪᠠᠮᠪᡳ ᠪᡠᠮᠪᡳ
ᠪᡠᠶᡝᠮᡝ
{
"id": "req_8k2m4q7x1z9c3v5b6n0p2r4t",
"object": "request",
"model": "personaplex",
"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": 10,
"usd": "0.01",
"charged": 10,
"refunded": 0
},
"input": {
"audio_url": "https://content.doitong.com/audio/showcase/v3/tools/dub_es.mp3"
},
"output": {
"audio": {
"url": "https://content.doitong.com/dev-api/2026/10/20/req_8k2m4q7x1z9c3v5b6n0p2r4t/0-output.mp3",
"content_type": "audio/mpeg",
"file_name": "0-output.mp3",
"file_size": 1843200
},
"text": " Thank you for calling SwiftPlex Appliances. This is Farhod, how can I help you today? I understand your concern. The replacement part is out of stock, so we can't ship it right away. We can use an alternative part that will arrive in 3 days. Would you like to proceed with that?",
"duration": 5,
"seed": 42
},
"outputs": [
{
"type": "audio",
"url": "https://content.doitong.com/dev-api/2026/10/20/req_8k2m4q7x1z9c3v5b6n0p2r4t/0-output.mp3",
"content_type": "audio/mpeg",
"file_size": 1843200,
"duration": 12,
"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"
}
}
ᠪᡠᠶᡝᠮᡝᠨᡳ ᡤᡳᠰᡠᠨ
- audio
- object {url, content_type, file_name, file_size}AI ᡳ ᠪᡠᠶᠠᠮᡝ ᠪᡠᠮᡝ ᡳ ᡤᡳᠰᡠᠨ WAV ᠵᡠᠰᡠ 24 kHz᠉
- text
- stringAI ᡳ ᠵᠠᠰᡳᡴᠠᠩᡤᡝ ᠵᡠᠯᡝ ᠵᡠᠰᡠᠯᠠᠮᡝ᠉
- duration
- numberᠪᡠᠶᠠᠮᡝ ᡳ ᡤᡳᠰᡠᠨ ᡳ ᠵᠠᠯᠠᠨ, ᠰᡝᡴᡠᠨᡩ ᡩᡝ ᠵᠠᠯᠠᠨ᠉
- seed
- integerᠪᡠᠶᡝᠮᡝ ᡩᡝ ᠶᠠᠪᡠᡥᠠᠨ ᠪᠠᠨᠵᡳᠨᠠᠮᡝ᠉
ᡝᠯᡤᡳ Personaplex ᡠᠯᡤᡳᠨ
ᡝᠯᡤᡳ ᡩᠠᠯᡳᠨ: ᡤᡳᠰᡠᠨ ᡳ ᠪᠠᡳ᠌ᠯᠠᠩᡤᠠ
AI ᠠᡤᡝᠨᡨᡳ ᡠᠴᡠᠷᡳ᠈ ᡝᡵᡝ ᡩᡝᠪᡝᡵᡳ Markdown ᠰᡳᠨᡩᠠᡵᡳ https://doitong.com/mnc/developers/models/personaplex.md. ᡝᡵᡝ ᠮᠣᡩᡝᠯ ᠵᠠᡴᡠᠨ ᠰᡠᠯᡠᠮᡝ https://doitong.com/developers/llms.txt