Мазмунга өтүү
Nymbot'ко кайтуу

Билим базасы Розработчикдер

Сүрөттөр, аудио жана эмбеддингдер

Тиркемедеги генераторлор жана издөө үчүн курулуш блоктору: сүрөттөр, видео, сүйлөө, транскрипция жана эмбеддингдер, ар бири сиздин балансыңыздан колдонуу үчүн төлөнөт.

Сүрөттөрдү түзүү

Суроо-талаптын негизинде бирден төрткө чейин сүрөт жасайт жана алар даяр болгондо кайтарып берет. Бул төмөндөгүлөр сыяктуу эле генераторлордун топтому: ?image тиркемеде.

POST https://nymbot.ai/api/v1/images/generations — API ачкычы керек, же Ар бир суроо-талап үчүн Lightning төлөмү.

ID'дер кайдан келет GET /api/v1/models?type=image. Стандарттык генератор, @cf/black-forest-labs/flux-1-schnell, ар бир сүрөт үчүн 5 стандарттык кредит (50 sats) турат. Башка ар бир генератор Pro кредиттерин өзүнүн баасы менен, кадимки комиссия жана маржа менен жумшайт, мисалы тиркеме. n сүрөттөрдүн баасы n анчалык көп. Генератор албаган талаа баш тартуунун ордуна четтетилип саналат; стандарттык генератор болгону промптту гана колдонот.

АйланатТүрүКеректелүүчүСүрөттөмө
modelсапОобаГенератордун ID-си, мисалы nano-banana.
promptсапОобаЭмне тартуу керек. Биринчи 2 000 белги гана колдонулат.
nбүтүн санЖок1ден 4кө чейин. Дефолт 1. Ошондой эле төмөнкүдөй кабыл алынат num_images.
sizeсапЖокМындай форматтуу пропорция мисалы үчүн "16:9", же мисалы OpenAI өлчөмүндөгү "1792x1024", ал эми 1:1, 16:9, 9:16, 4:3, 3:4, 3:2, 2:3, 21:9, 5:4 жана 4:5 форматтарынын ичинен эң жакынына айланат. "auto" генераторго калтырат.
aspect_ratioсапЖокУшундай эле size, жана эгер экөө тең жөнөтүлсө, жеңет.
qualityсапЖокГенераторго тиешелүү, мисалы "low", "medium" же "high".
negative_promptсапЖокЭмнени калтырбай коюу керек.
output_formatсапЖок"png", "jpeg" же "webp".
response_formatсапЖок"url" (демейлүү) же "b64_json".
image_urlсапЖокБаштоо үчүн сүрөт: an https:// ичинде колдонуучунун аты же сырсөз жок, эң көп дегенде 4,096 белгиден турган шилтеме же а data:image/…;base64 URL (PNG, JPEG, WebP же GIF; SVG эмес). Генераторлор үчүн гана edit; талап кылуучулар үчүн requires_image_url.

resolution колдонулбайт: ар бир генератор өзүнүн өлчөмүн түзөт. url, ар бир сүрөт ачык Blossom хостуна жүктөлөт жана сиз анын шилтемесин аласыз (бир нече генераторлор гана өзүнүн шилтемесин кайтарып берет, ал андан ары өткөрүлөт). Шилтемеси бар каалаган адам аны ача алат жана аны кайра өчүрүү мүмкүн эмес; караңыз API эмнени көрө алат. менен b64_json сүрөт жооптун ичинде кайра келип, эч качан жүктөлбөйт. Сүрөт ... катары жөнөтүлгөн data: URL ичинде image_url ... сыяктуу эле текшерилет түзөтүү жана генератор аны алса болот үчүн алгач 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 да still иштейт.

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'дын түзөтүү (edit) конекти, ошондуктан OpenAI SDK'лары images.edit болгон бойдон иштейт. Болгону Pro генераторлор менен edit моделдердин тизмесинде аны кабыл ал.

POST https://nymbot.ai/api/v1/images/edits — API ачкычы керек, же Ар бир суроо-талап үчүн Lightning төлөмүДене бул multipart/form-data, 32 МБ чейин.

АйланатТүрүКеректелүүчүСүрөттөмө
imageфайлОобаӨзгөртүлө турган сүрөт: PNG, JPEG, WebP же GIF, 20 МБ чейин. Ошондой эле кабыл алынат: image[]; биринчиси колдонулат.
promptсапОобаЭмнени өзгөртүү керек.
modelсапОобаГенератор менен edit.
nбүтүн санЖок1ден 4кө чейин.
size
aspect_ratio
quality
negative_prompt
output_format
сапЖокГенерация боюнча.
response_formatсапЖок"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 МБдан ашык (file_too_large), же бүтүндөй сурам 32 МБтен ашык болсо.
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 жөнүндө сурай бересиз. Ар бир видео генератору Pro балансын короткон учурлар болот.

POST https://nymbot.ai/api/v1/videos — API ачкычы керек, же Ар бир суроо-талап үчүн Lightning төлөмү. Кайтарымдар 202.

