Gara qabiyyee isaatti darbaa
Nymbotitti deebi'uuf

Bu’uura beekumsaa Uumtoota

Fakkiiwwan, sagalee fi embeddings

Appii keessaa kanneen uumaniifi, uumama barbaachisuuf kanneen fayyadan: fakkiiwwan, viidiyoo, dubbii, barreeffama fi embeddings, kanneen hundi kaffaltiin isaanii yeroo itti fayyadaman kaffaltii bu'aa keetiin herregama.

Fakkiiwwan uumuu

Prompt tokko irraa fakkiiwwan tokko hanga afuritti hojjeta, yommuu xumuramanis deebisa. Setii uumtoota kan sana waliin wal qaba. ?image appii keessatti.

POST https://nymbot.ai/api/v1/images/generations — API key barbaada, yookaan Kaffaltii Lightning gaaffii hundaaf tokkoof.

Idoos eessaa dhufan? GET /api/v1/models?type=image. Uumaa qabatamaa ta'e, @cf/black-forest-labs/flux-1-schnell, fakkii tokkoof kireetiiwwan idilee 5 (50 sats) qofa kaffalamu. Kaayichaan (generator) biraa hundi kireetiiwwan Pro gatii isaanii ofii irratti, liqii fi margin baramaa waliin, akka appii sana. n suuraan gatii meeqa? n yeroo baay'ee akkasuma. Marsaa generator hin fudhanne dhiisama, garuu رفض hin ta'u; generator qulqulluu qofa prompt fayyadama.

MarsaaGaraaBarbaachisaIbsa
modelxila/shaxaanEeyyeeIdii geraateerii, kan akka nano-banana.
promptxila/shaxaanEeyyeeMaal fakkii kaasuun barbaachisa? Dubbii jalqabaa 2,000 qofa fayyadamtu.
nlakkoofsa guutuuLakki1 hanga 4. Akkaeesummaa 1. Akkasumas akka ... ta'etti fudhatama. num_images.
sizexila/shaxaanLakkiSuuta suuraa kan akka "16:9", ykn guddina OpenAI akkaataa kanaatiin "1792x1024", kan inni 1:1, 16:9, 9:16, 4:3, 3:4, 3:2, 2:3, 21:9, 5:4 fi 4:5 keessaa isa dhiyoo dha. "auto" uumataa sanaaf dhiisa.
aspect_ratioxila/shaxaanLakkiAkka isaatti size, fi yoo lamaanun ergaman injifata.
qualityxila/shaxaanLakkiKan generatorii irratti kan ta'e, kan akka "low", "medium" yookaan "high".
negative_promptxila/shaxaanLakkiMaal dhiisuu qabda.
output_formatxila/shaxaanLakki"png", "jpeg" yookaan "webp".
response_formatxila/shaxaanLakki"url" (kan akkaataa jireenyaa) ykn "b64_json".
image_urlxila/shaxaanLakkiFakkii itti jalqabuuf: an https:// link at most 4,096 characters with no user name or password in it, or a data:image/…;base64 URL (PNG, JPEG, WebP ykn GIF; SVG miti). Kan uumtoota qofaaf kan ta'e kan... edit; kan namoota qaban jedhamaniin barbaadamu requires_image_url.

resolution hin tajaajilamu: genereetaraan tokko tokko dandeettii isaa ofii uuma. Wajjin url, fakkii hunda Blossom hostii qofaan dhimma dholaatti olka'eera, linkii isaas argatta (generator-oonni muraasni qofatu linkii isaanii siif kenna, inni immoo dabarsa). Namni linkii qabu hundi banuu danda'a, akkasumas deebisanii balleessuu hin danda'amu; ilaali API'n maal arguun danda'a. Waliin b64_json fakkichi deebii keessatti deebi'ee dhufa, akkasumas yoomiyyuu hin ol-fe'amu. Fakkii ergame akka a data: URL keessa image_url akkaan qulqullummaa isaa ilaalamuu danda'a moo akka... fooyyessu fi dura Blossom irratti olka'ee akka generator-iin argatuuf; yoo gaaffichi kaffaltiin malee hinfuun ta'e, deebie'ee irraa balleessama.

Yoo muraasni keessaa... n suuraan ni dide, isaan hojjetan qofatu siif dhufa, isaan qofaafis kaffaltiin siif jira (akkasumas isaan dhabamee tajaajilaan kaffalte qofa), fi nymbot.failed hunda kamtu dhabame akka ta'e ni hima. Yoo hundi dadhaban, gaaffiin deebi'a 502.

