Эчтәлеккә күчү
Nymbotка кайтаргач

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

Суратлар, аудио һәм эмбеддингләр

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

Төсләвләр я outbursts ясау

Промпт буенча бердән төрттән рәсем ясый һәм алар тәмамланганда кайтара. Бу шул ук генераторлар җыены: ?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 кредитларны үз цене белән, гадәттәге комиссия һәм маржа белән, шул кебек за application. n суратлар баهاсы n ан kadar වැඩි. Генератор алышмаганmaydan полең өшендә каlarak, түкерә түгел; стандарт генератор промпты гына куллана.

ТәнәсеТөпЗарылТасвирлама
modelсызыкӘйеГенератор ID, мәсәлән nano-banana.
promptсызыкӘйеНәрсәләрне рисовать кирәк. Тизә генә беренче 2,000 символ гына кулланыла.
nбүтселЮк1 easily 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сызыкЮкБашлау өчен сүрәт: бер https:// исем яки пароль булмаган, максимум 4,096 символдан торган сылтау яки а... data:image/…;base64 URL (PNG, JPEG, WebP яки GIF; SVG түгел). Генераторлар өчен генә edit; ... булганнар тарафыннан таләп ителә requires_image_url.

resolution кулланылмый: һәр генератор үз өлчәве ясый. Менә url, һәр бер рәсем Blossom хостына җаһанлама итеп чыгарыла һәм сез аның сылтамасын аласыз (보기la берничә генератор үз сылтамасын бирә, ул бителә). Сылтамасы булган һәркем аны ача ала һәм аны кайтадан алырга кирәк түгел; карагыз API нәрсә күрә ала. белән b64_json Сүрәт җавап белән кайта була һәм һиччак юкланмый. ... качестве җибәрелгән сүрәт data: URL керү image_url һәм дә шул тәсьәл белән тикшилелә тәҗриба белән үткәрү һәм генератор аны алырга өчен беренче Blossom-га юклана; әгәр таләп төлämmәсез утырмаса, ул кайтадан үтерә.

Әгәрle берничә... 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 }
}
СтатусКачан
400Prompt юк; n 1 easily 4 тыш сырт *@*invalid_value); яман күләм (invalid_size) яки рәсем (invalid_image, invalid_image_url); бар булган, әмма рәсем генератор булмаган модель (invalid_model); төзәтә алмыйган генератор өчен рәсем (edit_unsupported); сурат кирәк булганнар өчен сурат юк (image_required).
402Баланс сораулы һәрбер рәсемнеCover итә алмый.
404Бу исемле модель юк (model_not_found).
502Генератор эшләмәгән (upstream_error). Төп авыруларны эшләргә тырышу өчен провайдер счёт чыгармаса, бернәрсе тэмәлләнми; шунда хатаның charged_sats.
503Суратларны timescales икеләрдә дә урнаштырып булмый (media_hosting_unavailable). b64_json дәваләм эшли.

cURL

curl https://nymbot.ai/api/v1/images/generations \
  -H "Authorization: Bearer $NYMBOT_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "nano-banana",
    "prompt": "A lighthouse at dusk, oil painting",
    "size": "16:9"
  }'

Python

import os
import requests

res = requests.post(
    "https://nymbot.ai/api/v1/images/generations",
    headers={"Authorization": "Bearer " + os.environ["NYMBOT_API_KEY"]},
    json={"model": "nano-banana", "prompt": "A lighthouse at dusk, oil painting", "size": "16:9"},
)
res.raise_for_status()
print(res.json()["data"][0]["url"])

JavaScript

const res = await fetch("https://nymbot.ai/api/v1/images/generations", {
  method: "POST",
  headers: {
    "Authorization": "Bearer " + process.env.NYMBOT_API_KEY,
    "Content-Type": "application/json",
  },
  body: JSON.stringify({ model: "nano-banana", prompt: "A lighthouse at dusk, oil painting", size: "16:9" }),
});
const body = await res.json();
console.log(body.data[0].url);

Сүрәтләрне төзәтү

