قاعدة المعرفة المطورين
الصور والفيديو والملصقات
المطورين من التطبيق، والخلفيات البناءة للبحث: الصور، الفيديو، الكلمة، الترجمة، والتدخلات، كلها محددة لكل استخدام من حسابك.
تمت ترجمة هذه الصفحة آليًا من أجل الراحة. النسخة الأصلية الإنجليزية هي النسخة التي تنطبق.
إنتاج الصور
يجعل من أربعة إلى أربعة صور من إرسال وإرسالها عند الانتهاء. ?image في التطبيق
POST https://nymbot.ai/api/v1/images/generations - تحتاج إلى مفتاح API، أو تكلفة Lightning على الطلب.
Ids تأتي من GET /api/v1/models?type=imageوالجنرال القياسي ،
@cf/black-forest-labs/flux-1-schnell، تكلفة 5 اعتبارات معيّنة (50 تريليون دولار) لكل صورة. كل منتج آخر يكلف بطاقات Pro على سعرها الخاص، مع التكاليف المعتادة والميزانية، كما في التطبيق. n صور تكلفة
n يتم إلغاء المجال الذي لا يستخدمه الجيل القادم بدلاً من إلغاءه؛ يستخدم الجيل القادم فقط الإشارة.
| الفضاء | نوع | المطلوب | وصف |
|---|---|---|---|
model | String | نعم | إدخال هاتف ذكي، مثل nano-banana. |
prompt | String | نعم | ماذا تفعل؟ تستخدم فقط أول 2000 شخصية. |
n | النسيج | لا | 1 إلى 4.مفتاح 1 أيضًا معترف به num_images. |
size | String | لا | مثل هذه النقطة النسبية مثل "16:9"أو على سبيل المثال، على سبيل المثال: "1792x1024", الذي يصبح أقرب من 1:1, 16:9, 9:16, 4:3, 3:4, 3:2, 2:3, 21:9, 5:4 و 4:5. "auto" قم بإرسالها إلى الجيل القادم. |
aspect_ratio | String | لا | نفس الشيء كما sizeويحقق الفوز إذا تم إرسال كل منهما. |
quality | String | لا | الجيل القادم ، مثل "low", "medium" أو "high". |
negative_prompt | String | لا | ماذا ينبغي أن نتركه |
output_format | String | لا | "png", "jpeg" أو "webp". |
response_format | String | لا | "url" (الخطأ) أو "b64_json". |
image_url | String | لا | صورة للبدء من: A https:// رابط من 4096 علامة دون اسم المستخدم أو كلمة المرور في ذلك، أو data:image/…;base64 URL (PNG، JPEG، WebP أو GIF، وليس SVG). editويجب أن يطلب من أولئك الذين requires_image_url. |
resolution لا يتم استخدامها: كل إنتاج يخلق حجمها الخاص. url، يتم تحميل كل صورة إلى مستودع Blossom عام ويحصل عليك على الرابط الخاص بك (ولكن بعض المطورين يقدمون فقط الرابط الخاص بهم ، والتي يتم إرسالها). ماذا يمكن رؤية النارمع
b64_json يعود الصورة في الاستجابة ولا يتم تحميلها أبدا. data: URL في image_url يتم التحقق من نفس الطريقة التي
EDIT يتم تحميلها إلى Blossom أولاً حتى يمكن للجنرال إرسالها؛ يتم حذفها مرة أخرى إذا لم يتم إلغاء الطلب.
إذا كان بعض من n الصور تسبب فشل ، يمكنك الحصول على تلك التي عملت ، يتم تكلفة فقط لأولئك (مزيد من أي من المورد المدفوع على الرغم من الفشل) ، و nymbot.failed يظهر كم عدد المفقودين.إذا فشلت جميع الطلبات 502.
الإجابة
{
"created": 1790726400,
"model": "nano-banana",
"cost": 0.2126,
"data": [
{
"url": "https://blossom.example/5c0e4b7d3a91f2e8...c4.png",
"content_type": "image/png"
}
],
"nymbot": { "balance": "pro", "charged_credits": 1.817, "charged_sats": 181.7, "balance_credits": 410.608, "balance_sats": 41060.8 }
}
| الوضع | عندما |
|---|---|
400 | لا بسرعة n من 1 إلى 4 (invalid_value(أمّا الرؤيا الصالحة فهي الرؤيا الصالحة)invalid_size) أو صورة (invalid_image, invalid_image_url)؛ نموذج موجود ولكن ليس إنتاج الصورة (invalid_model)؛ صورة للجنرال الذي لا يستطيع التعديل (edit_unsupported(لا يوجد صورة لأحد يحتاج إلى ذلك)image_required). |
402 | لا يستطيع التوازن تغطية كل الصور المطلوبة. |
404 | لا يوجد نموذج مع هذا الاسم (model_not_found). |
502 | الهواتف الذكية لم تكن متاحة (upstream_errorلا يُقدّم أيّ شيء سوى ما لم يُقدّم على المشتري، ثمّ يُقدّم الخطأ. charged_sats. |
503 | لا يمكن تحميل الصور في الوقت الحالي (media_hosting_unavailable). b64_json لا تزال تعمل |
cURL
curl https://nymbot.ai/api/v1/images/generations \
-H "Authorization: Bearer $NYMBOT_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "nano-banana",
"prompt": "A lighthouse at dusk, oil painting",
"size": "16:9"
}'
Python
import os
import requests
res = requests.post(
"https://nymbot.ai/api/v1/images/generations",
headers={"Authorization": "Bearer " + os.environ["NYMBOT_API_KEY"]},
json={"model": "nano-banana", "prompt": "A lighthouse at dusk, oil painting", "size": "16:9"},
)
res.raise_for_status()
print(res.json()["data"][0]["url"])
JavaScript
const res = await fetch("https://nymbot.ai/api/v1/images/generations", {
method: "POST",
headers: {
"Authorization": "Bearer " + process.env.NYMBOT_API_KEY,
"Content-Type": "application/json",
},
body: JSON.stringify({ model: "nano-banana", prompt: "A lighthouse at dusk, oil painting", size: "16:9" }),
});
const body = await res.json();
console.log(body.data[0].url);
كتابة الصور
يغير الصورة التي ترسلها ، استناداً إلى سؤال.هذا هو نقطة الانتهاء في تحرير OpenAI ، لذلك OpenAI SDKs images.edit يعمل كما هو الحال. فقط منتجات Pro مع edit في قائمة النماذج اتفق على ذلك.
POST https://nymbot.ai/api/v1/images/edits - تحتاج إلى مفتاح API، أو تكلفة Lightning على الطلبإن الجسد هو multipart/form-dataما يصل إلى 32 MB
| الفضاء | نوع | المطلوب | وصف |
|---|---|---|---|
image | الملف | نعم | الصورة المعدلة: PNG، JPEG، WebP أو GIF، ما يصل إلى 20 ميجابايت. image[]• يتم استخدامه الأول. |
prompt | String | نعم | ماذا تتغير |
model | String | نعم | جيرارد مع edit. |
n | النسيج | لا | 1 إلى 4 |
sizeaspect_ratioqualitynegative_promptoutput_format | String | لا | ماذا عن الجيل |
response_format | String | لا | "b64_json" (الخلفية هنا) أو "url". |
يتم التحقق من أن الصورة التي يتم تحميلها هي PNG، JPEG، WebP، أو GIF التي تم تشكيلها بشكل جيد، يتم إرسالها كواحدة حقيقية، ويضعها على مستودع Blossom عام، لأنه يتم إرسالها من خلال الرابط.
الإجابة
{
"created": 1790726460,
"model": "nano-banana",
"cost": 0.2126,
"data": [{ "b64_json": "iVBORw0KGgoAAAANSUhEUgAA..." }],
"nymbot": { "balance": "pro", "charged_credits": 1.817, "charged_sats": 181.7, "balance_credits": 408.791, "balance_sats": 40879.1 }
}
| الوضع | عندما |
|---|---|
400 | لا صورة أو إشارة ، ملف لا صورة (invalid_image) أو إنتاج لا يمكن إعداده (edit_unsupported). |
413 | الصورة أكثر من 20 MB (file_too_large) أو كل طلب أكثر من 32 MB. |
503 | لا يمكن تحميل الصورة في الوقت الحالي (media_hosting_unavailable). |
cURL
curl https://nymbot.ai/api/v1/images/edits \
-H "Authorization: Bearer $NYMBOT_API_KEY" \
-F model=nano-banana \
-F [email protected] \
-F prompt="Make it a snowy evening"
Python
import base64, os
from openai import OpenAI
client = OpenAI(base_url="https://nymbot.ai/api/v1", api_key=os.environ["NYMBOT_API_KEY"])
with open("photo.png", "rb") as f:
result = client.images.edit(model="nano-banana", image=f, prompt="Make it a snowy evening")
with open("edited.png", "wb") as out:
out.write(base64.b64decode(result.data[0].b64_json))
JavaScript
import fs from "node:fs";
import { writeFile } from "node:fs/promises";
import OpenAI from "openai";
const client = new OpenAI({ baseURL: "https://nymbot.ai/api/v1", apiKey: process.env.NYMBOT_API_KEY });
const result = await client.images.edit({
model: "nano-banana",
image: fs.createReadStream("photo.png"),
prompt: "Make it a snowy evening",
});
await writeFile("edited.png", Buffer.from(result.data[0].b64_json, "base64"));
فيديو
يستغرق الفيديو دقائق ، لذلك يتم تشغيلها في الخلفية. يمكنك إرسالها ، تحصل على ID على الفور ، وتسأل عن ID حتى يتم الانتهاء.
POST https://nymbot.ai/api/v1/videos - تحتاج إلى مفتاح API، أو تكلفة Lightning على الطلبالعودة 202.
| الفضاء | نوع | المطلوب | وصف |
|---|---|---|---|
model | String | نعم | إدخال إدخال الفيديو من GET /api/v1/models?type=videoمثل مثل veo. |
prompt | String | نعم | ما يجب أن يحدث. |
duration | الرقم أو الشريط | لا | طول في ثوانٍ، أكثر من 0 وحتى 60. تستخدم فقط من قبل المطورين التي تسمح لك أن تختار الطول؛ الآخرين جعل طولها المعتاد، وهذا هو ما seconds في الإجابة والسعر تتبع. |
aspect_ratio | String | لا | مثل "16:9" أو "9:16"وهكذا حجم مثل "1280x720" يصبح الأقرب إلى العلاقة. |
resolutionquality | String | لا | واحدة من الجيل الأول من الجيل resolutions في القائمة، مثل "720p" أو "1080p"يحدد السعر.كل شيء آخر يرفضه unsupported_resolution. |
image_url | String | لا | صورة للبدء من: A https:// الرابط أو a data:image/… URL ، الذي يتم تحميله أولاً إلى مستودع Blossom عام. requires_image_url. |
السعر هو ثابت عند إرسالها، من الناقل، والتصنيف، والطول، لذلك يتم دفعها من توازن Pro الخاص بك بمجرد قبول المورد العمل، وتشير إلى
cost, estimated_cost و nymbotإذا رفضت الموردة العمل، فلا تتحمل أي رسوم.إذا فشل الإصدار بعد ذلك، أو لا يمكن تخزين النسخة المكتوبة، ولا يتم إيداعها من قبل المورد، يتم استرداد الرسوم مرة واحدة، تلقائيًا.توقف الإصدار الذي لا يزال موجودًا بعد ساعة، ويحافظ على رسومه، لأن المورد يقوم بإيداع الرسوم مرة واحدة عندما يتم قبولها.تعويض يعود إلى الائتمان ولكن لا يقلل من عدد النفقات في المفتاح.
الإجابة (202)
{
"id": "vid_3e9a51c07b2f4d86e0a1c4f2",
"object": "video",
"model": "veo",
"status": "in_progress",
"created": 1790726400,
"seconds": 8,
"resolution": "1080p",
"estimated_cost": 3.18,
"expires_at": 1790812800,
"cost": 3.18,
"nymbot": { "balance": "pro", "charged_credits": 31.8, "charged_sats": 3180, "balance_credits": 378.808, "balance_sats": 37880.8 }
}
status بدءًا من in_progressأو أو completed فيديوهات بالفعل في data عندما يعود الزرع على الفور.
التحقق من فيديو
GET https://nymbot.ai/api/v1/videos/{id} - يحتاج إلى مفتاح يتميّز به نيم الذي قدمه. - مفتاح يصل إلى حدّه لا يزال يمكن التحقق منه.
إنه يجيب 202 عندما يتم إنشاء الفيديو و 200 بعد أن تم الانتهاء أو لم يتحقق. طلب كل 5 إلى 10 ثانية. كل التحقق يطلب من المورد مرة واحدة ويجيب على الفور؛ لا تنتظر حتى الفيديو. يتم الحفاظ على وظيفة لمدة 24 ساعة بعد تقديمها.
GET /api/v1/videos يحدد آخر 50 وظيفة من المفتاح
{"object": "list", "data": […]}.
ردود الفعل (200)
{
"id": "vid_3e9a51c07b2f4d86e0a1c4f2",
"object": "video",
"model": "veo",
"status": "completed",
"created": 1790726400,
"seconds": 8,
"resolution": "1080p",
"estimated_cost": 3.18,
"expires_at": 1790812800,
"completed_at": 1790726590,
"data": { "url": "https://blossom.example/9b41d0c2e7a3f658...1e.mp4", "content_type": "video/mp4" },
"cost": 3.18,
"nymbot": { "balance": "pro", "charged_credits": 31.8, "charged_sats": 3180 }
}
status هي in_progress, completed أو failedوظيفة ناجحة تنتجها error ({"code": "generation_failed", "message": …}(وإذا كان كذلك، فليس من حقه أن يعود إليه) . cost 0 و nymbot إضافات
refunded_credits و refunded_satsيتم إنشاء الفيديو المكتوب على منصة Blossom عامة ، مثل الصور التي تم إنشاؤها.
| الوضع | عندما |
|---|---|
400 | 0 0 0 0 0 0 0 0 0 (invalid_value)؛ لا توفر حلًا للجنرال (unsupported_resolution) ؛ لا يوجد صورة للجنرال الذي يحتاج إلى واحد (image_required) ؛ نموذج ليس إنتاج الفيديو (invalid_model). |
402 | لا يستطيع التوازن Pro تغطية الفيديو. |
404 | لا يوجد مثل هذا النوع من (model_not_found)، أو لا عمل من قبل هذا النوع من الأدلة على نسيجك، أو هو أكثر من 24 ساعة (video_not_found). |
429 | فيديوهات متعلقة بـ 10 أشرطة (video_jobs_limit) تحقق منها وتقديم المزيد مرة واحدة ينتهي. |
502 | يرفض الكرملين العمل، ولا يتم دفع أي شيء إلا إذا كان المورد يتلقى رسوم له. |
503 | فيديوهات لا يمكن تقديمها أو تخزينها في الوقت الحالي (media_hosting_unavailable, service_unavailable). |
cURL
curl https://nymbot.ai/api/v1/videos \
-H "Authorization: Bearer $NYMBOT_API_KEY" \
-H "Content-Type: application/json" \
-d '{"model": "veo", "prompt": "Waves rolling onto a beach at sunrise", "duration": 8, "aspect_ratio": "16:9"}'
curl https://nymbot.ai/api/v1/videos/vid_3e9a51c07b2f4d86 \
-H "Authorization: Bearer $NYMBOT_API_KEY"
Python
import os, time
import requests
headers = {"Authorization": "Bearer " + os.environ["NYMBOT_API_KEY"]}
job = requests.post(
"https://nymbot.ai/api/v1/videos",
headers=headers,
json={"model": "veo", "prompt": "Waves rolling onto a beach at sunrise", "duration": 8, "aspect_ratio": "16:9"},
).json()
while True:
time.sleep(8)
status = requests.get("https://nymbot.ai/api/v1/videos/" + job["id"], headers=headers).json()
if status["status"] in ("completed", "failed"):
break
print(status["data"]["url"] if status["status"] == "completed" else status["error"])
JavaScript
const headers = {
"Authorization": "Bearer " + process.env.NYMBOT_API_KEY,
"Content-Type": "application/json",
};
const job = await (await fetch("https://nymbot.ai/api/v1/videos", {
method: "POST",
headers,
body: JSON.stringify({ model: "veo", prompt: "Waves rolling onto a beach at sunrise", duration: 8, aspect_ratio: "16:9" }),
})).json();
let status;
do {
await new Promise((r) => setTimeout(r, 8000));
status = await (await fetch("https://nymbot.ai/api/v1/videos/" + job.id, { headers })).json();
} while (status.status !== "completed" && status.status !== "failed");
console.log(status.status === "completed" ? status.data.url : status.error);
رسالة إلى الكلام
يقرأ النص بصوت عالٍ ويعود ملف الصوت نفسه، وليس الرابط. audio.speech.create في OpenAI SDKs يعمل.
POST https://nymbot.ai/api/v1/audio/speech - تحتاج إلى مفتاح API، أو تكلفة Lightning على الطلب.
| الفضاء | نوع | المطلوب | وصف |
|---|---|---|---|
model | String | لا | نموذج الكلام من قائمة النماذج الصوتيةالفوركس: الصوت المعتاد، @cf/myshell-ai/melotts. aura-2 فيديو Deepgram Aura 2 |
input | String | نعم | النص المقرر قراءته: ما يصل إلى 800 علامة للصوت المعتاد، 2000 لآرا 2. |
voice | String | لا | إدعاء صوت من قائمة الصوت: موسيقى أوربا مثل luna (أو aura-2-luna-en) أو لغات MeloTTS (en, es, fr, zh) OpenAI أسماء صوتية مثل alloy يتم قبولها وإعطاء صوت نموذج. |
language | String | لا | كود لغة مثل esإذا لم يكن هناك صوت، فإنه يختار لغة أخرى. 422 voice_language_mismatchواللغة التي لا يوجد لها صوت 422 unsupported_language. |
response_format | String | لا | الصوت المعتاد يعود mp3 Aura 2 يعود mp3 (الإيمان باليوم الآخر) opus, aac, flac, wav أو pcm. |
speed | رقم | لا | يتم قبولها وتجاهلها. |
الكلمة القياسية تكلفة 3 اعتبارات القياسية (30 سعر) لكل طلب ، كما في التطبيق. Aura 2 هو Pro ، وهو تكلفة بواسطة العناوين التي ترسلها.
Content-Type• التكلفة هي في X-Nymbot-Cost-Sats إذا فشل نموذج الكلام، لا يتم دفع أي شيء.
الإجابة
HTTP/1.1 200 OK
Content-Type: audio/mpeg
X-Nymbot-Cost-Sats: 4.2
X-Nymbot-Balance-Sats: 41055.6
(audio bytes)
| الوضع | عندما |
|---|---|
400 | لا يوجد إشارات؛ الإشارات فوق الحد الأدنى من النموذج (input_too_long)؛ فكل نموذج لا يستطيع إنتاج (unsupported_response_format) ؛ صوت غير معروف (invalid_voice(المعنى الذي لا يختلف عن المعنى الذي لا يختلف)invalid_model). |
422 | لا يتكلم الصوت باللغة المذكورة، أو لا يتكلم النموذج. |
502 | النموذج النموذج النموذج النموذج النموذج النموذج النموذج النموذج |
cURL
curl https://nymbot.ai/api/v1/audio/speech \
-H "Authorization: Bearer $NYMBOT_API_KEY" \
-H "Content-Type: application/json" \
-d '{"model": "aura-2", "voice": "luna", "input": "Your invoice has been paid."}' \
--output speech.mp3
Python
import os
from openai import OpenAI
client = OpenAI(base_url="https://nymbot.ai/api/v1", api_key=os.environ["NYMBOT_API_KEY"])
audio = client.audio.speech.create(
model="aura-2",
voice="luna",
input="Your invoice has been paid.",
)
audio.write_to_file("speech.mp3")
JavaScript
import { writeFile } from "node:fs/promises";
import OpenAI from "openai";
const client = new OpenAI({ baseURL: "https://nymbot.ai/api/v1", apiKey: process.env.NYMBOT_API_KEY });
const audio = await client.audio.speech.create({
model: "aura-2",
voice: "luna",
input: "Your invoice has been paid.",
});
await writeFile("speech.mp3", Buffer.from(await audio.arrayBuffer()));
نموذجات الصوت والأصوات
2 قائمة عامة لتحديد نموذج الكلام و صوت، أو نموذج الترجمة. هناك 41 Aura 2 المتحدثين الإنجليزية و 4 لغات MeloTTS.
GET https://nymbot.ai/api/v1/audio/models لا حاجة إلى مفتاح
GET https://nymbot.ai/api/v1/audio/voices?language=en لا حاجة إلى مفتاح
| الفضاء | نوع | المطلوب | وصف |
|---|---|---|---|
language | أندرويد (Query) | لا | فقط الأصوات لهذا اللغات. |
model | أندرويد (Query) | لا | فقط صورا لهذا النموذج. |
ردود الفعل (صوت)
{
"object": "list",
"data": [
{ "id": "luna", "name": "Luna", "provider": "deepgram", "model_id": "aura-2", "models": ["aura-2"], "language": "en", "description": "Aura 2 English voice", "gender": "female", "preview_url": null },
{ "id": "en", "name": "MeloTTS English", "provider": "myshell", "model_id": "@cf/myshell-ai/melotts", "models": ["@cf/myshell-ai/melotts", "melotts"], "language": "en", "description": "English (MeloTTS)", "gender": null, "preview_url": null }
]
}
قائمة النماذج الإجابة {"object": "list", "data": {"tts": […], "stt": […]}}كل نموذج الكلام يعطي التوازن، والضريبة، max_input_chars,
response_formats, languages و default_voice• يقدم نموذج الترجمة ألبومها، max_file_bytes, max_secondsالمعدات و الأسعار لكل دقيقة.
cURL
curl https://nymbot.ai/api/v1/audio/models
curl "https://nymbot.ai/api/v1/audio/voices?language=en"
Python
import requests
print(requests.get("https://nymbot.ai/api/v1/audio/models").json())
for voice in requests.get("https://nymbot.ai/api/v1/audio/voices", params={"language": "en"}).json()["data"]:
print(voice["id"], voice["model_id"])
JavaScript
console.log(await (await fetch("https://nymbot.ai/api/v1/audio/models")).json());
const voices = await (await fetch("https://nymbot.ai/api/v1/audio/voices?language=en")).json();
for (const v of voices.data) console.log(v.id, v.model_id);
الكلام عن النص
تحويل تسجيل إلى النص مع Whisper.This is OpenAI's transcription endpoint.
audio.transcriptions.create العملية
POST https://nymbot.ai/api/v1/audio/transcriptions - تحتاج إلى مفتاح API، أو تكلفة Lightning على الطلبإن الجسد هو multipart/form-data.
| الفضاء | نوع | المطلوب | وصف |
|---|---|---|---|
file | الملف | نعم | تسجيل، من 256 بوصة إلى 25 ميجابايت وحتى 30 دقيقة: WAV، WebM، MP4 أو M4A، Ogg أو Opus، MP3 وغيرها من المكونات يقرأ. |
model | String | لا | الفساد whisperو هو Whisper Large v3 Turbo. whisper-1, whisper-large-v3-turbo و @cf/openai/whisper-large-v3-turbo يعني نفس الشيء |
language | String | لا | اللغة المكتوبة، مثل enتم اكتشافه إذا تم إغلاقه. |
prompt | String | لا | الكلمات أو الأصوات التي تتوقعها، مثل الاسم فقط تستخدم أول 1000 علامة. |
response_format | String | لا | json (الإيمان باليوم الآخر) text, srt, vtt أو verbose_json. |
بالنسبة إلى الملفات WAV، WebM، MP4 و Ogg، يتم قراءة طول الملف قبل أن يتم تشغيل أي شيء، لذلك يتم رفض تسجيل أكثر من 30 دقيقة في البداية (بفضل 3 ثانية). طول الملفات WAV يأتي من معدل العينات، القنوات والأبعاد العينات. لا يمكن قراءة طول الملفات الأخرى مثل MP3 في البداية، لذلك يتم الحد من حجمها: عند أدنى معدل البيانات Nymbot يفترض أن 8 kbps، 30 دقيقة هو 1.8 MB، و يتم رفض ملف أكبر في مثل هذا النمط. 413
audio_too_long إرسال تسجيلات أطول مثل WAV، WebM، MP4 أو Ogg.إذا تقرأ Whisper أكثر من 30 دقيقة في أي حال، يتم رفض الطلب مع
413 audio_too_longوبمجرد تكرار القذف، يتم شحن 30 دقيقة.
يمكنك دفع طول الصوت، وقطع إلى ثانية: الأطول من طول القراءة من الملف، والطول تقارير الصوت، وأقل حجم الملف يسمح، على سعر الصوت في الدقيقة مع التكاليف المعتادة والحد الأدنى، وأقل من 0.05 رصيد طلب. 402 يقدم ما يحتاجه كل توازن.في التطبيق، قد يكون ترشيد رسالة صوت مجانيًا؛ على API يتم تكلفةها دائمًا.إذا فشل القذف، لا يتم تكلفة أي شيء.
الإجابة
{
"text": "Your invoice has been paid.",
"usage": { "type": "duration", "seconds": 3 },
"nymbot": { "balance": "standard", "charged_credits": 0.05, "charged_sats": 0.5, "balance_credits": 120.35, "balance_sats": 1203.5 }
}
text يعود النص المباشر، srt و vtt العودة إلى القصص، و
verbose_json يضيف اللغة والتوقيت والقطاعات المحددة.لأولئك الذين ليسوا JSON ، فإن التكلفة في العلامات.
| الوضع | عندما |
|---|---|
400 | لا يوجد ملف ، ملف بدون صوتي قابل للاستخدام (invalid_audio(بما أن هذا النوع من النسخ لا يُعرف باسم النسخ أو النسخ الذي لا يُعرف باسم النسخ)invalid_model). |
402 | لا يمكن أن يغطي التوازن. |
413 | الملف هو أكثر من 25 MB (file_too_large(أو أكثر من 30 دقيقة، أو، في شكل لا يمكن قراءته على المدى القصير، أكثر من 1.8 MB)audio_too_long). |
502 | لا يمكن لـ Whisper معالجة الصوت. |
cURL
curl https://nymbot.ai/api/v1/audio/transcriptions \
-H "Authorization: Bearer $NYMBOT_API_KEY" \
-F [email protected] \
-F model=whisper \
-F response_format=json
Python
import os
from openai import OpenAI
client = OpenAI(base_url="https://nymbot.ai/api/v1", api_key=os.environ["NYMBOT_API_KEY"])
with open("memo.m4a", "rb") as f:
transcript = client.audio.transcriptions.create(model="whisper", file=f)
print(transcript.text)
JavaScript
import fs from "node:fs";
import OpenAI from "openai";
const client = new OpenAI({ baseURL: "https://nymbot.ai/api/v1", apiKey: process.env.NYMBOT_API_KEY });
const transcript = await client.audio.transcriptions.create({
model: "whisper",
file: fs.createReadStream("memo.m4a"),
});
console.log(transcript.text);
ترجمة الكلام إلى اللغة الإنجليزية
POST https://nymbot.ai/api/v1/audio/translations - تحتاج إلى مفتاح API، أو تكلفة Lightning على الطلبإن الجسد هو multipart/form-data.
كما هو الحال مع الترجمة ، مع نفس المجالات بالإضافة إلى languageو الحد الأدنى و السعر ، ولكن النص يعود باللغة الإنجليزية بغض النظر عن اللغات التي كانت تتحدث. audio.translations.create.
cURL
curl https://nymbot.ai/api/v1/audio/translations \
-H "Authorization: Bearer $NYMBOT_API_KEY" \
-F [email protected] \
-F model=whisper
Python
import os
from openai import OpenAI
client = OpenAI(base_url="https://nymbot.ai/api/v1", api_key=os.environ["NYMBOT_API_KEY"])
with open("nota.m4a", "rb") as f:
translation = client.audio.translations.create(model="whisper", file=f)
print(translation.text)
JavaScript
import fs from "node:fs";
import OpenAI from "openai";
const client = new OpenAI({ baseURL: "https://nymbot.ai/api/v1", apiKey: process.env.NYMBOT_API_KEY });
const translation = await client.audio.translations.create({
model: "whisper",
file: fs.createReadStream("nota.m4a"),
});
console.log(translation.text);
إبداعات
تحويل النص إلى بطاقات للبحث والتجميع والتناسل، وتشغيل النماذج على Cloudflare وتخزين التوازن القياسي.
POST https://nymbot.ai/api/v1/embeddings - تحتاج إلى مفتاح API، أو تكلفة Lightning على الطلب.
| الفضاء | نوع | المطلوب | وصف |
|---|---|---|---|
model | String | نعم | نموذج إبداعي من GET /api/v1/models?type=embedding. |
input | قوائم أو قوائم من القوائم | نعم | تداول الخيارات الثنائية الخيارات الثنائية الخيارات الثنائية الخيارات الثنائية الخيارات الثنائية الخيارات الثنائية الخيارات الثنائية الخيارات الثنائية الخيارات الثنائية الخيارات الثنائية الخيارات الثنائية الخيارات الثنائية الخيارات الثنائية الخيارات الثنائية الخيارات الثنائية الخيارات الثنائية الخيارات الثنائية الخيارات الثنائية الخيارات الثنائية الخيارات الثنائية الخيارات الثنائية الخيارات الثنائية الخيارات الثنائية الخيارات الثنائية الخيارات الثنائية الخيارات الثنائية الخيارات الثنائية الخيارات الثنائية الخيارات الثنائية الخيارات الثنائية الخيارات الثنائية الخيارات الثنائية الخيارات الثنائية الخيارات الثنائية الخيارات الثنائية الخيارات الثنائية.token_input_unsupportedيجب أن تتوافق كل جزء من النماذج مع النماذج context_lengthويقدر بـ أربعة بطاقات لكل نقطة. |
encoding_format | String | لا | float (الخطأ) أو base64 (الخيارات الثنائية الخيارات الثنائية الخيارات الثنائية). |
dimensions | النسيج | لا | حجم النماذج الخاصة، أو بالنسبة إلى نموذج مع supported_dimensions واحد من هذين النوعين، ثم يتم تقسيم النوعين إلى أدنى مستوي، ثم يتم رفض أي شيء آخر. |
| نموذج | الأبعاد | السياق |
|---|---|---|
@cf/baai/bge-m3 | 1024 لغات كثيرة | 8192 تريليون |
@cf/qwen/qwen3-embedding-0.6b | 1024 لغات كثيرة | 8192 تريليون |
@cf/baai/bge-large-en-v1.5 | 1024 اللغة الإنجليزية | 512 طن |
@cf/baai/bge-base-en-v1.5 | 768, الإنجليزية | 512 طن |
@cf/baai/bge-small-en-v1.5 | 384 اللغة الإنجليزية | 512 طن |
قائمة النماذج هي مصدر الحقيقة حول ما هي متوفرة وكما هي تكلفةها؛ Google EmbeddingGemma، مع مركبات أطول على الطلب، يظهر هناك أيضًا عندما يحتوي الكاتالوني على سعرها.
الإجابة
{
"object": "list",
"data": [
{ "object": "embedding", "index": 0, "embedding": [0.0213, -0.0487, 0.0112] }
],
"model": "@cf/baai/bge-m3",
"usage": { "prompt_tokens": 9, "total_tokens": 9 },
"nymbot": { "balance": "standard", "charged_credits": 0.05, "charged_sats": 0.5, "balance_credits": 1204.35, "balance_sats": 12043.5 }
}
| الوضع | عندما |
|---|---|
400 | لا يوجد إشارات أو إشارات غامضة؛ تقييمات تقييم (token_input_unsupported(أكثر من 100 إشارة)too_many_inputs)؛ إن الدخول أطول من النموذج يستغرق (input_too_long( 1 ) ؛ حجم النموذج الذي لا يمكن أن يقدم (unsupported_dimensions). |
402 | التكلفة القياسية منخفضة جدًا، ولا تستخدم التكلفة المهنية أبدا. |
404 | لا يوجد نموذج مع هذا الاسم. |
502 | النموذج ناجح.لا يوجد أي رسوم. |
cURL
curl https://nymbot.ai/api/v1/embeddings \
-H "Authorization: Bearer $NYMBOT_API_KEY" \
-H "Content-Type: application/json" \
-d '{"model": "@cf/baai/bge-m3", "input": ["Lightning invoices expire.", "Invoices on Lightning have a time limit."]}'
Python
import os
from openai import OpenAI
client = OpenAI(base_url="https://nymbot.ai/api/v1", api_key=os.environ["NYMBOT_API_KEY"])
result = client.embeddings.create(
model="@cf/baai/bge-m3",
input=["Lightning invoices expire.", "Invoices on Lightning have a time limit."],
)
print(len(result.data), len(result.data[0].embedding))
JavaScript
import OpenAI from "openai";
const client = new OpenAI({ baseURL: "https://nymbot.ai/api/v1", apiKey: process.env.NYMBOT_API_KEY });
const result = await client.embeddings.create({
model: "@cf/baai/bge-m3",
input: ["Lightning invoices expire.", "Invoices on Lightning have a time limit."],
});
console.log(result.data.length, result.data[0].embedding.length);