Baza de cunoștințe Dezvoltatorii
Imagini, audio și embeddings
Generatoarele din aplicație și blocurile de construcție pentru căutare: imagini, video, vorbire, transcriere și încorporări, fiecare facturat pe utilizare din soldul dvs.
Această pagină este tradusă automat pentru comoditate. Originalul în limba engleză este versiunea care se aplică.
Generarea imaginilor
Realizează una până la patru imagini dintr-o promptă și le returnează când sunt finalizate. ?image În aplicația .
POST https://nymbot.ai/api/v1/images/generations — necesită o cheie API, sau O plată Lightning la cerere.
IDS provine din GET /api/v1/models?type=imageÎn general, generatorul standard
@cf/black-forest-labs/flux-1-schnell, costă un flat 5 credite standard (50 sats) o imagine. Fiecare alt generator cheltuiește credite Pro la prețul său propriu, cu taxa obișnuită și marja, ca în Aplicația. n Fotografii costă
n Un câmp pe care un generator nu îl ia este scos mai degrabă decât refuzat; generatorul standard utilizează doar promptul.
| câmpului | Tipul | necesară | Descrierea |
|---|---|---|---|
model | Stringul | Da | Un generator ID, cum ar fi nano-banana. |
prompt | Stringul | Da | Se folosesc doar primele 2000 de caractere. |
n | întregului | nu | 1 până la 4.Default 1.De asemenea acceptat ca num_images. |
size | Stringul | nu | Un aspect proporțional, precum "16:9", sau o dimensiune OpenAI cum ar fi "1792x1024", care devine cea mai apropiată de 1:1, 16:9, 9:16, 4:3, 3:4, 3:2, 2:3, 21:9, 5:4 și 4:5. "auto" Lăsați-l înapoi la generator |
aspect_ratio | Stringul | nu | Acelaşi lucru ca sizeȘi câștigă dacă ambele sunt trimise. |
quality | Stringul | nu | generatoare, cum ar fi "low", "medium" sau "high". |
negative_prompt | Stringul | nu | Ce să lăsăm afară. |
output_format | Stringul | nu | "png", "jpeg" sau "webp". |
response_format | Stringul | nu | "url" (defaultul) sau "b64_json". |
image_url | Stringul | nu | O imagine pentru a începe de la: un https:// o legătură de cel mult 4096 de caractere fără nume de utilizator sau parolă sau data:image/…;base64 URL (PNG, JPEG, WebP sau GIF; nu SVG). editcerută de către cei cu requires_image_url. |
resolution nu este utilizat: fiecare generator își face dimensiunea proprie. url, fiecare imagine este încărcată la un gazdă public Blossom și obțineți link-ul său (unele generatoare dau înapoi doar un link propriu, care este transmis). Ce poate vedea foculCu
b64_json imaginea se întoarce în răspuns şi nu este încărcată niciodată. data: Url în image_url Se verifică în acelaşi mod ca şi
Edit și încărcat la Blossom mai întâi, astfel încât generatorul să o poată ridica; este șters din nou dacă cererea nu reușește să fie descărcată.
Dacă unele dintre n imaginile nu reușesc, obțineți cele care au funcționat, sunt percepute numai pentru cele (plus orice furnizor facturat în ciuda eșecului), și nymbot.failed spune câte sunt lipsă. Dacă toate eșuează, cererea se întoarce 502.
răspuns
{
"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 }
}
| Statutul | Când |
|---|---|
400 | fără grabă; n 1 până la 4 (invalid_valueo dimensiune slabă (invalid_size) sau imaginea (invalid_image, invalid_image_urlUn model care există, dar nu este un generator de imagini (invalid_model); o imagine pentru un generator care nu poate edita (edit_unsupported); nici o imagine pentru cineva care are nevoie de ea (image_required). |
402 | Bilantul nu poate acoperi fiecare imagine solicitată. |
404 | Nu există nici un model cu acest nume (model_not_found). |
502 | generatorul a eșuat (upstream_errorNimic nu este taxat decât dacă furnizorul a facturat pentru încercare; atunci eroarea a fost charged_sats. |
503 | Imaginile nu pot fi găzduite în acest moment (media_hosting_unavailable). b64_json încă funcţionează. |
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);
Editare imagini
Modifică o imagine pe care o încărcați, urmând o invitație. Acesta este punctul final de editare al OpenAI, astfel încât OpenAI SDK-urile images.edit funcţionează aşa cum este. numai generatoarele Pro cu edit În lista de modele, acceptați.
POST https://nymbot.ai/api/v1/images/edits — necesită o cheie API, sau O plată Lightning la cerereCorpul este multipart/form-dataPână la 32 MB.
| câmpului | Tipul | necesară | Descrierea |
|---|---|---|---|
image | fişierului | Da | Imaginea pentru editare: PNG, JPEG, WebP sau GIF, până la 20 MB. image[]Primul este folosit. |
prompt | Stringul | Da | Ce să schimbi. |
model | Stringul | Da | Un generator cu edit. |
n | întregului | nu | 1 până la 4. |
sizeaspect_ratioqualitynegative_promptoutput_format | Stringul | nu | În ceea ce priveşte generaţia. |
response_format | Stringul | nu | "b64_json" (default aici) sau "url". |
Imaginea pe care o încărcați este verificată ca fiind un PNG, JPEG, WebP sau GIF bine format, trimisă ca tip real și pusă pe un gazdă public Blossom, deoarece generatoarele își colectează intrarea prin link. Tratează-l ca public. Dacă editarea eșuează și nimic nu este încărcat, copia găzduită este ștersă din nou. Răspunsul are aceeași formă ca și pentru generare. Prețul este prețul generatorului, care pentru unii generatori include o taxă pentru imaginea de intrare.
răspuns
{
"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 }
}
| Statutul | Când |
|---|---|
400 | Nici o imagine sau prompt, un fișier care nu este o imagine (invalid_image, sau un generator care nu poate edita (edit_unsupported). |
413 | Imaginea este mai mare de 20 MB (file_too_large), sau întreaga cerere de peste 32 MB. |
503 | Imaginea nu poate fi găzduită în acest moment (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"));
VIDEO
Un videoclip durează câteva minute, așa că rulează în fundal. îl trimiteți, obțineți imediat un ID și întrebați despre ID până când se termină.
POST https://nymbot.ai/api/v1/videos — necesită o cheie API, sau O plată Lightning la cerereÎntoarcerea 202.
| câmpului | Tipul | necesară | Descrierea |
|---|---|---|---|
model | Stringul | Da | Un generator de video ID de la GET /api/v1/models?type=videoAşa cum veo. |
prompt | Stringul | Da | Ce ar trebui să se întâmple. |
duration | Număr sau string | nu | Lungime în secunde, mai mult de 0 și până la 60. Folosit numai de generatoare care vă permit să alegeți lungimea; ceilalți fac lungimea lor obișnuită, care este ceea ce seconds Răspunsul și prețul sunt următoarele. |
aspect_ratio | Stringul | nu | Aşa cum "16:9" sau "9:16"O dimensiune precum "1280x720" devine cel mai apropiat raport. |
resolutionquality | Stringul | nu | Unul dintre generatoarele resolutions În lista de modele, cum ar fi "720p" sau "1080p"Se stabilește prețul. orice altceva este refuzat cu unsupported_resolution. |
image_url | Stringul | nu | O imagine pentru a începe de la: un https:// Link sau a data:image/… URL, care este încărcat mai întâi într-un gazdă public Blossom. requires_image_url. |
Prețul este fix atunci când trimiteți, de la generator, rezoluție și lungime, deci este perceput din soldul dvs. Pro de îndată ce furnizorul acceptă munca și este afișat ca
cost, estimated_cost şi nymbotDacă furnizorul refuză munca, nu se percepe nimic. Dacă renderul nu reușește mai târziu sau dacă clipul finit nu poate fi stocat și furnizorul nu a facturat pentru el, taxa este rambursată o dată, automat. Un render care continuă după o oră este renunțat și își păstrează taxa, deoarece furnizorul percepe un render odată ce îl acceptă. O rambursare returnează creditele, dar nu reduce numărul cheltuielilor cheii.
Răspunsul meu (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 Începe ca in_progresssau completed Videoclipul a fost deja în data Generatorul a revenit imediat.
Verificarea pe un video
GET https://nymbot.ai/api/v1/videos/{id} - are nevoie de o cheie aparținând nimului care a trimis-o. o cheie care a atins capul său poate verifica în continuare.
Ea răspunde 202 În timp ce videoclipul este realizat și 200 o dată terminată sau a eșuat. întrebați la fiecare 5 până la 10 secunde. Fiecare verificare întreabă furnizorul o dată și răspunde imediat; nu așteaptă niciodată videoclipul.
GET /api/v1/videos enumeră ultimele 50 de locuri de muncă ale cheii ca
{"object": "list", "data": […]}.
Răspunsul meu (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 este in_progress, completed sau failedO slujbă eșuată duce error ({"code": "generation_failed", "message": …}Dacă a fost rambursată, cost 0 și nymbot Adăugați
refunded_credits şi refunded_satsVideoclipul finit este pe un gazdă public Blossom, ca imaginile generate.
| Statutul | Când |
|---|---|
400 | Nu există prompt; o durată dincolo de 0 până la 60 (invalid_value); o rezoluție pe care generatorul nu o oferă (unsupported_resolution); nici o imagine pentru un generator care are nevoie de unul (image_required(în cazul în care nu este necesar să se utilizeze un dispozitiv video)invalid_model). |
402 | Echilibrul Pro nu poate acoperi videoclipul. |
404 | Nu există un astfel de generator (model_not_found, sau nici un loc de muncă de către acel id pentru nimm, sau este mai mare de 24 de ore (video_not_found). |
429 | Citește și: 10 filme care au fost filmate în România (video_jobs_limitVerificați-le și trimiteți mai multe odată ce unul se termină. |
502 | Generatorul a refuzat munca.Nimic nu este taxat decât dacă furnizorul a facturat pentru ea. |
503 | Videoclipurile nu pot fi livrate sau stocate în acest moment (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);
Textul discursului
Citește textul cu voce tare și returnează fișierul audio în sine, nu un link. audio.speech.create în OpenAI SDKs funcționează.
POST https://nymbot.ai/api/v1/audio/speech — necesită o cheie API, sau O plată Lightning la cerere.
| câmpului | Tipul | necesară | Descrierea |
|---|---|---|---|
model | Stringul | nu | Un model de vorbire din Lista modelelor audioDefault: Vocea standard @cf/myshell-ai/melotts. aura-2 Este vorba despre Deepgram Aura 2. |
input | Stringul | Da | Textul de citit: până la 800 de caractere pentru vocea standard, 2.000 pentru Aura 2. |
voice | Stringul | nu | Un ID vocal de la Lista de vociun vorbitor de aură, cum ar fi luna (sau aura-2-luna-en, sau o limbă MeloTTS (en, es, fr, zhOpenAI nume vocale, cum ar fi alloy sunt acceptate și dau vocea implicită a modelului. |
language | Stringul | nu | Un cod de limbă precum esFără o voce, selectează una pentru acea limbă. o voce care vorbește o altă limbă returnează 422 voice_language_mismatch, și o limbă pentru care modelul nu are voce 422 unsupported_language. |
response_format | Stringul | nu | Vocea standard se întoarce mp3 Aura 2 se întoarce mp3 (în cazul în care defectul este opus, aac, flac, wav sau pcm. |
speed | Număr | nu | acceptată şi ignorată. |
Vocea standard costă 3 credite standard (30 sats) pe cerere, ca în aplicație. Aura 2 este Pro, prețuit după caracterele pe care le trimiteți.
Content-TypeCostul este în X-Nymbot-Cost-Sats Dacă modelul de vorbire eșuează, nimic nu este încărcat.
răspuns
HTTP/1.1 200 OK
Content-Type: audio/mpeg
X-Nymbot-Cost-Sats: 4.2
X-Nymbot-Balance-Sats: 41055.6
(audio bytes)
| Statutul | Când |
|---|---|
400 | Nu există intrare; intrarea depășește limita modelului (input_too_long); un format pe care modelul nu îl poate produce (unsupported_response_formato voce necunoscută (invalid_voice(în cazul în care modelul nu este un model de vorbire)invalid_model). |
422 | Vocea nu vorbește limba dată, sau modelul nu are nici o voce pentru ea. |
502 | Modelul de vorbire a eșuat.Nimic nu este taxat. |
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()));
Modele audio și voci
Două liste publice pentru a alege un model de vorbire și voce, sau un model de transcriere.Există 41 vorbitori de limba engleză Aura 2 și patru limbi MeloTTS.
GET https://nymbot.ai/api/v1/audio/models Nu este nevoie de cheie.
GET https://nymbot.ai/api/v1/audio/voices?language=en Nu este nevoie de cheie.
| câmpului | Tipul | necesară | Descrierea |
|---|---|---|---|
language | Întrebări (Query) | nu | Doar voci pentru această limbă. |
model | Întrebări (Query) | nu | Numai voci pentru acest model. |
Răspunsuri (Voci)
{
"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 }
]
}
Răspunsurile la listele de modele {"object": "list", "data": {"tts": […], "stt": […]}}Fiecare model de vorbire oferă echilibrul său, prețul, max_input_chars,
response_formats, languages şi default_voice· modelul de transcriere dă aliasele sale, max_file_bytes, max_seconds, formate și preț pe minut.
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);
Discursul în text
Transformă o înregistrare în text cu Whisper. Acesta este punctul final de transcriere al OpenAI, deci
audio.transcriptions.create Lucrează .
POST https://nymbot.ai/api/v1/audio/transcriptions — necesită o cheie API, sau O plată Lightning la cerereCorpul este multipart/form-data.
| câmpului | Tipul | necesară | Descrierea |
|---|---|---|---|
file | fişierului | Da | Înregistrarea, de la 256 de biți la 25 MB și până la 30 de minute: WAV, WebM, MP4 sau M4A, Ogg sau Opus, MP3 și celelalte formate Whisper citește. |
model | Stringul | nu | defectă whisperCe este Whisper Large v3 Turbo? whisper-1, whisper-large-v3-turbo şi @cf/openai/whisper-large-v3-turbo Înseamnă acelaşi lucru. |
language | Stringul | nu | Limbile vorbite, cum ar fi enDetectat dacă a fost lăsat afară. |
prompt | Stringul | nu | Cuvinte sau ortografii de așteptat, cum ar fi nume. Se folosesc doar primele 1000 de caractere. |
response_format | Stringul | nu | json (în cazul în care defectul este text, srt, vtt sau verbose_json. |
Pentru fișierele WAV, WebM, MP4 și Ogg, lungimea este citită din fișier înainte de a rula ceva, deci o înregistrare de peste 30 de minute este refuzată în față (cu 3 secunde). Lungimea unui fișier WAV provine din rata de eșantionare, canale și dimensiunea eșantionului. Lungimea altor formate, cum ar fi MP3, nu poate fi citită în față, așa că acestea sunt limitate de dimensiune: la cea mai mică bitrate Nymbot presupune, 8 kbps, 30 de minute este de 1,8 MB, iar un fișier mai mare într-un astfel de format este refuzat cu 413
audio_too_long trimite înregistrări mai lungi, cum ar fi WAV, WebM, MP4 sau Ogg. Dacă Whisper raportează mai mult de 30 de minute oricum, cererea este respinsă cu
413 audio_too_long, și din moment ce Whisper a rulat, 30 de minute sunt încărcate.
Plătiți pentru lungimea audio, rotunjită până la a doua: cea mai lungă lungime citită din fișier, lungimea rapoartelor Whisper și cea mai mică dimensiune a fișierului permite, la prețul per minut al Whisper cu taxa obișnuită și marja, și cel puțin 0,05 credit o cerere. 402 În aplicație, transcrierea unui mesaj vocal poate fi gratuită; pe API este întotdeauna încărcată.
răspuns
{
"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 întoarce textul simplu, srt şi vtt Întoarceți subtitrările și
verbose_json adaugă limbajul, durata și segmentele temporizate. Pentru cele trei care nu sunt JSON, costul este în anteturi.
| Statutul | Când |
|---|---|
400 | Nici un fișier, nici un fișier fără audio utilizabil (invalid_audio, un format necunoscut, sau un model care nu este un model de transcriere (invalid_model). |
402 | Nici echilibrul nu o poate acoperi. |
413 | Fișierul este mai mare de 25 MB (file_too_largeînregistrarea de peste 30 de minute sau, într-un format a cărui lungime nu poate fi citită în față, de peste 1,8 MB (audio_too_long). |
502 | Şoptirea nu a putut procesa audio-ul. |
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);
Traducerea discursului în engleză
POST https://nymbot.ai/api/v1/audio/translations — necesită o cheie API, sau O plată Lightning la cerereCorpul este multipart/form-data.
Același lucru ca și transcrierea, cu aceleași câmpuri în afară de language, limitele și prețul, dar textul se întoarce în limba engleză, indiferent de limba vorbită. 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);
Îmbrăcăminte
Convertește textul în vectori pentru căutare, grupare și deduplicare.Modelele rulează pe Cloudflare și cheltuiește soldul standard.
POST https://nymbot.ai/api/v1/embeddings — necesită o cheie API, sau O plată Lightning la cerere.
| câmpului | Tipul | necesară | Descrierea |
|---|---|---|---|
model | Stringul | Da | Un model încorporat de la GET /api/v1/models?type=embedding. |
input | String sau array de stringuri | Da | În cazul în care este necesar să se înregistreze un număr mai mare de 100 de puncte, nu este necesar să se înregistreze un număr mai mare de 100 de puncte (token_input_unsupportedFiecare intrare trebuie sa se potriveasca cu modelul context_length, numărat ca aproximativ patru byte un token. |
encoding_format | Stringul | nu | float (defaultul) sau base64 (până la 32 de bucăți mici). |
dimensions | întregului | nu | dimensiunea modelului propriu, sau pentru un model cu supported_dimensions Unul dintre ele; vectorul este apoi scurtat și normalizat. |
| Modelul | Dimensiuni | Contextul |
|---|---|---|
@cf/baai/bge-m3 | 1024 în mai multe limbi | 8.192 articole despre |
@cf/qwen/qwen3-embedding-0.6b | 1024 în mai multe limbi | 8.192 articole despre |
@cf/baai/bge-large-en-v1.5 | 1024 în engleză | 512 articole despre |
@cf/baai/bge-base-en-v1.5 | 768 în engleză | 512 articole despre |
@cf/baai/bge-small-en-v1.5 | 384 în engleză | 512 articole despre |
Lista de modele este sursa adevărului pentru care sunt disponibile și ce costă; EmbeddingGemma de la Google, cu vectori mai scurți la cerere, apare acolo și atunci când catalogul are un preț pentru el.
răspuns
{
"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 }
}
| Statutul | Când |
|---|---|
400 | Nu există nici o intrare sau un singur gol; token array (token_input_unsupported(mai mult de 100 de intrări)too_many_inputs); o intrare mai lungă decât modelul ia (input_too_longo dimensiune pe care modelul nu o poate da (unsupported_dimensions). |
402 | Balanța standard este prea mică. Embeddings nu utilizează niciodată balanța Pro. |
404 | Nici un model cu acest nume. |
502 | Modelul a eșuat.Nimic nu este taxat. |
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);