Билим базасы Розработчикдер
Сүрөттөр, аудио жана эмбеддингдер
Тиркемедеги генераторлор жана издөө үчүн курулуш блоктору: сүрөттөр, видео, сүйлөө, транскрипция жана эмбеддингдер, ар бири сиздин балансыңыздан колдонуу үчүн төлөнөт.
Бул барак ыңгайлуулук үчүн машинада которулган. Англисче оригиналдуу версия колдонулат.
Сүрөттөрдү түзүү
Суроо-талаптын негизинде бирден төрткө чейин сүрөт жасайт жана алар даяр болгондо кайтарып берет. Бул төмөндөгүлөр сыяктуу эле генераторлордун топтому: ?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кө чейин. |
sizeaspect_ratioqualitynegative_promptoutput_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" жакын бүтүн катышка айланат. |
resolutionquality | сап | Жок | Генераторлардын биринин 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). |
402 | Pro балансы видеону жаба албайт. |
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). |
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, чектөөлөр жана
баа, бирок кайсы тилде сүйлөнгөнүнө карабай текст англис тилинде кайтып келет. 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-m3 | 1024, көптөгөн тилдерде | 8,192 токен |
@cf/qwen/qwen3-embedding-0.6b | 1024, көптөгөн тилдерде | 8,192 токен |
@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 модели, сурам боюнча кыскараак векторлор менен, эгер каталогдо анын баасы көрсөтүлсө, ал жерде да көрүнөт. 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);