Deebii

{
  "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 }
}
HaalaYoom
400Ajaja hin jiru; n jala 1 hanga 4 ala (invalid_value); xinnoo/bal'aa badduu (invalid_size) yookaan fakkii (invalid_image, invalid_image_url); moodeelii kan jiru garuu kan fakkii uumu miti (invalid_model); suuraa generetara hin jijjiirrin (edit_unsupported); fakkii kan barbaadu tokko hin qabu (image_required).
402Balance-n suuraalee gaafatamanii hunda hin dabarsu.
404Maqaa sanaan moodeelii hin jiru (model_not_found).
502Makaraannichi fashale (upstream_error). Yoo tajaajila kennuun yaalametti kaffaltiin hin gaafatamtu; yoo kaffaltiin gaafatame immoo dogoggorri sun... charged_sats.
503Fakkiiwwan amma hin danda'amu (media_hosting_unavailable). b64_json ammaafis hojjeta.

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);

Fakkiiwwan sirreessuu

Fakkii ati feete, ajaja (prompt) hordofuu irratti jijjiira. Kun OpenAI's edit endpoint dha, kanaaf SDK's OpenAI'iitiin... images.edit akkuma jirutti hojjeta. Keessattuu generatoota Pro qaban wajjin edit liistaa moodeela keessatti fudhadhu.

POST https://nymbot.ai/api/v1/images/edits — API key barbaada, yookaan Kaffaltii Lightning gaaffii hundaaf tokkoof. Qaamni sun multipart/form-data, hanga 32 MBtti.