Сез юкладырган рәсемне промпт буенча үзгәртә. Бу OpenAIның үзгәртер конекты, шулай итеп OpenAI SDKларның images.edit хәзерге хәльдә эшли. Ткаль генерраторларның берәрсе генә... 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 easily 4.
size
aspect_ratio
quality
negative_prompt
output_format
сызыкЮкГенерация турында.
response_formatсызыкЮк"b64_json" (бу ердәге төп) яки "url".

Сез юкладырган рәсем PNG, JPEG, WebP яки GIF форматының дөрес булышы тикшерелә, үзенең төп форматы белән җибәрелә һәм җәмгыяшлеккә ачык Blossom хостына урнаштырыла, чөнки генераторлар үзләренең керү данәләрен шибәрлек аша алырга кирәк. Аны ачык рәсем буларак карагыз. Әгәр редактирләү уңышсыз үтсә һәм берни акча алынмаса, урнаштырылган копия яңаEllт таяш. Җавап генерация ясаудагы кебек бәйләшле булачак. Балы ясау — генераторның балы, ул кайсыбу генераторлар өчен керү рәсеме өчен бүләк акчаны да үз эченә ала.

Җавап

{
  "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Суретне timescales ике җитәрлекле урнаштырырга мөмкин түгел (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"));

Видео

Видео минутлар алый, шуңаEller фонот режимында эшли. Сез аны җибәрәсез, һәм берничә секундтан id аласыз, аннан соң видео тәмамланманы until id турында сорап торасыз.Һәр видео генератор Pro балансын төбәгән була.

POST https://nymbot.ai/api/v1/videos — API ачкычы кирәк, яки һәр сорау буенча Lightning түләүе. Ҡайтара 202.

ТәнәсеТөпЗарылТасвирлама
modelсызыкӘйеВидео генератор ...-дан GET /api/v1/models?type=videoмисал өчен, шулар кебек veo.
promptсызыкӘйеНәрсә булырга тиеш.
durationсаnúр яки strungЮкСекунда исләпme оzaклык, 0-тән күбрәк һәм 60-ка кадәр. Уны оzaклыкны сайлау мөмкин булган генераторлар гына куллана; калганнары үзләренең оzaклыкларын ясарга туктаналар, ул нинди? seconds җавапта һәм баенда элли.
aspect_ratioсызыкЮкМәсәлән "16:9" яки "9:16"; шундый зурлыктагы "1280x720" иң якын ни пропорциягә әйләнә.
resolution
quality
сызыкЮкГенераторның берсе resolutions модель исемлегендә, мәсәлән "720p" яки "1080p"Ул бааны тәэмин итә. Башка нәрсә дә китмәс. unsupported_resolution.
image_urlсызыкЮкБашлау өчен сүрәт: бер https:// сылке яки а data:image/… Тәүдерle Blossom хостингега алладан билгеләнгән URL. Генераторлар өчен кирәк. requires_image_url.

Сез җөмәлне генертордан, разрешение һәм озынлыктан күреп җибәргәндә, баها фикс ителгән булып тора, шулай итеп ул провайдер эшне кабул иткәннән соң timescales сизের Pro балансынан алына һәм шулар итеп күрсәтелә cost, estimated_cost һәм nymbotӘгәрде провайдер эшне кабул итмәс булса, берни şey түләнми. Әгәр рендеринг соңыннан файль чыга алмаса яки әร็จкәл клип саклана алмый, ә провайдер аңа акча алмаган булса, түләү бер тапкыр автоматтык ярдәм белән кайтарыла. Бер сәгатьтән соң да дәвам итеп торган рендеринг туктатыла һәм аның түләве кала, чөнки провайдер рендерингне кабул иткәннән соң акча алган була. Кайтарылган акча кредитләрне кайтара, ләкин ключның чайнау күрсәткеченә 영향 итми.

