Di tin dɛn we pɔsin fɔ no bɔt Dɛvɛlɔpɔs
Imis, osio, ɛn imbedins
Di generators di de na di app, ɛn di building blocks fɔ search: pika, video, spik, transkripson ɛn embeddings, ɛbiri bɛl ɛ bɛl fɔ di ɛnd-yus de kɔnt fɔm yu bɛlans.
Dɛn translet dis pej wit mashin fɔ mek i izi fɔ am. Di Inglish ɔrijinal na di vɛshɔn we de aplay.
Mekin imaj de de
E mek wan to for pikcha frɔm wan prompt ɛn gi dem bak wen dem don. Na di sɛm
set ɔf jeneretɔ ɔ bɔt ?image in di ap.
POST https://nymbot.ai/api/v1/images/generations — nid an API key, ɔ Wan Lightning paymen fɔ evri rikwest.
Ids de kam frɔm GET /api/v1/models?type=imageDi stannad jeneretɔ,
@cf/black-forest-labs/flux-1-schnell, i kos fɔt 5 stanadad kridit (50 sats) fɔ wan
pikcha. Evri oda jeneretɔ de spɛnd Pro kridit na in wan prais, wit di usɔəl fi ɛn
majin, de fɔ mɛn de in di ap. n piktchur de kos aw di moni boku?
n bim kais di enen. Wan fild we wan jenereta nɔ tek, de dro de instead pan de se dem nɔ wan tɛk am;
di stanad jenereta de yus di prɔmpt ɔnli.
| Fild | Tup | Di wan we nyu nid | Dɛskripsin |
|---|---|---|---|
model | strin | Yɛs | Wan generator id, defo as nano-banana. |
prompt | strin | Yɛs | Wetin fɔ drɔ. Na di fɔst 2,000 kɛktas de yuz. |
n | integer | No | 1 to 4. Di difɔlt na 1. I de kɔntɛl as num_images. |
size | strin | No | Wan shak di im bɛ dɛn de "16:9", ɔɔ an OpenAI saiz de boku ɔl osɔn as "1792x1024", wey de kam di wan we de klose pass 1:1, 16:9, 9:16, 4:3, 3:4, 3:2, 2:3, 21:9, 5:4 an 4:5. "auto" e luv am go to di jinereita. |
aspect_ratio | strin | No | Di sem as size, an in win if bɔt den sen dem. |
quality | strin | No | Wetin de spesifik fo di generator, sɔtɔs as "low", "medium" ɔ "high". |
negative_prompt | strin | No | Wetin yu de leef out. |
output_format | strin | No | "png", "jpeg" ɔ "webp". |
response_format | strin | No | "url" (di default) ɔ "b64_json". |
image_url | strin | No | Wan pikchur fɔ stawt fɔm: an https:// link wey no big pass 4,096 characters wey nɔ get any user name o password inna am, o a data:image/…;base64 URL (PNG, JPEG, WebP ɔ GIF; no SVG). Oni fɔ di jenereta we de wit edit; di wan we di pipul we get nid am requires_image_url. |
resolution e nɔ de yuz: ɛch jeneretɔ mek in ɔn sɔz. Wit url,
ol pičap de uploat wan publɪk Blossom host an yu go get in link (fɛ bi jinarɛtɔ di kɔm di in in link, di wan we de pas ɔn). Eni wan we get di link kin ɔpɛn in an in nɔ kin tek am ɔf ɛn ɛn ɛn; si Wetin di API go de go sabiWit
b64_json di piksa de kam bak na di risponz an e nɔ de go up lod at ɔl. Wan piksa
wey de send as a data: URL inna image_url dem de check am de di sef we de an
elidit and de upload am to Blossom fɔs so di generator kin fɛt am; ɔ de ɛlɪt am ɛgi if di rɪkwɛst fɛl nɔ bɪld.
If sam di n Piktcha fèl, yu go get di wan we bin wok, dem go charge yu only fɔ di wan we bin wok (plus di wan we di provayda bin charge yu den we no bin wok), and nymbot.failed dem se ɔm ti di pɔsin dɛn we no de. If ɔl dɛn feyl, di rikwes i go rɛtɔn 502.
Ansa
{
"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 }
}
| Stetɔs | Wɛn |
|---|---|
400 | No komand; n autsayd 1 to 4 (invalid_value); wan bɛd saiz (invalid_size) ɔ pikutcha (invalid_image, invalid_image_url); wan model wey de exist bɔt i nɔt am im fɔ mek imij (invalid_model); wan pikcha fɔ wan jinereitɔ di wan we nɔ kin edit (edit_unsupported); no pikcha fɔ wan we nid am (image_required). |
402 | Di balance nɔ go ɛna fɔ kɔvɛ ɛvri piksa dɛn aski fɔ. |
404 | No model de wit dat nem (model_not_found). |
502 | Di jeneretɔ fɛl 🫥upstream_error). Nɔtin de de charge ɔnes de de poyde de bil fɔ di atɛm; den de ɛra de ɛrɔ 📧 charged_sats. |
503 | Pikchur nɔ de fɔ gi yu kɔntɛl rait naw (media_hosting_unavailable). b64_json I de wok stil. |
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);
Editi pikiç
E de chanji wan pika we yu upload, de fofolo wan prompt. Dis na OpenAI edit endpoint, so di OpenAI
SDKs' images.edit i wok de as i de. Onli Pro jinireta wit edit in di
model list aksɛpt am.
POST https://nymbot.ai/api/v1/images/edits — nid an API key, ɔ Wan Lightning paymen fɔ evri rikwest. Di bodi de multipart/form-data, go ɔp 32 MB.
| Fild | Tup | Di wan we nyu nid | Dɛskripsin |
|---|---|---|---|
image | fayl | Yɛs | Di pikcha fɔ edit: PNG, JPEG, WebP ɔ GIF, ɛpɔ de 20 MB. Wi de ɔse de ɔlsɔ image[]; di fes wan de yuz. |
prompt | strin | Yɛs | Wetin fɔ tɔm. |
model | strin | Yɛs | Wan generator wit edit. |
n | integer | No | 1 to 4. |
sizeaspect_ratioqualitynegative_promptoutput_format | strin | No | Sɔ fɔ di nɔse. |
response_format | strin | No | "b64_json" (di default hie) ɔ "url". |
Di pika we yu upload de check to si se e na gud PNG, JPEG, WebP or GIF, we send am na wan we e real, and we put am na wan public Blossom host, bikos di generators de fɛt dia input na link. Trit am as wan we na public. If di edit no wok and no tin de charge, di copy we de host go delet ɛn ɛn. Di response de get di sɛm sɛp as di wan fɔ genyeyeɪt. Di prais na di generator prais, we fɔ sam generator de inklud wan ɔdin ɔdin fɔ di input pika.
Ansa
{
"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 }
}
| Stetɔs | Wɛn |
|---|---|
400 | No imaj ɔ prompt, wan fayl we nɔ píkcha (invalid_image), ɔ jenریت we nɔ kin edit (edit_unsupported). |
413 | Di piki-cha big pas di 20 MB (file_too_large), ɔ de hol rɪkwes ova 32 MB. |
503 | Di pikcha no de pos na de tɛm (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"));
Vidiyo
Wan vidio de tek tin am, so e de run na bakgraon. Yu submet am, yu get wan ID kwin-kwin, den yu de ask pan di ID go on till e don. Evri vidio jeneretɔ de spɛn di Pro balans.
POST https://nymbot.ai/api/v1/videos — nid an API key, ɔ Wan Lightning paymen fɔ evri rikwest. I de kam bak 202.
| Fild | Tup | Di wan we nyu nid | Dɛskripsin |
|---|---|---|---|
model | strin | Yɛs | Wan vidio jenereitod ID froom GET /api/v1/models?type=video, boku boku we de, ɔ kɛm as veo. |
prompt | strin | Yɛs | Wetin ded fayn du. |
duration | namba o strin | No | Lɛŋf in sɛkɔnd, pas 0 go ɔp to 60. Dem jus de yuz am fɔ di jinirotas we de let yu ɛlɛkt di lɛŋf; di ɔda dem de mek de fɔ de lɛŋf we dem de mek, we na wetin dat bi seconds na di ripons ɛn di prais de fɔlō. |
aspect_ratio | strin | No | Bi mɛsɔ mɛsɔ dɛn lɛn mi lɛn mi kɛ sɔlɔ mɛsɔ mɛsɔ dɛn lɛn mi lɛn mi kɛ sɔlɔ mɛsɔ mɛsɔ dɛn lɛn mi lɛn mi kɛ sɔlɔ mɛsɔ mɛsɔ dɛn lɛn mi lɛn mi kɛ sɔlɔ mɛsɔ mɛsɔ dɛn lɛn mi lɛn mi kɛ sɔlɔ mɛsɔ mɛsɔ dɛn lɛn mi lɛn mi kɛ sɔlɔ mɛsɔ mɛsɔ dɛn lɛn mi lɛn mi kɛ sɔlɔ mɛsɔ mɛsɔ dɛn lɛn mi lɛn mi kɛ sɔlɔ mɛsɔ mɛsɔ dɛn lɛn mi lɛn mi kɛ sɔlɔ mɛsɔ mɛsɔ dɛn lɛn mi lɛn mi kɛ sɔlɔ mɛsɔ mɛsɔ dɛn lɛn mi lɛn mi kɛ sɔlɔ mɛsɔ mɛsɔ dɛn lɛn mi lɛn mi kɛ sɔlɔ mɛsɔ mɛsɔ dɛn lɛn mi lɛn mi kɛ sɔlɔ mɛsɔ mɛsɔ dɛn lɛn mi lɛn mi kɛ sɔlɔ mɛsɔ mɛsɔ dɛn lɛn mi lɛn mi kɛ sɔlɔ mɛsɔ mɛsɔ dɛn lɛn mi lɛn mi kɛ sɔlɔ mɛsɔ mɛsɔ dɛn lɛn mi lɛn mi kɛ sɔlɔ mɛsɔ mɛsɔ dɛn lɛn mi lɛn mi kɛ sɔlɔ mɛsɔ mɛsɔ dɛn lɛn mi lɛn mi kɛ sɔlɔ mɛsɔ mɛsɔ dɛn lɛn mi lɛn mi kɛ sɔlɔ mɛsɔ mɛsɔ dɛn lɛn mi lɛn mi kɛ sɔlɔ mɛsɔ mɛsɔ dɛn lɛn mi lɛn mi kɛ sɔlɔ mɛsɔ mɛsɔ dɛn lɛn mi lɛn mi kɛ sɔlɔ mɛsɔ mɛsɔ dɛn lɛn mi lɛn mi kɛ sɔlɔ mɛsɔ mɛsɔ dɛn lɛn mi lɛn mi kɛ sɔlɔ mɛsɔ mɛsɔ dɛn lɛn mi lɛn mi kɛ sɔlɔ mɛsɔ mɛsɔ dɛn lɛn mi lɛn mi kɛ sɔlɔ mɛsɔ mɛsɔ dɛn lɛn mi lɛn mi kɛ sɔlɔ mɛsɔ mɛsɔ dɛn lɛn mi lɛn mi kɛ sɔlɔ mɛsɔ mɛsɔ dɛn lɛn mi lɛn mi kɛ sɔlɔ mɛsɔ mɛsɔ dɛn lɛn mi lɛn mi kɛ sɔlɔ mɛsɔ mɛsɔ dɛn lɛn mi lɛn mi kɛ sɔlɔ mɛsɔ mɛsɔ dɛn lɛn mi lɛn mi kɛ sɔlɔ mɛsɔ mɛsɔ dɛn lɛn mi lɛn mi kɛ sɔlɔ mɛsɔ mɛsɔ dɛn lɛn mi lɛn mi kɛ sɔlɔ mɛsɔ mɛsɔ dɛn lɛn mi lɛn mi kɛ sɔlɔ mɛsɔ mɛsɔ dɛn lɛn mi lɛn mi kɛ sɔlɔ mɛsɔ mɛsɔ dɛn lɛn mi lɛn mi kɛ sɔlɔ mɛsɔ mɛsɔ dɛn lɛn mi lɛn mi kɛ sɔlɔ mɛsɔ mɛsɔ dɛn lɛn mi lɛn mi kɛ sɔlɔ mɛsɔ mɛsɔ dɛn lɛn mi lɛn mi kɛ sɔlɔ mɛsɔ mɛsɔ dɛn lɛn mi lɛn mi kɛ sɔlɔ mɛsɔ mɛsɔ dɛn lɛn mi lɛn mi kɛ sɔlɔ mɛsɔ mɛsɔ dɛn lɛn mi lɛn mi kɛ sɔlɔ mɛsɔ mɛsɔ dɛn lɛn mi lɛn mi kɛ sɔlɔ mɛsɔ mɛsɔ dɛn lɛn mi lɛn mi kɛ sɔlɔ mɛsɔ mɛsɔ dɛn lɛn mi lɛn mi kɛ sɔlɔ mɛsɔ mɛsɔ dɛn lɛn mi lɛn mi kɛ sɔlɔ mɛsɔ mɛsɔ dɛn lɛn mi lɛn mi kɛ sɔlɔ mɛsɔ mɛsɔ dɛn lɛn mi lɛn mi kɛ sɔlɔ mɛsɔ mɛsɔ dɛn lɛn mi lɛn mi kɛ sɔlɔ mɛsɔ mɛsɔ dɛn lɛn mi lɛn mi kɛ sɔlɔ mɛsɔ mɛsɔ dɛn lɛn mi lɛn mi kɛ sɔlɔ mɛsɔ mɛsɔ dɛn lɛn mi lɛn mi kɛ sɔlɔ mɛsɔ mɛsɔ dɛn lɛn mi lɛn mi kɛ sɔlɔ mɛsɔ mɛsɔ dɛn lɛn mi lɛn mi kɛ sɔlɔ mɛsɔ mɛsɔ dɛn lɛn mi lɛn mi kɛ sɔlɔ mɛsɔ mɛsɔ dɛn lɛn mi lɛn mi kɛ sɔlɔ mɛsɔ mɛsɔ dɛn lɛn mi lɛn mi kɛ sɔlɔ mɛsɔ mɛsɔ dɛn lɛn mi lɛn mi kɛ sɔlɔ mɛsɔ mɛsɔ dɛn lɛn mi lɛn mi kɛ sɔlɔ mɛsɔ mɛsɔ dɛn lɛn mi lɛn mi kɛ sɔlɔ mɛsɔ mɛsɔ dɛn lɛn mi lɛn mi kɛ sɔlɔ mɛsɔ mɛsɔ dɛn lɛn mi lɛn mi kɛ sɔlɔ mɛsɔ mɛsɔ dɛn lɛn mi lɛn mi kɛ sɔlɔ mɛsɔ mɛsɔ dɛn lɛn mi lɛn mi kɛ sɔlɔ mɛsɔ mɛsɔ dɛn lɛn mi lɛn mi kɛ sɔlɔ mɛsɔ mɛsɔ dɛn lɛn mi lɛn mi kɛ sɔlɔ mɛsɔ mɛsɔ dɛn lɛn mi lɛn mi kɛ sɔlɔ mɛsɔ mɛsɔ dɛn lɛn mi lɛn mi kɛ sɔlɔ mɛsɔ mɛsɔ dɛn lɛn mi lɛn mi kɛ sɔlɔ mɛsɔ mɛsɔ dɛn lɛn mi lɛn mi kɛ sɔlɔ mɛsɔ mɛsɔ dɛn lɛn mi lɛn mi kɛ sɔlɔ mɛsɔ mɛsɔ dɛn lɛn mi lɛn mi kɛ sɔlɔ mɛsɔ mɛsɔ dɛn lɛn mi lɛn mi kɛ sɔlɔ mɛsɔ mɛsɔ dɛn lɛn mi lɛn mi kɛ sɔlɔ mɛsɔ mɛsɔ dɛn lɛn mi lɛn mi kɛ sɔlɔ mɛsɔ mɛsɔ dɛn lɛn mi lɛn mi kɛ sɔlɔ mɛsɔ mɛsɔ dɛn lɛn mi lɛn mi kɛ sɔlɔ mɛsɔ mɛsɔ dɛn lɛn mi lɛn mi kɛ sɔlɔ mɛsɔ mɛsɔ dɛn lɛn mi lɛn mi kɛ sɔlɔ mɛsɔ mɛsɔ dɛn lɛn mi lɛn mi kɛ sɔlɔ mɛsɔ mɛsɔ dɛn lɛn mi lɛn mi kɛ sɔlɔ mɛsɔ mɛsɔ dɛn lɛn mi lɛn mi kɛ sɔlɔ mɛsɔ mɛsɔ dɛn lɛn mi lɛn mi kɛ sɔlɔ mɛsɔ mɛsɔ dɛn lɛn mi lɛn mi kɛ sɔlɔ mɛsɔ mɛsɔ dɛn lɛn mi lɛn mi kɛ sɔlɔ mɛsɔ mɛsɔ dɛn lɛn mi lɛn mi kɛ sɔlɔ mɛsɔ mɛsɔ dɛn lɛn mi lɛn mi kɛ sɔlɔ mɛsɔ mɛsɔ dɛn "16:9" ɔ "9:16"; wan size we bi sɔm "1280x720" e de kam de niaset reashio. |
resolutionquality | strin | No | Wan inna di generator dem di resolutions na di model lẹst, de kin as "720p" ɔ "1080p". I de set di prais. Anin tin di fɔ nɔ de aksepted wit unsupported_resolution. |
image_url | strin | No | Wan pikchur fɔ stawt fɔm: an https:// link o a data:image/… URL, wey de upload na wan pablis Blossom host fɔst. Di generators de nid am wit requires_image_url. |
Di pris de set wen yu kɔmpit am, frɔm di jeneyeta, rezolushon, ɛn lenf, so de
kɔch ij frɔm yu Pro balans as sɔn ɛs di provayda ɔksɛpt di wok, ɛn de ɔsho lɛk as
cost, estimated_cost ɛn nymbot. If di provider rifyuz di wok, nɔtin dem go ɔp. If di render fɛl lator, ɔ di finisht klip nɔ de kɔm ɔ kɔm stɔ
di pɔsin fɔ de bil am, dem go rinfɔnd di ɔp wan tɛm, ɔtomatikali. Wan render we de go
afta wan ɔa de fɔ giv am ɔp, in ɔp de na di fɔ, bikɔs di provayda de bil fɔ wan render ɔ wan ɔkɛpt am. Wan rinfɔnd de rɛtɔn di kredɪt bɔt ɛt nɔ de lɔw di kɪ kɔnt fɔ spɛnd.
Ansa (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 bi de as in_progress, ɔ de completed wit di vidio
wey de in alredi data ben di generator kam bak stret.
Mi de check wan vidio
GET https://nymbot.ai/api/v1/videos/{id} — nidi wan ki wey belong to di nym wey bin kam sent am. Wan ki wey don reach im limit kin stil check.
E ansa am 202 wɛl de mek di vidio an 200 Wen i don finis o i don fail. Ask evri 5 to 10 sekon. Evri check ask di provider wan taim and i ans at wan taim; i nɔ de wait fɔ di video. Dɛn de kip di job fɔ 24 aawas afta i don kɔm in.
GET /api/v1/videos lis di las 50 wok we di ki bin du as
{"object": "list", "data": […]}.
Ansa (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 na in_progress, completed ɔ failed. Wan
job wey feyl kariya error ({"code": "generation_failed", "message": …});
if de gi di moni bak, cost na 0 an nymbot pan dɛn addz
refunded_credits ɛn refunded_satsDi finisht vidio de pan wan public
Blossom host, de la se de mek im de sɔm de piktɔ
| Stetɔs | Wɛn |
|---|---|
400 | No prompt; ɛ dɛreɪshon we de na ɛksid 0 to 60 (invalid_value); wan resolution di generator nɔ de gi (unsupported_resolution); no pika fɔ wan jini-retat we nid wan (image_required); wan model wey no bi video generator (invalid_model). |
402 | Di Pro balance nɔ go ɛn fɔ kɔv di vidio. |
404 | No generator de (model_not_found), ɔ no job de wit dat id fɔ yu nym, ɔ ɛt de mɔ ɛn den 24 aur ɔl (video_not_found). |
429 | Yu nym don get 10 video wey de render (video_jobs_limit). Luk pan dem den, ɛn sen di oda den wen wan am don. |
502 | Di generator no bin wan tek di wok. Nɔting nɔ go bil una unles di provider bil for am. |
503 | Videous no fit de sen o de kip na naw (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);
Tɛks to spich
I ridi teks awl-aut ɛn gi yu di odio fayl de, ɛn ɛn, ɛn nɔ jus wan link. Na OpenAI spich ɛnd-pɔint ɛn, so audio.speech.create insay de OpenAI SDKs i wok
POST https://nymbot.ai/api/v1/audio/speech — nid an API key, ɔ Wan Lightning paymen fɔ evri rikwest.
| Fild | Tup | Di wan we nyu nid | Dɛskripsin |
|---|---|---|---|
model | strin | No | Wan spich modul fɔm di lista fɔ di audio models. Default: di stándad vɔis, @cf/myshell-ai/melotts. aura-2 na Deepgram Aura 2. |
input | strin | Yɛs | Di tɛks fɔ rit: ap to 800 kɛktas fɔ di stɛndad voys, 2,000 fɔ Aura 2. |
voice | strin | No | Wan voys ID frɔm di lis di voys: wan Aura spika sɔs as luna (o aura-2-luna-en), ɔ ɔ MeloTTS langwej (en, es, fr, zh). OpenAI vokis nem de se as alloy dem de apriwet an dem gi di model di defo-de voys. |
language | strin | No | Wan langwij kod lɛk as esWout aw bɔis, e piki wan fɔ dat langwej. Wan bɔis we de spik anɔda langwej de kam bak 422 voice_language_mismatch, an langwej di model nɔ get vokis fɔ 422 unsupported_language. |
response_format | strin | No | Di stándad voys de kam bak mp3 onli. Aura 2 kɔm bak mp3 (di default), opus, aac, flac, wav ɔ pcm. |
speed | namba | No | Aksɛpt am an de lɔn am. |
Di stanad voys kɔst 3 stanad kredɪt (30 sats) fɔ ɛvri rikwɛst, de kɔm de na di ap. Aura 2
na Pro, ɛn de prays am bɔs di kɛrɛktɛ de wi sɛn. Di rispons bɔdi na di ɔdio, wit wan we de matʃ
Content-Type; di kos de in di X-Nymbot-Cost-Sats header. If di
spich model feyl, nɔtin nɔ go de kach.
Ansa
HTTP/1.1 200 OK
Content-Type: audio/mpeg
X-Nymbot-Cost-Sats: 4.2
X-Nymbot-Balance-Sats: 41055.6
(audio bytes)
| Stetɔs | Wɛn |
|---|---|
400 | No input; de input pas de limit we de model de roun (input_too_long); wan fɔmat di modèl nɔ go di ɛbil tu (unsupported_response_format); wan voys we nɔ sabi we (invalid_voice); wan model wey no bi spiːch model (invalid_model). |
422 | Di vɔis nɔ de spik di langwej we i gi, ɔ di modèl nɔ get vɔis fɔ am. |
502 | Di spich model feyl. Nɔtin nɔ de kach. |
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()));
Odiu modèl en voys
Twi pabliki lɔst fɔ pik wan spich model an wan voys, ɔ wan transkripshen model. I de 41 Aura 2 Ingrish spikah an fɔ MeloTTS langwej di fɔ.
GET https://nymbot.ai/api/v1/audio/models — no ki nid.
GET https://nymbot.ai/api/v1/audio/voices?language=en — no ki nid.
| Fild | Tup | Di wan we nyu nid | Dɛskripsin |
|---|---|---|---|
language | stiring (kwestin) | No | Ona voys fɔ dis langwej. |
model | stiring (kwestin) | No | Oly voys fɔ dis modèl. |
Ansa (vɔys)
{
"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 }
]
}
Di model list di ansa lɛn {"object": "list", "data": {"tts": […], "stt": […]}}.
I di gi im balance, prays, fɔ i ɛpich spich modèl, max_input_chars,
response_formats, languages ɛn default_voice; di
transcription model de gi in alias, max_file_bytes, max_seconds,
fomats ɛn pris per minit.
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);
Spich di tin we yu de tok de to tɛks ✍️
E de tɔn wan rekɔding kam tɛks wit Whisper. Dis na OpenAI transcription ɛnd-pɔint, so
audio.transcriptions.create e de wok.
POST https://nymbot.ai/api/v1/audio/transcriptions — nid an API key, ɔ Wan Lightning paymen fɔ evri rikwest. Di bodi de multipart/form-data.
| Fild | Tup | Di wan we nyu nid | Dɛskripsin |
|---|---|---|---|
file | fayl | Yɛs | Di rekoding, frɔm 256 bytes go 25 MB ɛn up to 30 minit: WAV, WebM, MP4 ɔ M4A, Ogg ɔ Opus, MP3 ɛn di oda format we Whisper de rit. MP3 ɛn oda format we di lenk nɔ de rit fɔst fɔst de limid to 1.8 MB. |
model | strin | No | Di wan we de na fɔst whisper, wey na Whisper Large v3 Turbo. whisper-1, whisper-large-v3-turbo ɛn @cf/openai/whisper-large-v3-turbo mɛn di sām. |
language | strin | No | Di langwej we de spik, seki enWoy de katch am if dem de leav am out. |
prompt | strin | No | Wod o speling we yu de mek ekspekt, di parad nem. Na de fɔst 1,000 karkat de yus. |
response_format | strin | No | json (di default), text, srt, vtt ɔ verbose_json. |
Fɔ WAV, WebM, MP4, and Ogg fial, dem de ridi di lenk fɔm di fial bifo eni tɔk de rɔn, so if di rɛkɔdnin de mor di 30 minit, dem de rɛfjuː am de fɔst (wit 3 sekɔn grays). Di lenk fɔ WAV fial de kam fɔm i sample rēt, i chanɛl, and i sample saiz. Di lenk fɔ ɔda fɔmat, di sɛm MP3, nɔ de kɛn bi rid de fɔst, so dem de kɛm bɔi wit saiz: at di lɔl bita-rēt Nymbot de asium, 8 kbps, 30 minit na 1.8 MB, and if fial biggɔn pan dat fɔmat, dem de rɛfjuː am wit 413
audio_too_long fɔ eniting run. Sen lonɡa rekọdin ɛz WAV, WebM, MP4 ɔ Ogg.
If Whisper den rɔpɔt mɔ dɛn mɔ nɔ pas 30 minɪt ɔlwe, dɛn no gi di rɪkwest wit
413 audio_too_long, and biko Whisper run, dɛn de ɔt 30 minit.
Yu de pay for di lɛŋf di awdiio, we de roun ap go to di sɛkɔn: di lɛngf dɛn rɛd fɔm di fayl, di lɛngf we Whisper de rīpọt, ɛn di lɛs di fayl saiz de alou, na Whisper pɛ-mɪnɪt prait
wit di ɔjuːfɔːl fī, ɛn mɑːdʒin, ɛn at līst 0.05 krɛdit fɔ ɔ de rɪkwɛst. Dɛn de pay am fɔm di stændad
bælens wen dat de ɛnaf fɔ kʌvər di kɔst, ɛn fɔm Pro ɔdawe; a 402 it se we di balans go nid. Na di app, transcribing wan voice mesij kin bi firi; na di API, dem de chaj yu awle-yus. If Whisper no wok, dem no go chaj yu nating.
Ansa
{
"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 it gi plain tekst, srt ɛn vtt bring di subtaytul, and
verbose_json di langwej, di deyer, ɛn di taim segmɛnt dem. Fɔ di tri we nɔ JSON, di kɔst de na di hedɛ.
| Stetɔs | Wɛn |
|---|---|
400 | No fayl, wan fayl we no get any odio we di uza de uza (invalid_audio), wan format we nɔ sabi, ɔ wan model we nɔ bi transcription model (invalid_model). |
402 | Neda di balance de go fɔ kɔvɛ am. |
413 | Di fayl de pan mɔː na 25 MB (file_too_large) o di rekordin de o boku pan 30 minit, o, na wan fɔmat we yu nɔ de sabi di lenk fɔst, de o boku pan 1.8 MB (audio_too_long). |
502 | Whisper no bin de kaba di audio. Nɔ ɛtin nɔ de kach ɛnɛni mɔni. |
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);
Translet spi tok di Englis
POST https://nymbot.ai/api/v1/audio/translations — nid an API key, ɔ Wan Lightning paymen fɔ evri rikwest. Di bodi de multipart/form-data.
Di sem bizn wetin transcription, wit di sem fild pan, pɔt fɔ language, limits ɛn
praɪs, bɔt di tɛks kɔm bɛk in Inglɛn wɔtɛv lɛngwɪʤ ɛ bɛ spɔk. Di OpenAI SDKs kɔl
ɪt wit 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);
Di wey yu put tɛng ɛsin
E tɔn wan tekst tɔn wan vektɔ, fɔ mek yu fɛnd am, klan am tɔn, ɛn fɛnd di wan we de kɔnt in dɛn. Di modɛl de ran na Cloudflare ɛn ɛ de spɛn di stɛndat bɛlɛns.
POST https://nymbot.ai/api/v1/embeddings — nid an API key, ɔ Wan Lightning paymen fɔ evri rikwest.
| Fild | Tup | Di wan we nyu nid | Dɛskripsin |
|---|---|---|---|
model | strin | Yɛs | An embedding model fɔm GET /api/v1/models?type=embedding. |
input | stiring ɔ ɛray ɔ stiring 🇸🇱 | Yɛs | Di tɛks we yu go put in, up to 100 non-empty stɛng. Token aray de mek dem refius (token_input_unsupported). Ebri inpɔt mas fit di model de context_length, de kount am pas bɔt fɔ bɛt bɛt bɛt bɛt bɛt bɛt bɛt bɛt bɛt bɛt bɛt bɛt bɛt bɛt bɛt bɛt bɛt bɛt bɛt bɛt bɛt bɛt bɛt bɛt bɛt bɛt bɛt bɛt bɛt bɛt bɛt bɛt bɛt bɛt bɛt bɛt bɛt bɛt bɛt bɛt bɛt bɛt bɛt bɛt bɛt bɛt bɛt bɛt bɛt bɛt bɛt bɛt bɛt bɛt bɛt bɛt bɛt bɛt bɛt bɛt bɛt bɛt bɛt bɛt bɛt bɛt bɛt bɛt bɛt bɛt bɛt bɛt bɛt bɛt bɛt bɛt bɛt bɛt bɛt bɛt bɛt bɛt bɛt bɛt bɛt bɛt bɛt bɛt bɛt bɛt bɛt bɛt bɛt bɛt bɛt bɛt bɛt bɛt bɛt bɛt bɛt bɛt bɛt bɛt bɛt bɛt bɛt bɛt bɛt bɛt bɛt bɛt bɛt bɛt bɛt bɛt bɛt bɛt bɛt bɛt bɛt bɛt bɛt bɛt bɛt bɛt bɛt bɛt bɛt bɛt bɛt bɛt bɛt bɛt bɛt bɛt bɛt bɛt bɛt bɛt bɛt bɛt bɛt bɛt bɛt bɛt bɛt bɛt bɛt bɛt bɛt bɛt bɛt bɛt bɛt bɛt bɛt bɛt bɛt bɛt bɛt bɛt bɛt bɛt bɛt bɛt bɛt bɛt bɛt bɛt bɛt bɛt bɛt bɛt bɛt bɛt bɛt bɛt bɛt bɛt bɛt bɛt bɛt bɛt bɛt bɛt bɛt bɛt bɛt bɛt bɛt bɛt bɛt bɛt bɛt bɛt bɛt bɛt bɛt bɛt bɛt bɛt bɛt bɛt bɛt bɛt bɛt bɛt bɛt bɛt bɛt bɛt bɛt bɛt bɛt bɛt bɛt bɛt bɛt bɛt bɛt bɛt bɛt bɛt bɛt bɛt bɛt bɛt bɛt bɛt bɛt bɛt bɛt bɛt bɛt bɛt bɛt bɛt bɛt bɛt bɛt bɛt bɛt bɛt bɛt bɛt bɛt bɛt bɛt bɛt bɛt bɛt bɛt bɛt bɛt bɛt bɛt bɛt bɛt bɛt bɛt bɛt bɛt bɛt bɛt bɛt bɛt bɛt bɛt bɛt bɛt bɛt bɛt bɛt bɛt bɛt bɛt bɛt bɛt bɛt bɛt bɛt bɛt bɛt bɛt bɛt bɛt bɛt bɛt bɛt bɛt bɛt bɛt bɛt bɛt bɛt bɛt bɛt bɛt bɛt bɛt bɛt bɛt bɛt bɛt bɛt bɛt bɛt bɛt bɛt bɛt bɛt bɛt bɛt bɛt bɛt bɛt bɛt bɛt bɛt bɛt bɛt bɛt bɛt bɛt bɛt bɛt bɛt bɛt bɛt bɛt bɛt bɛt bɛt bɛt bɛt bɛt bɛt bɛt bɛt bɛt bɛt bɛt bɛt bɛt bɛt bɛt bɛt bɛt bɛt bɛt bɛt bɛt bɛt bɛt bɛt bɛt bɛt bɛt bɛt bɛt bɛt bɛt bɛt bɛt bɛt bɛt bɛt bɛt bɛt bɛt bɛt bɛt bɛt bɛt bɛt bɛt bɛt bɛt bɛt bɛt bɛt bɛt bɛt bɛt bɛt bɛt bɛt bɛt bɛt bɛt bɛt bɛt bɛt bɛt bɛt bɛt bɛt bɛt bɛt bɛt bɛt bɛt bɛt bɛt bɛt bɛt bɛt bɛt bɛt bɛt bɛt bɛt bɛt bɛt bɛt bɛt bɛt bɛt bɛt bɛt bɛt bɛt bɛt bɛt bɛt bɛt bɛt bɛt bɛt bɛt bɛt bɛt bɛt bɛt bɛt bɛt bɛt bɛt bɛt bɛt bɛt bɛt bɛt bɛt bɛt bɛt bɛt bɛt bɛt bɛt bɛt bɛt bɛt bɛt bɛt bɛt bɛt bɛt bɛt bɛt bɛt bɛt bɛt bɛt bɛt bɛt bɛt bɛt bɛt bɛt bɛt bɛt bɛt bɛt bɛt bɛt bɛt bɛt bɛt bɛt bɛt bɛt bɛt bɛt bɛt bɛt bɛt bɛt bɛt bɛt bɛt bɛt bɛt bɛt bɛt bɛt bɛt bɛt bɛt bɛt bɛt bɛt bɛt bɛt bɛt bɛt bɛt bɛt bɛt bɛt bɛt bɛt bɛt bɛt bɛt bɛt bɛt bɛt bɛt bɛt bɛt bɛt bɛt bɛt bɛt bɛt bɛt bɛt bɛt bɛt bɛt bɛt bɛt bɛt bɛt bɛt bɛt bɛt bɛt bɛt bɛt bɛt bɛt bɛt bɛt bɛt bɛt bɛt bɛt bɛt bɛt bɛt bɛt bɛt bɛt bɛt bɛt bɛt bɛt bɛt bɛt bɛt bɛt bɛt bɛt bɛt bɛt bɛt bɛt bɛt bɛt bɛt bɛt bɛt bɛt bɛt bɛt bɛt bɛt bɛt bɛt bɛt bɛt bɛt bɛt bɛt bɛt bɛt bɛt bɛt bɛt bɛt bɛt bɛt bɛt bɛt bɛt bɛt bɛt bɛt bɛt bɛt bɛt bɛt bɛt bɛt bɛt bɛt bɛt bɛt bɛt bɛt bɛt bɛt bɛt bɛt bɛt bɛt bɛt bɛt bɛt bɛt bɛt bɛt bɛt bɛt bɛt bɛt bɛt bɛt bɛt bɛt bɛt bɛt bɛt bɛt bɛt bɛt bɛt bɛt bɛt bɛt bɛt bɛt bɛt bɛt bɛt bɛt bɛt bɛt bɛt bɛt bɛt bɛt bɛt bɛt bɛt bɛt bɛt bɛt bɛt bɛt bɛt bɛt bɛt bɛt bɛt bɛt bɛt bɛt bɛt bɛt bɛt bɛt bɛt bɛt bɛt bɛt bɛt bɛt bɛt bɛt bɛt bɛt bɛt bɛt bɛt bɛt bɛt bɛt bɛt bɛt bɛt bɛt bɛt bɛt bɛt |
encoding_format | strin | No | float (di default) ɔ base64 (liti-endiyan 32-bit flot) |
dimensions | integer | No | Moudel di sɔn sɔiz, ɔ fɔ wan moudel wit supported_dimensions wan di dem; de vektɔ de fen kɔnt tɛn an normalais am. Wen eni oda tin kam, dem de rifius am. |
| Modul | Saj laen dɛn | Bakgraon |
|---|---|---|
@cf/baai/bge-m3 | 1024, di pɔpɔ lɛngwij ɛf | 8,192 tokns |
@cf/qwen/qwen3-embedding-0.6b | 1024, di pɔpɔ lɛngwij ɛf | 8,192 tokns |
@cf/baai/bge-large-en-v1.5 | 1024, Ingglish | 512 tokn |
@cf/baai/bge-base-en-v1.5 | 768, Inglich | 512 tokn |
@cf/baai/bge-small-en-v1.5 | 384, Inglis | 512 tokn |
Di models list na di wan we tru se which one de available an wetin dem kos; Google's EmbeddingGemma, wit wan wey get short vectors if yu ask fɔ am, de show de na de too wen di catalog get wan pris fɔ am. Embeddings de bils fɔ di input token, an di 0.05-credit minimum de aply fɔ ɛch request, nɔ fɔ ɛch input, so mekkin many texts dɛn de wan request na wan de mek am much tior fɔ sen dem wan at a tɛm.
Ansa
{
"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 }
}
| Stetɔs | Wɛn |
|---|---|
400 | No input ɔ bɔk de fɔ rɛd; tokɛn aray ɔ (token_input_unsupported); pass 100 in-put dɛn (too_many_inputs); an input wey lonɡa pan wey di model de tek (input_too_long); wan size we de model no de kaba (unsupported_dimensions). |
402 | Di standard balance de too low. Embeddings nɔ de yus di Pro balance. |
404 | No embedding model de wit dat nem. |
502 | Di model feyl. Nɔtin nɔ de kach. |
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);