MarsaaGaraaBarbaachisaIbsa
imagefaayilaEeyyeeSuuraa irratti hojjetamu: PNG, JPEG, WebP ykn GIF, hanga 20 MB. Akkasumas akka... image[]; inni jalqabaa ni fayyadamama.
promptxila/shaxaanEeyyeeMaal jijjiiruu qaba?
modelxila/shaxaanEeyyeeJiidduu uumtuun kan qabu edit.
nlakkoofsa guutuuLakki1 hanga 4.
size
aspect_ratio
quality
negative_prompt
output_format
xila/shaxaanLakkiDhaloota irratti.
response_formatxila/shaxaanLakki"b64_json" (kan asitti akkaataa qophaa'etti) yookaan "url".

Suuraan ati ol fe'tu akkaataa PNG, JPEG, WebP ykn GIF sirrii ta'een akka ta'e mirkanaa'ina, gosa dhugaa isaa qabatee kan ergame, akkasumas host Blossom kan beekamaa irratti kan kaa'ame dha, sababni isaas generator-oonni odeeffannoo isaanii linkii fayyadamanii fidu. Akka waan beekamaatti ilaali. Yoo jijjiiramni sun gufuu argate fi kaffaltiin hin jirre, kopii hostii irratti kaa'ame sana irra deebinee balleessina. Deebiin isaa akkaataa uuminsa (generation) fakkaata. Gatii isaa gatii generatorichaa ti, kan inni immoo generatoroota tokko tokkoof suuraa itti fayyadamtuuf kaffaltii dabalataa of keessaa qabaachuu danda'a.

Deebii

{
  "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 }
}
HaalaYoom
400Fakkii ykn ajaja hin jiru, faayila fakkii hin taane (invalid_image), ykn uumituu kan sirreessuu hin dandeenye (edit_unsupported).
413Fakkichi meegabyte 20 ol dha (file_too_large), yookaan gaaffiin guutumotuun 32 MB ol ta'uu.
503Suuraan amma qarşoomuu hin danda'amu (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"));

Viidiyoo

Viidiyoonni daqiiqoota fudhatu, kanaaf duubatti hojjecha. Atis erga ergitee booda, id waan tokko hatattamaan argatta, achii immoo viidiyoon sun hamma xumurramutti idicha irratti gaaffii gaafatta. Viidiyoo uumu (generator) hundiis baasii Pro ni fayyadama.

POST https://nymbot.ai/api/v1/videos — API key barbaada, yookaan Kaffaltii Lightning gaaffii hundaaf tokkoof. Deebiiwwan 202.

MarsaaGaraaBarbaachisaIbsa
modelxila/shaxaanEeyyeeIdii uumama viidiyoo irraa ka'e GET /api/v1/models?type=video, kan akka veo.
promptxila/shaxaanEeyyeeMaaltu ta'uu qaba.
durationlakkoofsa ykn stringLakkiDuraanfala sekondii keessatti, 0 ol hanga 60. Kan dhimma fudhatu generatoriiwwan dheerina dhimma filachuu si dandeessisan qofa; kan biroo dheerina isaanii baramaa ta'e fayyadamu, inni immoo maali? seconds deebii keessatti fi gatiin hordofa.
aspect_ratioxila/shaxaanLakkiFakkeenyaaf "16:9" yookaan "9:16"; guddina akka "1280x720" suuta suuta walqixxummaa isaa dhiyoo dhaabbata.
resolution
quality
xila/shaxaanLakkiTokko kan generatorii sanaa resolutions liistii moodeelotaa keessatti, kan akka "720p" yookaan "1080p". Inni gatii murteessa. Wanti biraa hundi waliin diigama. unsupported_resolution.
image_urlxila/shaxaanLakkiFakkii itti jalqabuuf: an https:// liinkii yookaan a data:image/… URL, kan dura host Blossom bifa kallattii (public) irratti olka'e. Generatorota kan barbaachisu dha. requires_image_url.

Yeroo ati dhiyeessitu, generator, resolution fi dheerina irraa hundaa'ee gatiin sun walitti fufiinsa qaba, kanaafuu tajaajila kennuun hojii sana yeroo fudhatu hatattamaan deebii Pro keetiin kaffalama, akkasumas akka kanaatti mul'ata cost, estimated_cost fi nymbotYoo dhiyeessaan hojii kana رفضe, wanti tokkoyyuu hin kaffalamu. Yoo rendarri (render) booda dadhabe, ykn kiliipiin xumurame kuufamuu yoo hin dandeenye fi dhiyeessaan kaffaltii isaa yoo hin kaffalxin, kaffaltiin sun yeroo tokkoffaa, ofumaan deebi'a. Rendarri sa'aatii tokko booda irratti tolaa jiru irratti xumura, kaffaltii isaas ni eega, sababni isaas dhiyeessaan rendarri tokko yoo fudhate kaffaltii isaa ni kaffala. Deebiin kaffaltii (refund) kireettota (credits) deebisa, garuu lakkoofsa kaffaltii ijoollee (key's spend count) hin xiqqaayyu.

Deebii (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 kan jalqabu akka... in_progress, yookaan completed viidiyoo dursee keessa jiru waliin data yeroo genereetaraan hatattamaan deebi'e.

Viidiyoo tokko qorachaa jira

GET https://nymbot.ai/api/v1/videos/{id} — furtuu nym itti ergame sana kan qabu barbaada. Furtuun limitii isaa gahaate ilaaluu ni danda'a.

Isaan deebisa 202 viidiyoon ijaaramaa jiru irratti fi 200 yeroo xumuramee yookaan yeroo dadhabu. Sekondii 5 hanga 10 gidduutti gaafadhu. Qindoomni (check) hundi tajaajilaa tokko yeroo tokko gaafata akkasumas yeroo tokko deebisa; vidiyoo hin eegu. Hojiin tokko yeroo ergamu booda sa'aatii 24f qabama. GET /api/v1/videos Hojiiwwan 50 dhumaa furtii sanaa akka tarreessu {"object": "list", "data": […]}.

Deebii (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 dha in_progress, completed yookaan failed. A hojii dadhabe ni geessisa error ({"code": "generation_failed", "message": …}); yoo deebisame, cost 0 fi akkam? nymbot dabalata refunded_credits fi refunded_satsViidiyoon xumurame Blossom host uummataa irratti argama, fakkiiwwan hojjetaman akkuma.

HaalaYoom
400Himii hin jiru; yeroo 0 hanga 60 alatti (invalid_value); resoluushinii uumichi hin dhiyeessu (unsupported_resolution); suuraa generatorii tokkoof barbaachisu hin jiru (image_required); moodeela uumama viidiyoo hin taane (invalid_model).
402Pro balance-iin viidiyoo sana hin harkisu.
404Raayyaa akkasii hin jiru (model_not_found), ykn idii sanaan hojii nym keetiif hin jiru, ykn waggaa 24 ol ta'e jira (video_not_found).
429Nym keettiin viidiyoowwan 10 qophaa'aa jiru (video_jobs_limit). Isaan hordofi, tokko yoo xumurame immoo kan biraa dhiyeessi.
502Mashiinawwan hojii kana رفضan. Hojiin dhiyeessaan kaffaltii hin gaafatu damaan danda'u.
503Viidiyoowwan amma ergamuu ykn kuufamuu hin danda'amu (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);

Barruu gara sagaleetti jijjiiruu

Barreeffama sagaleen dubbisa, sagalee isaas linkii osoo hin taane fayila sagalee qofatu deebisa. Kun endpoint sagaleedha OpenAI, kanaafuu audio.speech.create OpenAI SDK-wwan keessatti akkamitti hojjeta.

POST https://nymbot.ai/api/v1/audio/speech — API key barbaada, yookaan Kaffaltii Lightning gaaffii hundaaf tokkoof.

MarsaaGaraaBarbaachisaIbsa
modelxila/shaxaanLakkiModela dubbii irraa... liistii moodelota sagalee madaaluu. Toftaa: sagalee baramaa, @cf/myshell-ai/melotts. aura-2 Deepgram Aura 2 dhaafii?
inputxila/shaxaanEeyyeeBarreeffamni dubbisamu: sagalee sakata'aa irratti hamma mallattoo 800ttti, Aura 2 irratti immoo 2,000ttti.
voicexila/shaxaanLakkiID sagalee tokko irraa liistii sagalee lallabaa: speaker Auraa akka kan luna (yookaan aura-2-luna-en), ykn afaan MeloTTS (en, es, fr, zh). Maqaan sagaleewwan OpenAI kan akka alloy kennamaniiru akkasumas sagalee dabeessaa moodelichaa kennu.
languagexila/shaxaanLakkiAkka koodii afaaniitti kan fakkeenya ta'an es. Sagalee malee, afaan sanaaf sagalee tokko filata. Sagaleen afaan biraa dubbatu immoo deebisa. 422 voice_language_mismatch, fi afaan moodelliin sun sagalee hin qabneof 422 unsupported_language.
response_formatxila/shaxaanLakkiSagaleen sirnaa deebi'a. mp3 qofaa. Aura 2 deebisa mp3 (kan akkaataa baramaatti), opus, aac, flac, wav yookaan pcm.
speedlakkoofsaLakkiAcceptamee fi dhiisame.

Sagaleen waloo kaffaltii kireetii waloo 3 (30 sats) gaaffii tokkoof ta'a, akka appii keessatti jiruutti. Aura 2 Pro dha, gatiin isaas barreeffama ati ergitu irratti hundaa'a. Qaamni deebii sagaleedha, kan wal fakkaatuun... Content-Type; gatiin isaa keessa jira X-Nymbot-Cost-Sats header. Yoo moodelli dubbii sun dadhabe, waan tokkoyyuu hin kaffalamuu.

Deebii

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

(audio bytes)
HaalaYoom
400Sagantii hin jiru; sagantichi dandeettii moodela olitti ga'e (input_too_long); bifa moodelichi hin danda'amne (unsupported_response_format); sagalee hin beekamne (invalid_voice); moodeelii moodeelii dubbii miti (invalid_model).
422Sagaleen afaan kenname hin dubbatu, yookaan moodeelli sagalee isaa hin qabu.
502Moodeelli dubbii sun dadhabe. Wanti tokkoyyuu hin kaffalame.

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()));

Moodellota sagalee fi sagaleewwan

Roojiiwwan lammaffaa walitti qabxii filannoo moodeela dubbii fi sagalee, yookaan moodeela barreeffama sagalee gara barreeffamaatti jijjiiruuf fayyadan. Sagalee dubbattoota Aura 2 Ingiliffaa 41 fi afaanota MeloTTS afur qabu jira.

GET https://nymbot.ai/api/v1/audio/models — furtuu hin barbaachisu.

GET https://nymbot.ai/api/v1/audio/voices?language=en — furtuu hin barbaachisu.

MarsaaGaraaBarbaachisaIbsa
languagestring (hordoffii)LakkiAfan Oromoof sagalee qofaa.
modelstring (hordoffii)LakkiMoodeelii kanaaf sagalee qofa.

Deebii (sagalee)

{
  "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 }
  ]
}

Tarree moodelootaa deebii kennu {"object": "list", "data": {"tts": […], "stt": […]}}. Modelliin dubbii hundaaf dandeettii isaa, gatii isaa, max_input_chars, response_formats, languages fi default_voice; moodeelii hiikaa (transcription) hiikaalee isaa kenna, max_file_bytes, max_seconds, foormatota fi gatii daqiiqaa tokkoof.

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);