АйланатТүрүКеректелүүчүСүрөттөмө
modelсапОобаВидео генератордун IDси мындан: GET /api/v1/models?type=video, мисалы veo.
promptсапОобаЭмне болушу керек.
durationсан же сапЖокСекунд менен өлчөнгөн узундук, 0дон жогору жана 60го чейин. Узундукту тандоого мүмкүндүк берген генераторлор тарабынан гана колдонулат; калгандары өзүнүн кадимки узундуктарын жасашат, ал болсо эмне seconds жоопто жана баасы төмөндө.
aspect_ratioсапЖокМисалы "16:9" же "9:16"; мындай өлчөмдөгү "1280x720" жакын бүтүн катышка айланат.
resolution
quality
сапЖокГенераторлардын биринин resolutions модельдердин тизмесинде, мисалы "720p" же "1080p"Ал баасын белгилейт. Башка нерселер төмөнкүдөй четке кагылат: unsupported_resolution.
image_urlсапЖокБаштоо үчүн сүрөт: an https:// шилтеме же а data:image/… Алгач ачык Blossom хостуна жүктөлгөн URL. Генераторлорго төмөнкүлөр керек: requires_image_url.

Генераторду, чейинки сапаты (resolution) жана узундугун жөнөткөндө баа туруктуу болот, ошондуктан провайдер жумушту кабыл алгандан кийин дароо 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} — аны жөнөткөн nymге таандык ачкычты талап кылат. Лимити толгон ачкыч дагы деле текшере алат.

Ал жооп берет 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дан 60га чейинки мөөнөттөн сырткары убакыт (invalid_value); генератор сунган чектенүүдөн жогору чейинки чейинки чектүүлүк (unsupported_resolution); сүрөт керек болгон генератор үчүн сүрөт жок (image_required); видео генератор эмес модель (invalid_model).
402Pro балансы видеону жаба албайт.
404Мындай генератор жок (model_not_found), же сиздин nym үчүн бул ID боюнча жумуш жок, же ал 24 сааттан ашык убакыт мурун болгон (video_not_found).
429Сиздин nym'ыңызда мурун эле 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);

Текстти үн чыгаруу

Текстти үн чыгарып окуйт жана шилтеме эмес, аудио файлдын өзүн кайтарат. Бул OpenAI'дын сүйлөө конекти, ошондуктан audio.speech.create OpenAI SDK-ларында иштейт.

POST https://nymbot.ai/api/v1/audio/speech — API ачкычы керек, же Ар бир суроо-талап үчүн Lightning төлөмү.

АйланатТүрүКеректелүүчүСүрөттөмө
modelсапЖокСүйлөө модели... аудио моделдеринин тизмеси. Адаткы: стандарттык үн, @cf/myshell-ai/melotts. aura-2 Deepgram Aura 2 болобу?
inputсапОобаОкуучу текст: стандарттык үн үчүн 800 белгиге чейин, Aura 2 үчүн 2 000 белги.
voiceсапЖок...дан үн идентификатору үндөрдүн тизмеси: Aura динамиги сыяктуу luna (же aura-2-luna-en), же MeloTTS тили (en, es, fr, zh). OpenAI үн аттары сыяктуу alloy кабыл алынат жана моделдин стандарттуу үнүн берет.
languageсапЖокТилдин коду сыяктуу мисалы esҮнсүз абалда, ал ошол тил үчүн үн тандайт. Башка тилде сүйлөгөн үн кайтып келет 422 voice_language_mismatch, жана модель үчүн үнү жок тил 422 unsupported_language.
response_formatсапЖокСтандарттык үн кайтып келет mp3 гана. Aura 2 кайтып келет mp3 (демейки), opus, aac, flac, wav же pcm.
speedсанЖокКабыл алынды жана эске алынган жок.

Стандарттуу үн бир суроо үчүн 3 стандарттуу кредит (30 sats) турат, тиркемедегидей. Aura 2 Pro болуп саналат жана сиз жөнөткөн символдордун санына жараша баасы белгиленет. Жооптун денеси — бул аудио, анын төмөндөгүлөр менен дал келген... Content-Type; баасы ... ичинде X-Nymbot-Cost-Sats header. Эгерде сүйлөө модели иштебей калса, эч нерсе алынбайт.

Жооп

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сап (суроо)ЖокБул тил үчүн гана үндөр.
modelсап (суроо)ЖокБул модель үчүн бир гана үндөр.

Жооп (үнөр)