Җавап (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 секундка яңа ından сора. һәр тикшерү провайдергә бер тапкыр сорау җибәрә һәм җавапны берничә тапкыр түшәмә; ул видеоны һәрчак көтми. Рәсьмә (job) җибәрелгәннән соң 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 хостингында, генерацияланган рәсемнәр кебек, җәмгыя timescale контекстында урнаштырылган.

СтатусКачан
400Промпт юк; 0-тән 60 аралыгын читләп дәвамлылык (invalid_value); генератор тәкъдим итмәгән разрешение (unsupported_resolution); сурат кирәкле генератор өчен сурат юк (image_required); видео генератор булмаган модель (invalid_model).
402Pro балансы видеоны cover илә алмый.
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ның һәсләв endpoint-ы, шулай итеп 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сызыкӘйеУкырга теләгән текст: стандартча дизeyн өчен 800 символға кадәр, Aura 2 өчен 2000 символ.
voiceсызыкЮк... җыеннан$_{voice\ id}$ тавышлар исемлеге: Aura спикерের кебек luna (яки aura-2-luna-en), яки MeloTTS телендә (en, es, fr, zh). OpenAISes өйләрның исемнәре шулар кебек: alloy кабул ителә һәм модельның стандарт көchen бирә.
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 headers. Әгәр һәсәпләү моделе эшləмәсә, берничә нәрсә дә алынмый.

Җавап

HTTP/1.1 200 OK
Content-Type: audio/mpeg
X-Nymbot-Cost-Sats: 4.2
X-Nymbot-Balance-Sats: 41055.6

(audio bytes)
СтатусКачан
400Бикләү юк; керү модель限се sınды (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()));

Аудио модельләре һәм sesләре

Сөйләшү моделе һәм үзе (голос) яки транскрипция моделе сайлау өчен ике ачык список бар. 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 транскрипция конекты, шулай өчен 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сызыкЮкИсемләр кебек күтәрәчү сүзләр яки имләштерүләр. Текстың беренче 1000 символы гына кулланыла.
response_formatсызыкЮкjson (төп), text, srt, vtt яки verbose_json.

WAV, WebM, MP4 һәм Ogg файллары өчен озынлык берәр нәрсә дә эшләгәнче файлдан укыла, шуңа күрә 30 минуттан артык запись алまえ рәвештә баш таныла (3 секундлык рәхәтлек белән). WAV файлының озынлыгы аның sample rate, каналлары һәм sample size параметрларыннан алына. MP3 кебек башка форматларның озынлыгы алдыннан укыла алмый, шуңа күрә алар күләм буенча чикләнгән: иң төбә bitrate рівняндә Nymbot 8 kbps дип күтәреп, 30 минут 1.8 MB була, шулай ул форматтагы зуррак файл түбәндәге рәвештә рәвешкә китерә: 413 audio_too_long һеч нәрсә дә эшләгәнче. Унчаклауны WAV, WebM, MP4 яки Ogg форматында озынрак җибәрегез. Әгәр Whisper 30 минуттан артык вакыт турында хәбәр итсә, сорау түбәндәгеләр белән кабул ителми: 413 audio_too_long, һәм Whisper эшләгән сөендә, 30 минут счётлана.

Сез аудио оралысы өчен түләү ясыйсыз, ул секундларга кадәр җыелган: файлдан укынган иң озын оралы, Whisper хәбәр иткән оралы һәм файл күләме мөмкин булган иң кечэйрек оралы, Whisperның бер минутлы bargeы буенча, гади төләм һәм маржа белән, һәм һәр сорау өчен чикless 0.05 кредит. Ул стандарт баланс буенча түләнә, әгәр ул блокны cover итә алса, әрнәк Pro балансы буенча; а 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 булмаган өчен нарх header-ларда.

СтатусКачан
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 SDKләре аны белән чакыра 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строка якиStringлар массивыӘйеВәрлек итәргә кирәкле текст, 100 тәкъын булмаган сюжетка кадәр. Токен массивлары кабул ителми (token_input_unsupported).Һәрбер керү модельне тулыруы кирәк context_length, токенының һәрберсе тикметтә карар буенча якшыча түрт байт дип санала.
encoding_formatсызыкЮкfloat (тәгабер) яки base64 (күбәк-endian 32 битлы флотлар).
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 моделе, сорау буенча кыскарак векторлар белән, каталогда аның баәсе булганда шул уятта күрсәтелә. Embeddings керү токеннары буенча исәпләнә, һәм һәр ярдәмче сорау өчен 0.05-кредитminimum баәсе керә, һәр керү өчен түгел, шуңа значит күп текстны бер сорауга берләштереп җибәрү аларны һәрберын төрле бер тапкыр җибәрүгә караганда бик арзанрак.

Җавап

{
  "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Стандарт баланс бик төбә. Эмбеддингләр 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);