Sagalee gara barreeffamaatti

Sagalee waraabame Whisper fayyadamuun barreeffamaatti jijjiira. Kun endpoint barreeffamaati OpenAI, kanaafuu audio.transcriptions.create hojjeta.

POST https://nymbot.ai/api/v1/audio/transcriptions — API key barbaada, yookaan Kaffaltii Lightning gaaffii hundaaf tokkoof. Qaamni sun multipart/form-data.

MarsaaGaraaBarbaachisaIbsa
filefaayilaEeyyeeGalmeen, baayitii 256 irraa hanga 25 MB fi daqiiqaa 30 hangaatti: WAV, WebM, MP4 ykn M4A, Ogg ykn Opus, MP3 fi foormaatota biroo Whisper dubbisu. MP3 fi foormaatota biroo dheerinni isaanii dura dursee dubbisuu hin dandeenye 1.8 MB irratti murama.
modelxila/shaxaanLakkiSagalee ofii whisper, kan inni Whisper Large v3 Turbo ta'ed. whisper-1, whisper-large-v3-turbo fi @cf/openai/whisper-large-v3-turbo Wal fakkaata.
languagexila/shaxaanLakkiAfaan dubbatamu, akka fakkeenyaaf enYoo dacha dabarutti addaan baafamu.
promptxila/shaxaanLakkiMaqaa irratti xiyyeeffatan ykn akkataa barreessuu eeggan, fakkeenyaaf maqaa. Lakkoofsa 1,000 jalqabaa qofatu tajaajila.
response_formatxila/shaxaanLakkijson (kan akkaataa baramaatti), text, srt, vtt yookaan verbose_json.

