به محتوا بروید
بازگشت به Nymbot

پایگاه دانش توسعه دهندگان

تصاویر، صوتی و انبوه

ژنراتورها از برنامه، و بلوک های ساختار برای جستجو: عکس ها، ویدئو، سخنرانی، نقل و نصب، هر یک برای استفاده از حساب شما.

ایجاد تصاویر

یک تا چهار عکس از یک دستورالعمل ایجاد می کند و آنها را هنگامی که انجام می شود باز می گرداند. ?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 یک زمینه که یک ژنراتور دریافت نمی کند، به جای آنکه رد شود، از آن خارج می شود؛ ژنراتور استاندارد فقط از پمپ استفاده می کند.

میداننوعمورد نیازتوضیحات
modelStringبلهیک ژنراتور ID، مانند nano-banana.
promptStringبلهفقط اولین 2000 شخصیت استفاده می شود.
nIntegralنه1 تا 4.پذیر 1 نیز به عنوان پذیرفته شده است num_images.
sizeStringنهبه عنوان مثال، یک رابطه مانند "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_ratioStringنههمانطور که sizeو اگر هر دو فرستاده شود برنده می شود.
qualityStringنهژنراتورهای خاص، مانند "low", "medium" یا "high".
negative_promptStringنهچه چیزی را ترک کنیم.
output_formatStringنه"png", "jpeg" یا "webp".
response_formatStringنه"url" (بخش اول) یا "b64_json".
image_urlStringنهیک تصویر برای شروع از: یک 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[]اول استفاده می شود.
promptStringبلهچه چیزی را تغییر دهیم
modelStringبلهژنراتور با edit.
nIntegralنه1 تا 4
size
aspect_ratio
quality
negative_prompt
output_format
Stringنهدر مورد نسل
response_formatStringنه"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.

میداننوعمورد نیازتوضیحات
modelStringبلهیک ویدئو ژنراتور ID از GET /api/v1/models?type=videoمانند veo.
promptStringبلهچه باید شود.
durationشماره یا stringنهطول در ثانیه، بیش از 0 و تا 60. تنها توسط ژنراتورها استفاده می شود که به شما اجازه می دهد طول را انتخاب کنید؛ دیگران طول معمول خود را انجام می دهند، که آنچه seconds در پاسخ و قیمت دنبال می شود.
aspect_ratioStringنهمانند "16:9" یا "9:16"یک اندازه مانند "1280x720" نزدیک ترین نسبت می شود.
resolution
quality
Stringنهیکی از ژنراتورها resolutions در این لیست، مانند "720p" یا "1080p"قیمت را تعیین می کند.همه چیز دیگر با unsupported_resolution.
image_urlStringنهیک تصویر برای شروع از: یک 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 بر اساس درخواست.

میداننوعمورد نیازتوضیحات
modelStringنهیک مدل سخنرانی از لیست مدل های صوتیاستاندارد: رای استاندارد، @cf/myshell-ai/melotts. aura-2 دانلود بازی Deepgram Aura 2
inputStringبلهمتن برای خواندن: تا 800 حروف برای صدای استاندارد، 2000 برای Aura 2.
voiceStringنهیک صوتی ID از لیست صداها: یک صحبت کننده Aura مانند luna (یا aura-2-luna-en) یا یک زبان MeloTTS (en, es, fr, zh) OpenAI اسم های صوتی مانند alloy آنها پذیرفته می شوند و صدای استاندارد مدل را می دهند.
languageStringنهیک کد زبان مانند esبدون یک صدا، آن را برای آن زبان انتخاب می کند. یک صدا که یک زبان دیگر را صحبت می کند، باز می گردد. 422 voice_language_mismatchو یک زبان که مدل برای آن هیچ صدا ندارد 422 unsupported_language.
response_formatStringنهصدای استاندارد برمی گردد 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 می خواند.
modelStringنهفایده whisperدر حال حاضر این نرم افزار Whisper Large v3 Turbo است. whisper-1, whisper-large-v3-turbo و @cf/openai/whisper-large-v3-turbo همان معنی است.
languageStringنهزبان هایی که مانند enشناسایی شده اگر خارج شود.
promptStringنهکلمات یا کلمات قابل انتظار، مانند نام ها. تنها اولین 1000 حروف استفاده می شود.
response_formatStringنه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 بر اساس درخواست.

میداننوعمورد نیازتوضیحات
modelStringبلهیک مدل متحرک از GET /api/v1/models?type=embedding.
inputString یا Array از Stringsبلهبه عنوان مثال، در این مقاله می توان به شرح زیر اشاره کرد: (بخش اول)token_input_unsupported) هر input باید مطابق با مدل باشد context_lengthبه طور کلی، حدود چهار بیتی یک تیکن است.
encoding_formatStringنهfloat (بخش اول) یا base64 (تغییر 32-bit floats)
dimensionsIntegralنهاندازه مدل خود، یا برای یک مدل با supported_dimensions یکی از آن ها؛ وکتور پس از آن کوتاه می شود و استاندارد می شود.
مدلاندازه گیریkontext
@cf/baai/bge-m31024 زبان های مختلف8192 تیکن
@cf/qwen/qwen3-embedding-0.6b1024 زبان های مختلف8192 تیکن
@cf/baai/bge-large-en-v1.51024 انگلیسی512 تومانی
@cf/baai/bge-base-en-v1.5768 انگلیسی512 تومانی
@cf/baai/bge-small-en-v1.5384 انگلیسی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);