Video · Erase · Keypoints
التكامل
bria/video/erase/keypoints
# 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/bria/video/erase/keypoints?wait=20" \
-H "Authorization: Bearer $DOITONG_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"keypoints": [
"{'\''x'\'': 765, '\''y'\'': 344, '\''type'\'': '\''positive'\''}",
"{'\''x'\'': 200, '\''y'\'': 200, '\''type'\'': '\''negative'\''}"
],
"video": "https://content.doitong.com/video/showcase/v3/gen_fox_cartoon.mp4"
}'
# 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/bria/video/erase/keypoints?wait=20", {
method: "POST",
headers,
body: JSON.stringify({
"keypoints": [
"{'x': 765, 'y': 344, 'type': 'positive'}",
"{'x': 200, 'y': 200, 'type': 'negative'}"
],
"video": "https://content.doitong.com/video/showcase/v3/gen_fox_cartoon.mp4"
}),
});
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 = {
"keypoints": [
"{'x': 765, 'y': 344, 'type': 'positive'}",
"{'x': 200, 'y': 200, 'type': 'negative'}",
],
"video": "https://content.doitong.com/video/showcase/v3/gen_fox_cartoon.mp4",
}
# Run the model; wait up to 20 s for the finished result in the same call
r = requests.post(API + "/run/bria/video/erase/keypoints", 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/ar/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": "bria/video/erase/keypoints",
"input": {
"keypoints": [
"{'x': 765, 'y': 344, 'type': 'positive'}",
"{'x': 200, 'y': 200, 'type': 'negative'}"
],
"video": "https://content.doitong.com/video/showcase/v3/gen_fox_cartoon.mp4"
}
}
استدعِ نموذج Video · Erase · Keypoints (bria/video/erase/keypoints) عبر Doitong API. توثيق الوكلاء: https://doitong.com/ar/developers/models/bria/video/erase/keypoints.md
POST https://api.doitong.com/v1/run/bria/video/erase/keypoints?wait=20
Authorization: Bearer $DOITONG_API_KEY
Content-Type: application/json
{
"keypoints": [
"{'x': 765, 'y': 344, 'type': 'positive'}",
"{'x': 200, 'y': 200, 'type': 'negative'}"
],
"video": "https://content.doitong.com/video/showcase/v3/gen_fox_cartoon.mp4"
}
إذا كانت حالة الاستجابة "queued" أو "running"، فأرسل طلبات GET إلى https://api.doitong.com/v1/requests/REQUEST_ID?wait=20 حتى تصبح "succeeded"؛ توجد الملفات في outputs[].url. يعيد POST https://api.doitong.com/v1/quote/bria/video/erase/keypoints مع نفس النص الأساسي السعر الدقيق قبل التشغيل.
ملفات مثل المثال: 0.70 $ 700 رصيد API تُقاس ملفاتك قبل التشغيل تشغيله في هذه الصفحة
مفتاح API الجديد الخاص بك. يظهر الآن فقط، وهو مُدرج بالفعل في الشيفرة وفي حقل مفتاح API أدناه. احتفظ به سريًا: لا تضعه أبدًا في شيفرة تعمل في المتصفح.
ستظهر نتيجتك الأولى هنا
أنشئ طلبًا أدناه وشغّله باستخدام مفتاح API الخاص بك. تُنسخ المخرجات إلى تخزيننا، وتُحفظ إلى الأبد أو لمدة 7 أيام مجانًا.
إنشاء طلب
تُنشأ عناصر التحكم من مخطط النموذج. يتحدّث الرمز والسعر عند تغييرها.
/run/bria/video/erase/keypoints?wait=20
عرض السعر → 0.70 $
# 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/bria/video/erase/keypoints?wait=20" \
-H "Authorization: Bearer $DOITONG_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"keypoints": [
"{'\''x'\'': 765, '\''y'\'': 344, '\''type'\'': '\''positive'\''}",
"{'\''x'\'': 200, '\''y'\'': 200, '\''type'\'': '\''negative'\''}"
],
"video": "https://content.doitong.com/video/showcase/v3/gen_fox_cartoon.mp4"
}'
# 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/bria/video/erase/keypoints?wait=20", {
method: "POST",
headers,
body: JSON.stringify({
"keypoints": [
"{'x': 765, 'y': 344, 'type': 'positive'}",
"{'x': 200, 'y': 200, 'type': 'negative'}"
],
"video": "https://content.doitong.com/video/showcase/v3/gen_fox_cartoon.mp4"
}),
});
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 = {
"keypoints": [
"{'x': 765, 'y': 344, 'type': 'positive'}",
"{'x': 200, 'y': 200, 'type': 'negative'}",
],
"video": "https://content.doitong.com/video/showcase/v3/gen_fox_cartoon.mp4",
}
# Run the model; wait up to 20 s for the finished result in the same call
r = requests.post(API + "/run/bria/video/erase/keypoints", 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": "bria/video/erase/keypoints",
"input": {
"keypoints": [
"{'x': 765, 'y': 344, 'type': 'positive'}",
"{'x': 200, 'y': 200, 'type': 'negative'}"
],
"video": "https://content.doitong.com/video/showcase/v3/gen_fox_cartoon.mp4"
},
"wait_seconds": 20
}
}
}
تشغيل هذا الطلب
يبقى مفتاحك في هذا المتصفح: لا يُرسل إلا إلى Doitong API ويُحفظ في localStorage فقط إذا فعّلت خيار التذكّر. الحصول على مفتاح API
حول Video · Erase · Keypoints
يزيل عنصرًا من فيديو، مع تحديد الهدف عبر قائمة `keypoints` مقدمة كنقاط x/y موسومة بالموجب أو السالب. يجب أن يكون الفيديو المدخل أقصر من 5 ثوانٍ، ويقص `auto_trim` المقاطع الأطول إلى مدة المعالجة. يمكن اختيار الإخراج من بين إحدى عشرة حاوية وترميزًا، والقيمة الافتراضية mp4_h264، ويحافظ `preserve_audio` على الصوت.
المعاملات
أرسل الاسم الأساسي أو الاسم الأصلي، وليس كليهما. الأسماء الأساسية
output_container_and_codecاختياري
auto_trimاختياري
preserve_audioاختياري
keypointsمطلوب
video_urlمطلوب
video
تقبل معاملات الملفات عنوان URL عامًا يبدأ بـ https://، أو URI من نوع data: يصل حجمه إلى 10 MB، أو file_url لملف تم تحميله. الملفات
المخرجات
{
"id": "req_8k2m4q7x1z9c3v5b6n0p2r4t",
"object": "request",
"model": "bria/video/erase/keypoints",
"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": 700,
"usd": "0.70",
"charged": 700,
"refunded": 0
},
"input": {
"keypoints": [
"{'x': 765, 'y': 344, 'type': 'positive'}",
"{'x': 200, 'y': 200, 'type': 'negative'}"
],
"video_url": "https://content.doitong.com/video/showcase/v3/gen_fox_cartoon.mp4"
},
"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"
}
}
حقول المخرجات
- video
- object {url, content_type, file_name, file_size}الفيديو الناتج.
أنواع Bria الأخرى
مزيد من النماذج: من فيديو إلى فيديو
لوكلاء الذكاء الاصطناعي: تتوفر هذه الصفحة بصيغة Markdown على https://doitong.com/ar/developers/models/bria/video/erase/keypoints.md. جميع النماذج والأدلة: https://doitong.com/developers/llms.txt