Faayilaات WAV, WebM, MP4 fi Ogg waliin, dheerinni isaanii waan hunduu dura hojjetamee dura faayila keessaa dubbifama, kanaaf sagantaan waraabamee daqiiqaa 30 ol ta'e dura duratti (sekondii 3 dabalataatiin) ni رفضama. Dheerinni faayila WAV sample rate, channels fi sample size isaa irraa dhufa. Dheerinni bifa biroo, fakkeenyaaf MP3, dura duratti dubbisuun hin danda'amu, kanaaf guddina isaaniitiin ni murtamama: bitrate gadi aanaa Nymbot yaadu, 8 kbps, daqiiqaa 30 bakka 1.8 MB ti, faayilli guddinaan bifa akkasii ta'e immoo ni رفضama 413 audio_too_long waan hunduma dura hojii jalqabu dura. Sagalee dheeraa WAV, WebM, MP4 ykn Ogg ta'een ergi. Yoo Whisper yoo ta'ee akkuma kanaan daqiiqaa 30 ol gabaasa, gaaffiin dhiibamee dhiyaata 413 audio_too_long, akkasumas Whisper hojii waan raawwateef, daqiiqaa 30 kaffaltiin ni fudhatama.

Duraa irratti dheerina sagalee itti kaffaltu, sekondii olitti dhihaatuun: dheerina fakkii (file) irraa dubbisame isa dheeraa, dheerina Whisper gabaase, fi dhimma fakkii (file) sanii gadi bu'uun danda'u irratti hundaa'ee, gatii minutii Whisper kaffaltii ajaja fi margin sirrii qabuun, fi gaaffii tokkoof yoo xiqqaate 0.05 credit ta'ee, kaffaltiin kun yoo baajata (balance) mana qabeenyaa (standard) irratti danda'ame irratti, yoo hin danda'amin ammoo Pro irraa kaffalama; a 402 mi'eessaan hundi maal akka barbaadan ni kenna. Appilikeeshinii keessatti, sagalee ergaa barreessuun tola ta'uu danda'a; API irratti garuu yeroo hunda kaffaltiin ni jira. Yoo Whisper dadhabe, kaffaltiin hin jiru.

Deebii

