پایگاه دانش توسعه دهندگان
تصاویر، صوتی و انبوه
ژنراتورها از برنامه، و بلوک های ساختار برای جستجو: عکس ها، ویدئو، سخنرانی، نقل و نصب، هر یک برای استفاده از حساب شما.
این صفحه برای سهولت به صورت ماشینی ترجمه شده است. نسخه اصلی انگلیسی نسخه ای است که اعمال می شود.
ایجاد تصاویر
یک تا چهار عکس از یک دستورالعمل ایجاد می کند و آنها را هنگامی که انجام می شود باز می گرداند. ?image در App
POST https://nymbot.ai/api/v1/images/generations - نیاز به کلید API، یا پرداخت Lightning بر اساس درخواست.
آیفون از GET /api/v1/models?type=imageژنراتور استاندارد،
@cf/black-forest-labs/flux-1-schnell، هزینه یک 5 اعتبار استاندارد (50 sats) یک تصویر. هر ژنراتور دیگر صرف اعتبار Pro در قیمت خود را، با هزینه معمول و مزایای، به عنوان در این app. n قیمت عکس
n یک زمینه که یک ژنراتور دریافت نمی کند، به جای آنکه رد شود، از آن خارج می شود؛ ژنراتور استاندارد فقط از پمپ استفاده می کند.
| میدان | نوع | مورد نیاز | توضیحات |
|---|---|---|---|
model | String | بله | یک ژنراتور ID، مانند nano-banana. |
prompt | String | بله | فقط اولین 2000 شخصیت استفاده می شود. |
n | Integral | نه | 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 | نه | یک تصویر برای شروع از: یک 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 (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);
تصاویر Edit
تغییر یک تصویر که شما ارسال می کنید، به دنبال یک دستورالعمل است.این نقطه انتهای Edit 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 MB. image[]اول استفاده می شود. |
prompt | String | بله | چه چیزی را تغییر دهیم |
model | String | بله | ژنراتور با edit. |
n | Integral | نه | 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 (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"));
ویدیو
یک ویدئو چند دقیقه طول می کشد، بنابراین در زمینه اجرا می شود. شما آن را ارسال می کنید، بلافاصله یک هویت دریافت می کنید و درباره هویت بپرسید تا زمانی که تمام شود.
POST https://nymbot.ai/api/v1/videos - نیاز به کلید API، یا پرداخت Lightning بر اساس درخواستبازگشت 202.
| میدان | نوع | مورد نیاز | توضیحات |
|---|---|---|---|
model | String | بله | یک ویدئو ژنراتور ID از GET /api/v1/models?type=videoمانند veo. |
prompt | String | بله | چه باید شود. |
duration | شماره یا string | نه | طول در ثانیه، بیش از 0 و تا 60. تنها توسط ژنراتورها استفاده می شود که به شما اجازه می دهد طول را انتخاب کنید؛ دیگران طول معمول خود را انجام می دهند، که آنچه seconds در پاسخ و قیمت دنبال می شود. |
aspect_ratio | String | نه | مانند "16:9" یا "9:16"یک اندازه مانند "1280x720" نزدیک ترین نسبت می شود. |
resolutionquality | String | نه | یکی از ژنراتورها resolutions در این لیست، مانند "720p" یا "1080p"قیمت را تعیین می کند.همه چیز دیگر با unsupported_resolution. |
image_url | String | نه | یک تصویر برای شروع از: یک https:// لینک یا A data:image/… URL، که اول به یک میزبان عمومی Blossom اپل می شود. requires_image_url. |
قیمت زمانی است که شما ارسال می کنید، از ژنراتور، صدور و طول، بنابراین آن را از توازن حرفه ای خود محاسبه می شود هنگامی که ارائه دهنده کار را قبول می کند، و به عنوان نشان داده می شود.
cost, estimated_cost و nymbotاگر ارائه دهنده این کار را رد کند، هیچ چیز محاسبه نمی شود.اگر rendering بعداً ناکام می شود، یا کلپ کامل نمی تواند ذخیره شود و ارائه دهنده آن را حساب نکرده است، هزینه یک بار، به طور خودکار بازگردانده می شود. یک rendering که هنوز بعد از یک ساعت ادامه دارد، رد می شود و هزینه خود را حفظ می کند، زیرا ارائه دهنده یک render را حساب می دهد هنگامی که آن را پذیرفته است.
پاسخ دادن (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 ثانیه سوال کنید هر چک یک بار از ارائه دهنده سوال می کند و بلافاصله پاسخ می دهد؛ هرگز منتظر ویدئو نیست.
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 تا 60 (invalid_value)؛ یک حل که ژنراتور ارائه نمی دهد (unsupported_resolution)؛ هیچ تصویر برای یک ژنراتور که نیاز به یک (image_required)؛ یک مدل که یک تولید کننده ویدئویی نیست (invalid_model). |
402 | توازن Pro نمی تواند ویدیو را پوشش دهد. |
404 | هیچ یک از این دستگاه ها (model_not_found)، یا هیچ کار توسط آن ID برای نیم شما، یا آن را بیش از 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 برای Aura 2. |
voice | String | نه | یک صوتی ID از لیست صداها: یک صحبت کننده Aura مانند 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 Returns mp3 (در صورت عدم وجود) opus, aac, flac, wav یا pcm. |
speed | شماره | نه | پذیرفته و نادیده گرفته شده |
صدای استاندارد هزینه یک 3 اعتبار استاندارد (30 sats) یک درخواست، به عنوان در برنامه است. 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()));
مدل های صوتی و صدا
دو لیست عمومی برای انتخاب یک مدل سخنرانی و صدا، یا یک مدل ترجمه وجود دارد 41 Aura 2 زبان انگلیسی و چهار زبان MeloTTS.
GET https://nymbot.ai/api/v1/audio/models نیازی به کلید ندارد.
GET https://nymbot.ai/api/v1/audio/voices?language=en نیازی به کلید ندارد.
| میدان | نوع | مورد نیاز | توضیحات |
|---|---|---|---|
language | آرشیو ( Query ) | نه | فقط صوتی برای این زبان |
model | آرشیو ( Query ) | نه | فقط صوتی برای این مدل |
پاسخ ها (Voices)
{
"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، یک ضبط را به متن تبدیل می کند.این نقطه انتهای ترجمه OpenAI است.
audio.transcriptions.create کار می کند
POST https://nymbot.ai/api/v1/audio/transcriptions - نیاز به کلید API، یا پرداخت Lightning بر اساس درخواستاین بدن است multipart/form-data.
| میدان | نوع | مورد نیاز | توضیحات |
|---|---|---|---|
file | فایل | بله | ضبط، از 256 بیتی تا 25 MB و تا 30 دقیقه: WAV، WebM، MP4 یا M4A، Ogg یا Opus، MP3 و سایر فرمت های Whisper می خواند. |
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. اگر پس از شنیدن گزارش بیش از 30 دقیقه، درخواست را رد می کند.
413 audio_too_longو از آنجایی که شنوایی اجرا شد، 30 دقیقه شارژ می شود.
شما برای طول صوتی پرداخت می کنید، به ثانیه دور شده: طولانی ترین خواندن از فایل، طول گزارش های Whisper، و حداقل اندازه فایل اجازه می دهد، در قیمت هر دقیقه از Whisper با هزینه معمول و مزایای، و حداقل 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(بخش اول) (بخش اول) (بخش اول) (بخش اول) (بخش اول) (بخش اول) (بخش اول) (بخش اول) (بخش اول) (بخش اول) (بخش اول) (بخش اول) (بخش اول) (بخش اول) (بخش اول)audio_too_long). |
502 | شنوایی نمی تواند آڈیو را پردازش کند. هیچ چیز شارژ نشده است. |
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);
Embeddings
متن را به ویکتورها برای جستجو، جمع آوری و deduplication تبدیل می کند.The models run on Cloudflare and spend the standard balance.
POST https://nymbot.ai/api/v1/embeddings - نیاز به کلید API، یا پرداخت Lightning بر اساس درخواست.
| میدان | نوع | مورد نیاز | توضیحات |
|---|---|---|---|
model | String | بله | یک مدل متحرک از GET /api/v1/models?type=embedding. |
input | String یا Array از Strings | بله | به عنوان مثال، در این مقاله می توان به شرح زیر اشاره کرد: (بخش اول)token_input_unsupported) هر input باید مطابق با مدل باشد context_lengthبه طور کلی، حدود چهار بیتی یک تیکن است. |
encoding_format | String | نه | float (بخش اول) یا base64 (تغییر 32-bit floats) |
dimensions | Integral | نه | اندازه مدل خود، یا برای یک مدل با supported_dimensions یکی از آن ها؛ وکتور پس از آن کوتاه می شود و استاندارد می شود. |
| مدل | اندازه گیری | kontext |
|---|---|---|
@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 تومانی |
لیست مدل ها منبع حقایق است که برای آنها در دسترس هستند و چه هزینه دارند؛ 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)؛ یک اندازه که مدل نمی تواند ارائه کند (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);