Konesans baz Devlopè
imaj, odyo ak embeddings
Jeneratè yo soti nan app a, ak blòk bati pou rechèch: foto, videyo, pale, transkripsyon ak embeddings, chak chaje pou chak itilizasyon soti nan balans ou.
Paj sa a se machin-tradui pou konvenyans. Orijinal angle a se vèsyon ki aplike a.
Kreye imaj
Li fè youn a kat foto soti nan yon prompt ak retire yo lè yo te fè. Li se menm seri a nan jeneratè kòm ?image Nan aplikasyon an.
POST https://nymbot.ai/api/v1/images/generations — bezwen yon kle API, oswa Yon Lightning peman sou demann.
IDS vini nan GET /api/v1/models?type=imageYon jeneratè estanda,
@cf/black-forest-labs/flux-1-schnell, koute yon flat 5 kredi estanda (50 sats) yon foto. Chak lòt jeneratè pase kredi Pro nan pri pwòp li yo, ak frè a nòmal ak marje, kòm nan App nan. n Pwodwi pou foto
n Yon jaden yon jeneratè pa pran se chita anvan refize; jeneratè a estanda sèvi ak prompt sèlman.
| Zòn | Ki jan | Rechèch | Deskripsyon |
|---|---|---|---|
model | String nan | Wi | Yon id jeneratè, tankou nano-banana. |
prompt | String nan | Wi | Ki sa yo desen. Se sèlman premye 2000 karaktè yo itilize. |
n | Entegre | pa | 1 a 4. Default 1. Epitou aksepte kòm num_images. |
size | String nan | pa | Yon aspè rapò tankou "16:9", oswa yon gwosè OpenAI tankou "1792x1024", ki se pi pre nan 1:1, 16:9, 9:16, 4:3, 3:4, 3:2, 2:3, 21:9, 5:4 ak 4:5. "auto" Lè sa a, kite li nan jeneratè a. |
aspect_ratio | String nan | pa | menm jan an kòm size, ak genyen si tou de yo te voye. |
quality | String nan | pa | jeneratè espesifik, tankou "low", "medium" ou "high". |
negative_prompt | String nan | pa | Ki sa yo dwe kite. |
output_format | String nan | pa | "png", "jpeg" ou "webp". |
response_format | String nan | pa | "url" (ki se default la) oswa "b64_json". |
image_url | String nan | pa | Yon foto yo kòmanse soti nan: a https:// yon lyen nan maksimòm 4096 karaktè ak pa gen okenn non itilizatè oswa senp nan li, oswa yon data:image/…;base64 URL (PNG, JPEG, WebP oswa GIF; pa SVG). Se sèlman pou jeneratè ak editRechèch pou moun ki gen requires_image_url. |
resolution se pa itilize: chak jeneratè fè gwosè li yo. Avèk url, chak imaj se uploade nan yon òdinatè piblik Blossom ak ou jwenn lyen li (pa gen kèk jeneratè sèlman retire yon lyen pwòp yo, ki se pase sou). Tout moun ki gen lyen an ka louvri li epi li pa ka retire ankò; wè Ki sa ki nan API ka wèavèk
b64_json imaj la reponn nan repons la epi yo pa janm ankouraje. Yon imaj voye kòm yon data: URL nan image_url se tcheke nan menm fason ki jan yon
Edit nan ak uploaded nan Blossom an premye pou jeneratè a ka retire li; li se retire ankò si demann an pa t 'fwa.
Si kèk nan n imaj manke, ou jwenn moun ki te travay, yo se peye sèlman pou moun (plis nenpòt ki founisè chaje malgre manke), ak nymbot.failed di ki kantite manke. Si tout manke, demann an retire 502.
Reply
{
"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 }
}
| Status nan | Kòm |
|---|---|
400 | Pa vit; n soti nan 1 nan 4 (invalid_value); yon gwosè mal (invalid_size) oswa foto (invalid_image, invalid_image_url); yon modèl ki egziste men se pa yon imaj jeneratè (invalid_model); yon imaj pou yon jeneratè ki pa ka edit (edit_unsupported); pa gen okenn foto pou yon moun ki bezwen li (image_required). |
402 | balans pa ka kouvri tout imaj mande pou. |
404 | Pa gen yon modèl ak non sa a (model_not_found). |
502 | jeneratè a se pa t 'kapab (upstream_errorPa gen anyen se chaje san yo pa founisè a chaje pou eseye; Lè sa a, erè a te charged_sats. |
503 | imaj pa ka hosting kounye a (media_hosting_unavailable). b64_json Toujou ap travay |
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);
Edite imaj
Chanje yon imaj ou upload, apre yon rekòmandasyon. Sa a se Endpoint edit nan OpenAI, se konsa OpenAI SDKs ' images.edit travay kòm li se. Se sèlman Pro jeneratè ak edit nan lis modèl aksepte li.
POST https://nymbot.ai/api/v1/images/edits — bezwen yon kle API, oswa Yon Lightning peman sou demannCorps la se multipart/form-datajiska 32 MB.
| Zòn | Ki jan | Rechèch | Deskripsyon |
|---|---|---|---|
image | Dosye | Wi | imaj yo edite: PNG, JPEG, WebP oswa GIF, jiska 20 MB. Epitou aksepte kòm image[]Premye a se itilize. |
prompt | String nan | Wi | Ki sa yo dwe chanje. |
model | String nan | Wi | Yon jeneratè ak edit. |
n | Entegre | pa | 1 nan 4. |
sizeaspect_ratioqualitynegative_promptoutput_format | String nan | pa | Pou jenerasyon an. |
response_format | String nan | pa | "b64_json" (default nan isit la) oswa "url". |
imaj la ou upload se tcheke pou yo dwe yon byen fòme PNG, JPEG, WebP oswa GIF, voye sou kòm kalite reyèl li yo, ak mete sou yon òdinatè Blossom piblik, paske jeneratè yo retire entèlijans yo pa lyen. Trete li kòm piblik. Si editè a échoue ak pa gen anyen se chaje, kopi a òdinatè se retire ankò. Repons la gen fòm la menm jan ak pou jenerasyon. Pri a se pri a jeneratè a, ki pou kèk jeneratè gen ladan yon frè pou imaj la entèlijans.
Reply
{
"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 }
}
| Status nan | Kòm |
|---|---|
400 | Pa gen imaj oswa prompt, yon dosye ki pa yon imaj (invalid_image), oswa yon jeneratè ki pa ka edit (edit_unsupported). |
413 | imaj ki gen plis pase 20 MB (file_too_large), oswa tout kesyon an plis pase 32 MB. |
503 | Foto a pa ka hosting kounye a (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"));
Videyo
Yon videyo pran minit, se konsa li kouri nan background la. Ou soumèt li, jwenn yon id imedyatman, ak mande sou id la jiskaske li se fini. Chak videyo jeneratè pase balans la Pro.
POST https://nymbot.ai/api/v1/videos — bezwen yon kle API, oswa Yon Lightning peman sou demannRetounen 202.
| Zòn | Ki jan | Rechèch | Deskripsyon |
|---|---|---|---|
model | String nan | Wi | Yon videyo jeneratè id soti nan GET /api/v1/models?type=videoKòm veo. |
prompt | String nan | Wi | Ki sa ki ta dwe. |
duration | Nimewo oswa string | pa | Longè nan segonn, plis pase 0 ak jiska 60. Sèvi sèlman pa jeneratè ki pèmèt ou chwazi longè; lòt fè longè yo nòmal, ki se sa ki seconds nan repons la ak pri a swiv. |
aspect_ratio | String nan | pa | Kòm "16:9" ou "9:16"; yon gwosè tankou "1280x720" Li se rapò a ki pi pre. |
resolutionquality | String nan | pa | Yon nan jeneratè a resolutions Nan lis la modèl, tankou "720p" ou "1080p"Li mete pri a. Tout lòt bagay se refize ak unsupported_resolution. |
image_url | String nan | pa | Yon foto yo kòmanse soti nan: a https:// Lyen oswa a data:image/… URL, ki ankouraje nan yon òdinatè piblik Blossom premye. Requisite pa jeneratè ak requires_image_url. |
Pri a se fixe lè ou soumèt, soti nan jeneratè a, rezolisyon ak longè, se konsa li chaje soti nan salè Pro ou tanpri ke founisè a aksepte travay la, ak montre kòm
cost, estimated_cost epi nymbot. Si founisè a refize travay la, pa gen anyen se chaje. Si render la pita manke, oswa clip la fini pa ka sove ak founisè a pa te chaje pou li, chaj la se refize yon fwa, otomatikman. Yon render ki toujou ap ale apre yon èdtan se kite, ak kenbe chaj li yo, paske founisè a chaje yon render yon fwa li aksepte li. Yon refwadisman retire kredi a men pa ba kantite lajan an nan kle a.
Retounen (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 Kòmanse kòm in_progressOu se completed ak videyo a deja nan data lè jeneratè a retire li imedyatman.
Tcheke sou yon videyo
GET https://nymbot.ai/api/v1/videos/{id} - bezwen yon kle ki apwopriye nan nym la ki te soumèt li. Yon kle ki te rive nan cap li kapab toujou tcheke.
Li reponn 202 pandan ke videyo a se fè ak 200 Yon fwa li se konplete oswa te fè mal. Demann chak 5 a 10 segonn. Chèk chak mande founisè a yon fwa ak reponn nan yon sèl fwa; li pa janm ap tann pou videyo a. Yon travay se kenbe pou 24 èdtan apre li te soumèt.
GET /api/v1/videos lis dènye 50 travay la nan kle a kòm
{"object": "list", "data": […]}.
Repons nan (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 se in_progress, completed ou failedYon travay ki pa t 'kapab pote error ({"code": "generation_failed", "message": …}); si li te retounen, cost se 0 ak nymbot Ajoute
refunded_credits epi refunded_satsVideyo a fini se sou yon òdinatè piblik Blossom, tankou imaj yo te kreye.
| Status nan | Kòm |
|---|---|
400 | Pa gen okenn prompt; yon peryòd deyò 0 a 60 (invalid_value); yon rezolisyon jeneratè pa ofri (unsupported_resolution); pa gen okenn imaj pou yon jeneratè ki bezwen yon (image_required); yon modèl ki pa se yon videyo jeneratè (invalid_model). |
402 | Pro balans pa ka kouvri videyo a. |
404 | pa gen yon jeneratè (model_not_found), oswa pa gen okenn travay pa id sa a pou nim ou a, oswa li se plis pase 24 èdtan (video_not_found). |
429 | Nimewo a ou deja gen 10 videyo retransmisyon (video_jobs_limitTcheke sou yo ak soumèt plis yon fwa yon fini. |
502 | Jeneratè a refize travay la. Pa gen anyen chaje si founisè a chaje pou li. |
503 | Videyo pa ka livrezon oswa sove kounye a (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 nan pale
Li lèt tèks nan wout la ak retire dosye a odyo tèt li, pa yon lyen. Li se OpenAI nan tèks Endpoint, se konsa audio.speech.create nan OpenAI SDKs travay.
POST https://nymbot.ai/api/v1/audio/speech — bezwen yon kle API, oswa Yon Lightning peman sou demann.
| Zòn | Ki jan | Rechèch | Deskripsyon |
|---|---|---|---|
model | String nan | pa | Yon modèl pale soti nan List la nan modèl odyo. default: vwa a estanda, @cf/myshell-ai/melotts. aura-2 se Deepgram Aura 2. |
input | String nan | Wi | Tèks yo li: jiska 800 karakter pou vwa estanda, 2,000 pou Aura 2. |
voice | String nan | pa | Yon id vwa soti nan Liste nan vwa: yon speaker Aura tankou luna (Ou nan aura-2-luna-en), oswa yon lang MeloTTS (en, es, fr, zh). OpenAI non vwa tankou alloy yo aksepte ak bay vòt la default nan modèl la. |
language | String nan | pa | Yon kòd lang tankou esPa gen yon vwa, li chwazi youn pou lang sa a. Yon vwa ki pale yon lòt lang retire 422 voice_language_mismatch, ak yon lang ki modèl la pa gen yon vwa pou 422 unsupported_language. |
response_format | String nan | pa | Retounen nan vòt la estanda mp3 Aura 2 se tounen mp3 (pou yon defèt) opus, aac, flac, wav ou pcm. |
speed | Nimewo | pa | Te aksepte ak ignore. |
Vwa a estanda koute yon plat 3 kredi estanda (30 sats) pou chak demann, tankou nan app la. Aura 2 se Pro, pri pa karaktè yo ou voye. Kò a reponn se odyo a, ak yon korespondan
Content-Type; pri a se nan X-Nymbot-Cost-Sats header. Si modèl la pale defèt, pa gen anyen chaje.
Reply
HTTP/1.1 200 OK
Content-Type: audio/mpeg
X-Nymbot-Cost-Sats: 4.2
X-Nymbot-Balance-Sats: 41055.6
(audio bytes)
| Status nan | Kòm |
|---|---|
400 | Pa gen okenn entwodiksyon; entwodiksyon sou limit nan modèl la (input_too_long); yon fòma modèl pa ka pwodwi (unsupported_response_format); yon vwa inik (invalid_voice); yon modèl ki pa se yon modèl pale (invalid_model). |
422 | Vòt la pa pale lang la bay, oswa modèl la pa gen yon vòt pou li. |
502 | Modèl la nan pale kache. Pa gen anyen peye. |
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()));
Modèl odyo ak vwa
Dwa lis piblik pou chwazi yon modèl pale ak vwa, oswa yon modèl transkripsyon. Gen 41 Aura 2 moun ki pale angle ak kat lang MeloTTS.
GET https://nymbot.ai/api/v1/audio/models Pa gen okenn kle bezwen.
GET https://nymbot.ai/api/v1/audio/voices?language=en Pa gen okenn kle bezwen.
| Zòn | Ki jan | Rechèch | Deskripsyon |
|---|---|---|---|
language | Règleman nan (Query) | pa | Se sèlman vwa pou lang sa a. |
model | Règleman nan (Query) | pa | Se sèlman vwa pou modèl sa a. |
Reply (vòt yo)
{
"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 }
]
}
Modèl lis repons {"object": "list", "data": {"tts": […], "stt": […]}}Tout modèl pale bay balans li yo, pri, max_input_chars,
response_formats, languages epi default_voice; modèl la transkripsyon bay alyans li yo, max_file_bytes, max_seconds, fòma ak pri pou chak 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);
Diskisyon nan tèks
Konvèti yon anrejistreman nan tèks ak Whisper. Sa a se OpenAI a transkripsyon Endpoint, se konsa
audio.transcriptions.create travay nan.
POST https://nymbot.ai/api/v1/audio/transcriptions — bezwen yon kle API, oswa Yon Lightning peman sou demannCorps la se multipart/form-data.
| Zòn | Ki jan | Rechèch | Deskripsyon |
|---|---|---|---|
file | Dosye | Wi | Enskripsyon an, soti nan 256 byte a 25 MB ak jiska 30 minit: WAV, WebM, MP4 oswa M4A, Ogg oswa Opus, MP3 ak lòt fòma Whisper li. MP3 ak lòt fòma ki longè yo pa ka li louvri nan devan yo limite nan 1.8 MB. |
model | String nan | pa | pafè whisper, ki se Whisper Large v3 Turbo. whisper-1, whisper-large-v3-turbo epi @cf/openai/whisper-large-v3-turbo vle di menm bagay la. |
language | String nan | pa | se lang la pale, tankou enDetekte si te kite deyò. |
prompt | String nan | pa | Pawòl oswa ortografik pou espere, tankou non. Se sèlman premye 1000 karaktè yo itilize. |
response_format | String nan | pa | json (pou yon defèt) text, srt, vtt ou verbose_json. |
Pou dosye WAV, WebM, MP4 ak Ogg, longè a se li soti nan dosye a anvan anyen kouri, se konsa yon anrejistreman plis pase 30 minit refize nan devan (ak 3 sekondè 'grati). Longè a nan yon dosye WAV vini nan vitès echantiyon li yo, chanèl yo ak gwosè echantiyon. Longè a nan lòt fòma, tankou MP3, pa ka li dwe li nan devan, se konsa yo limite nan gwosè: nan pi ba bitrate Nymbot asume, 8 kbps, 30 minit se 1.8 MB, ak yon dosye pi gwo nan fòma sa a refize ak 413
audio_too_long voye enskripsyon pi long tankou WAV, WebM, MP4 oswa Ogg. Si Whisper Lè sa a rapòte plis pase 30 minit, demann an se refize ak
413 audio_too_long, ak depi Whisper te kouri, 30 minit yo chaje.
Ou peye pou longè a nan odyo a, aranjman jiska dezyèm: pi long nan longè a li soti nan dosye a, longè a rapòte Whisper, ak pi piti gwosè a dosye a pèmèt, nan pri a per-minit nan Whisper a ak frè a nòmal ak marje, ak omwen 0.05 kredi yon demann. Li se peye soti nan balans la estanda lè sa a ka kouvri kenbe, ak soti nan Pro anyen; 402 bay sa ki chak balans ta bezwen. Nan aplikasyon an, transkripsyon yon mesaj vwa ka gratis; sou API a li se toujou chaje. Si Whisper échoue, pa gen anyen chaje.
Reply
{
"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 Retire tèks klè, srt epi vtt Retour sous tit, ak
verbose_json ajoute lang, tanperati ak segman timed. Pou twa ki pa JSON, pri a se nan tèt yo.
| Status nan | Kòm |
|---|---|
400 | Pa gen okenn dosye, yon dosye ki pa gen okenn odyo itilize (invalid_audio), yon fòma pa konnen, oswa yon modèl ki pa se yon modèl transkripsyon (invalid_model). |
402 | Epitou balans pa ka kouvri li. |
413 | Dosye a se plis pase 25 MB (file_too_large) oswa anrejistreman nan plis pase 30 minit, oswa, nan yon fòma ki longè yo pa ka li louvri tèt ou, plis pase 1,8 MB (audio_too_long). |
502 | Soumèt pa te kapab pwosesis odyo. Pa gen anyen chaje. |
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);
Tradiksyon nan lang angle
POST https://nymbot.ai/api/v1/audio/translations — bezwen yon kle API, oswa Yon Lightning peman sou demannCorps la se multipart/form-data.
menm jan ak transkripsyon, ak menm jaden an nan language, limit ak pri, men tèks la vin tounen nan lang angle nenpòt ki lang te pale. OpenAI SDK yo rele li ak 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);
entwodiksyon
Konvèti tèks nan vèktè pou rechèch, klasman ak deduplikasyon. Modèl yo kouri sou Cloudflare ak pase balans la estanda.
POST https://nymbot.ai/api/v1/embeddings — bezwen yon kle API, oswa Yon Lightning peman sou demann.
| Zòn | Ki jan | Rechèch | Deskripsyon |
|---|---|---|---|
model | String nan | Wi | Yon modèl embedded soti nan GET /api/v1/models?type=embedding. |
input | string oswa array nan strings | Wi | Yon tèks entegre, jiska 100 strings ki pa vè. Yon seri token refize (token_input_unsupported). Chak entwodiksyon dwe koresponn ak modèl la context_length, konsidere kòm apeprè 4 byte pou yon token. |
encoding_format | String nan | pa | float (ki se default la) oswa base64 (Little-endian 32-bit flòt yo). |
dimensions | Entegre | pa | Model la nan gwosè pwòp ou, oswa pou yon modèl ak supported_dimensions youn nan sa yo; vektè a se Lè sa a abbrevi ak normalize. Tout lòt bagay se refize. |
| Modèl | Dimansyon | Konteks |
|---|---|---|
@cf/baai/bge-m3 | 1024, plizyè lang | 8,192 token yo |
@cf/qwen/qwen3-embedding-0.6b | 1024, plizyè lang | 8,192 token yo |
@cf/baai/bge-large-en-v1.5 | 1024, Angletè | 512 tèkstur |
@cf/baai/bge-base-en-v1.5 | 768, Angletè | 512 tèkstur |
@cf/baai/bge-small-en-v1.5 | 384 Angletè | 512 tèkstur |
List la modèl se sous a nan verite pou ki yo disponib ak ki sa yo koute; Google a EmbeddingGemma, ak vètikulè pi kout sou demann, ap parèt isit la tou lè kataloz la gen yon pri pou li. Enbalaj yo mete pou chak token envantè, ak minimòm la 0.05 kredi aplike pou chak demann, pa pou chak envantè, se konsa batch anpil tèks nan yon sèl demann se anpil pi bon mache pase voye yo yon sèl nan yon fwa.
Reply
{
"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 }
}
| Status nan | Kòm |
|---|---|
400 | Pa gen okenn antrepriz oswa yon sèl vid; token arè (token_input_unsupported); plis pase 100 entwodiksyon (too_many_inputs); envantè ki pi long pase modèl la pran (input_too_long); yon gwosè modèl pa ka bay (unsupported_dimensions). |
402 | balans estanda se trè ba. Embeddings pa janm sèvi ak balans la Pro. |
404 | Pa gen yon modèl embedded pa non sa a. |
502 | Modèl la te default. Pa gen anyen peye. |
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);