{
  "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 barreeffama qulqulluu deebisa, srt fi vtt subtitiloota deebisi, fi verbose_json afaan, yeroo fi kutaa yeroo murtaa'an dabalata. Isaan sadii JSON hin taaneef, gatiin isaanii 'headers' keessatti argama.

HaalaYoom
400Faayila hin jiru, faayila sagalee fayyadamuu hin dandeenye qabu (invalid_audio), foormaatii hin beekamne, ykn moodela modelii barreeffama hiikuu (transcription) miti (invalid_model).
402Balansiin lamaan turii hin danda'an.
413Faayilli kun megabaayiti 25 ol dha (file_too_large) ykn waraabni isaa daqiiqaa 30 ol yoo ta'e, ykn, dhimma dhumatiin isaa duraan dubbisuu hin dandeenyeef, 1.8 MB ol (audio_too_long).
502Whisper sagalee sana hin qabne. Wanti tokkoyyuu hin kaffalame.

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);

Dubbii gara Ingiliffaatti hiikuu

POST https://nymbot.ai/api/v1/audio/translations — API key barbaada, yookaan Kaffaltii Lightning gaaffii hundaaf tokkoof. Qaamni sun multipart/form-data.

Akka barreeffama sanaatti, bakka bu'oota wal-fakkaatan malee language, daangaa fi gatii, garuu barruun afaan kamiyyuu dubbatame irratti afaan Ingiliffaan deebi'a. SDK-wwan OpenAI kallattiin waan kana ittiin waamuun... 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

Barreeffama gara vektoorotaatti jijjiira barbaaduuf, qulqulleessuuf fi walitti qabuuf. Moodellonni Cloudflare irratti hojjetu kunis qabeenya bu'uuraa (standard balance) fayyadamu.

POST https://nymbot.ai/api/v1/embeddings — API key barbaada, yookaan Kaffaltii Lightning gaaffii hundaaf tokkoof.

MarsaaGaraaBarbaachisaIbsa
modelxila/shaxaanEeyyeeModiiilii embedding kan... GET /api/v1/models?type=embedding.
inputstring yookaan arraywwan stringiiEeyyeeBarruu itti galchamu, hanga 100 qabxiiwwan xumura hin qabneetti. Karaa tokko tokkoon (arrays) ni diigama (token_input_unsupported). Galchiin hundi moodeela sanaa waliin deemuun qaba. context_length, tokkanii bakka tokko tokko bytes afur akka ta'anitti lakkaa'ame.
encoding_formatxila/shaxaanLakkifloat (kan akkaataa jireenyaa) ykn base64 (little-endian 32-bit floats).
dimensionslakkoofsa guutuuLakkiGuddiina moodelaa ofii, yookaan moodela kan qabuuf supported_dimensions tokko isaannii; sana booda vektooriin gabaabbachifama unnifi normala taasifama. Kan biroo kamiyyuu ni didama.
MoodeelaDimenshiniwwanHaala irratti hundaa'e
@cf/baai/bge-m31024, afaanota hedduu8,192 tookenii
@cf/qwen/qwen3-embedding-0.6b1024, afaanota hedduu8,192 tookenii
@cf/baai/bge-large-en-v1.51024, Afaan Ingiliffaa512 tokiniii
@cf/baai/bge-base-en-v1.5768, Afaan Ingilizii512 tokiniii
@cf/baai/bge-small-en-v1.5384, Ingiliffa512 tokiniii

Tarreen moodelotaa ragaa dhugaa kan ta'etti kanneen argamuu danda'an fi gatii isaanii irratti; EmbeddingGemma Google-ii, yoo gaaffii dhiyaate vektoora gabaabaa waliin, yoo katalaagii keessatti gatii qabaate achis mul'ata. Embeddings tokkinoota (token) galchee irratti madaalamu, fi mi'aannoon kireedii 0.05 gaaffii (request) hundaaf qofa murteeffama, tokko tokko irratti miti, kanaafuu barreeffamoota hedduu gaaffii tokko keessatti walitti qabuun erguun, tokko tokkoon erguu caalaa gatii xiqqaan dhufa.

Deebii

{
  "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 }
}
HaalaYoom
400Sagalee hin jiru ykn sagaleen duwwaa; array tokonii tokkoffaa (token_input_unsupported); 100 irra caala input (too_many_inputs); madda dhimmaatiin (model) yoo danda'u caalaa dheeraan (input_too_long); saba xumuraa moodeelliin kennuu hin dandeenye (unsupported_dimensions).
402Gamaggala bu'uuraa baay'ee gad-aadha. Embeddings gamaggela Pro osoo hin fayyadamne.
404Maqaa sanaan embedding model hin jiru.
502Moodeelli sun dadhabe. Wanti tokkoyyuu hin kaffalame.

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);