{
  "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'дын транскрипциялоочу 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 жана Whisper окуган башка форматтар. MP3 жана узундугу алдын ала окулбаган башка форматтар 1,8 МБ менен чектелет.
modelсапЖокСтандарттык whisper, ал Whisper Large v3 Turbo. whisper-1, whisper-large-v3-turbo жана @cf/openai/whisper-large-v3-turbo бирдей маанини билдирет.
languageсапЖокСүйлөө тили, мисалы en. Эгер калтырылса, аныкталат.
promptсапЖокАты-жөн сыяктуу күтүлө турган сөздөр же жазуулар. Биринчи 1 000 символ гана колдонулат.
response_formatсапЖокjson (демейки), text, srt, vtt же verbose_json.

WAV, WebM, MP4 жана Ogg файлдары үчүн узундук эч нерсе иштешинен мурун файлдан окулат, ошондуктан 30 мүнөттөн ашык жазуу алдын ала четке кагылат (3 секунддук мөөнөт менен). WAV файлынын узундугу анын үлгүлөнүү ылдамдыгынан, каналдарынан жана үлгү өлчөмүнөн келип чыгат. Башка форматтардын, мисалы MP3, узундугун алдын ала окууга мүмкүн эмес, ошондуктан алар көлөмү боюнча чектелет: Nymbot эң төмөнкү битрейтти, 8 kbps деп эсептегенде, 30 мүнөт 1.8 МБ түзөт жана мындай форматтагы чоңураак файл төмөнкүлөр менен четке кагылат 413 audio_too_long эч нерсе иштешинен мурун. Узартылган жазууларды WAV, WebM, MP4 же Ogg форматында жөнөтүңүз. Эгерде Whisper баары бир 30 мүнөттөн көп деп билдирсе, суроо-талап төмөндөгүдөй четке кагылат: 413 audio_too_long, жана Whisper иштегендиктен, 30 мүнөт эсептелет.

Сиз аудионун узундугу үчүн төлөйсүз, ал секундга чейин тегеректелет: файлдан окулган эң узун узундук, Whisper билдирген узундук жана файлдын көлөмү мүмкүн болгон эң аз узундук, Whisper'дын бир мүнөт үчүн белгиленген баасы менен, адаттагы төлөм жана маржа менен, жана бир сурам당 үчүн кеминде 0.05 кредит. Эгерде стандарттык баланс бөгөттөлгөн сумманы жабууга мүмкүн болсо, ал стандарттык баланстан, болбосо Pro баланстан төлөнөт; a 402 ар бир баланс эмнеге муктаж экенин көрсөтөт. Тиркемеде үн билдирүүсүн текстке айландыруу акысыз болушу мүмкүн; API'де болсо ал ар дайым акыга негизделген. Эгер Whisper иштебей калса, эч нерсе алынбайт.

Жооп

{
  "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 эмес үч сегмент үчүн баа хеддерлерде (headers) көрсөтүлгөн.

СтатусКачан
400Файл жок, колдонууга жараксыз аудиосу бар файл (invalid_audio), белгисиз формат, же транскрипция модели эмес модель (invalid_model).
402Эч кайсы баланс аны жаппайт.
413Файл 25 МБдан ашык (file_too_large) же жазуу 30 мүнөттөн ашса, же алдын ала узундугу окулбаган форматта болсо, 1.8 МБтен ашык (audio_too_long).
502Whisper аудиону иштете алган жок. Эч нерсе кармалган жок.

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, чектөөлөр жана баа, бирок кайсы тилде сүйлөнгөнүнө карабай текст англис тилинде кайтып келет. OpenAI SDKs аны төмөнкүдөй чакырат 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сапОоба...дан эмбеддинг модели GET /api/v1/models?type=embedding.
inputрядок же саптардын массивиОобаКиргизүү үчүн текст, 100гө чейин бош эмес саптар. Токен массивдери четке кагылат (token_input_unsupported). Ар бир киргизүү модельдин context_length, болжол менен бир токенге төрт байт деп эсептелет.
encoding_formatсапЖокfloat (демейлүү) же base64 (little-endian 32 биттик float сандары).
dimensionsбүтүн санЖокМоделдин өзүнүн көлөмү же ... модели үчүн supported_dimensions ушулардын бири; андан кийин вектор кыскартылат жана нормалдаштырылат. Башка эч нерсе четке кагылат.
МодельӨлчөмдөрКонтекст
@cf/baai/bge-m31024, көптөгөн тилдерде8,192 токен
@cf/qwen/qwen3-embedding-0.6b1024, көптөгөн тилдерде8,192 токен
@cf/baai/bge-large-en-v1.51024, англисче512 токен
@cf/baai/bge-base-en-v1.5768, англис тили512 токен
@cf/baai/bge-small-en-v1.5384, англисче512 токен

Моделдердин тизмеси кайсылары жеткиликтүү жана алардын баасы канча экенин билдирген негизги булак болуп саналат; Google'дун EmbeddingGemma модели, сурам боюнча кыскараак векторлор менен, эгер каталогдо анын баасы көрсөтүлсө, ал жерде да көрүнөт. Embedding'дер киргизилген ар бир токен үчүн эсептелет жана ар бир сурам үчүн 0.05-кредиттик minimum өлчөмү колдонулат, ар бир киргизүү үчүн эмес, ошондуктан көптөгөн тексттерди бир сурамга топтогон (batching) бир жолу жөнөтүүгө караганда алда канча арзанга түшөт.

Жооп

{
  "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Стандарттык баланс өтө төмөн. Embeddings эч качан Pro балансын колдонбойт.
404Мындай аталыштагы embedding модели жок.
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);