Ezagutza oinarria Garapitzaileak
Irudiak, audioa eta embeddingak
Appeko generatzaileak eta bilaketaren eraikitzailak: irudiak, bideoa, ahotsa, transkripzioa eta embeddingak, bakoitza zure saldotik erabilera bakoitzaren arabera kobratua.
Orrialde hau automatikoki itzuli da erosotasunerako. Ingelesezko jatorrizkoa da aplikatzen den bertsioa.
Irudiak sortzea
Prompt baten bidez irudi batetatik lauak sortzen ditu eta prest daiteznean itzultzen ditu. Generatzaile multzo bera da... ?image aplikazioan.
POST https://nymbot.ai/api/v1/images/generations — API gako bat behar du, edo Eskaera bakoitzeko Lightning ordainketa bat.
IDak ...-n jatorri dira GET /api/v1/models?type=image. Generatzaile standarda,
@cf/black-forest-labs/flux-1-schnell, 5 standard credit (50 sats) fletuko kostua du
argazki bakoitzagatik. Beste generator bakoitzak Pro kredituak erabiltzen ditu bere prezioan, ohiko tr agregadoa eta
marjinarekin, honako bezala aplikazioa. n argazkien kostua
n txan gehiago. Generatzaile batek ez duen talde bat baztertu egiten da, ez hona አለበትu; generatzaile standardak prompta bakarrik erabiltzen du.
| Kalea | Idatzi | Beharrezkoa | Deskribapena |
|---|---|---|---|
model | saria | Bai | Generatzaile ID bat, adibidez nano-banana. |
prompt | saria | Bai | Zer irudi egin. Lehen 2.000 testu-karakterak bakarrik erabiltzen dira. |
n | entegeroa | Ez | 1tik 4ra. Dema 1. Hori ere onartzen da bezala num_images. |
size | saria | Ez | Aspektu ratio bat, adibidez "16:9", edo OpenAI tamaina bat bezalako "1792x1024", eta horrek honako ratio hurbilenena bihurtzen da: 1:1, 16:9, 9:16, 4:3, 3:4, 3:2, 2:3, 21:9, 5:4 eta 4:5. "auto" generatzaileari uzten dio. |
aspect_ratio | saria | Ez | Bera ere size, eta biak bidaltzen badira, irabazten du. |
quality | saria | Ez | Generatorearen berezikoak, adibidez "low", "medium" edo "high". |
negative_prompt | saria | Ez | Zer ez sartu. |
output_format | saria | Ez | "png", "jpeg" edo "webp". |
response_format | saria | Ez | "url" (egoargarria) edo "b64_json". |
image_url | saria | Ez | Irudi bat hasiera gisa: bat https:// utente izenik edo pasarterik ez duen, gehien urtxategi 4.096 karakterko esteka bat, edo... data:image/…;base64 URL (PNG, JPEG, WebP edo GIF; ez SVG). Zeneratzaile hauek dituena soilik edit; eskatzen dutena horiek behar dutenek requires_image_url. |
resolution ez da erabiltzen: generator bakoitzak bere tamaina egiten du. Era berean url,
argazki bakoitza Blossom ospitaltasun publiko batera igotzen da eta bere esteka lortzen duzu (generator batzuk bakarrik ematen dute beren esteka bat, eskaintzen dutena). Esteka horrek duen guztiek ireki dezakete eta berriro ezin da kendu; ikusi APIak zer ikusi dezake. Eraikidetza
b64_json argazkia erantzunean bueltatzen da eta ez da inoiz igotzen. Argazkia
bidaltzen dena a data: URL sartu image_url modu berean egiaztatzen da bat bezala
editatu eta lehen Blossom-era igotzen da generatordeak hartu dezan; eskaerak ordaindu gabe huts egiten badu, berriro ezabatzen da.
Batzuk منهم... n argazkiak huts egiten dira, funtzionatu dutenak jasotzen dituzu, eta horien kostea ordaindu ohi da (funtzionatu ez arren hornitzaileak koblatutakoak gehitu zain) eta nymbot.failed zegatzen du zein diren falta. Guztiak huts egiten badute, eskaerak bileratzen du 502.
Erantzuna
{
"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 }
}
| Estatusa | Noiz |
|---|---|
400 | Ez du promptik; n kanpoan 1 eta 4 artean (invalid_value); tamaina txarra bat (invalid_size) edo irudi (invalid_image, invalid_image_url); existent dagoen modelo bat, baina ez da irudi-generatzaile bat (invalid_model); editatu ezin duen generatzaile baterako irudi bat (edit_unsupported); ez dago irudiik behar duena behar duen batentzat (image_required). |
402 | Saldoak ez du eskatutako argazki guztiak estali ahaliko. |
404 | Ez duzu izen horretako modeloa (model_not_found). |
502 | Generatzailea ez funtzionatu (upstream_error). Ez da ezer kobratzen, prestakideak saiategiaren truke fakturatu ez bada; horrez gero, erroak du charged_sats. |
503 | Irudiak orain ezin dira ospatu (media_hosting_unavailable). b64_json oraindik funtzionatzen du. |
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);
Irudiak editatzea
いgarbituta igotzen duzun irudi bat aldatzen du, agindubeten arabera. OpenAI-ren editatzeko puntua da hau, beraz OpenAI-ren SDKak... images.edit modu berean funtzionatzen du. Soilik Pro generatzaileekin... edit modelo zerrendan
onartu ezazu.
POST https://nymbot.ai/api/v1/images/edits — API gako bat behar du, edo Eskaera bakoitzeko Lightning ordainketa bat. Gorputza da multipart/form-data, 32 MB-rata arte.
| Kalea | Idatzi | Beharrezkoa | Deskribapena |
|---|---|---|---|
image | fitela | Bai | Editatzeko argazkia: PNG, JPEG, WebP edo GIF, 20 MB-rata arte. Honela ere onartzen dira image[]; lehenera erabiltzen da. |
prompt | saria | Bai | Zer aldatu behar da. |
model | saria | Bai | Generatzaile bat edit. |
n | entegeroa | Ez | 1 eta 4 artekoak. |
sizeaspect_ratioqualitynegative_promptoutput_format | saria | Ez | Generazioari dagokionez. |
response_format | saria | Ez | "b64_json" (hona hemen berezkoa) edo "url". |
Bidaltzen duzun irudia PNG, JPEG, WebP edo GIF egokia dela egiaztatzen da, bere mota erreal gisa bidalitakoa, eta Blossom ospatzaile publiko batean jartzen da, generatorrek sarrera lotura bidez hartzen dutelako. Tratatu publiko gisa. Editatzea huts egiten bada eta ez bada ezer kobratzen, gordetako kopia berriro ezabatuko da. Erantzunak generatzeak bezalako forma bera du. Prezioa generatorraren prezioa da, eta generator batzuen kasuan sarrera-irudiaren kostua barne hartzen du.
Erantzuna
{
"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 }
}
| Estatusa | Noiz |
|---|---|
400 | Ez dago irudi edo promptik, irudi ez den irudi bat (invalid_image), edo editore ezin den generator bat (edit_unsupported). |
413 | Irudia 20 MB baino gehiago da (file_too_large), edo eskaera osoa 32 MB baino handiagoa. |
503 | Irudia ez da orain hartu ahal (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"));
Bideoa
Bideo batek minutu batzuk hartzen ditu, beraz, atzealdean dabil. Bidaltzen duzu, berehala ID bat lortzen duzu, eta ID horren berri galdetzen ari zara amaitu arte. Bideo generator bakoitzak Pro saldoa gastatzen du.
POST https://nymbot.ai/api/v1/videos — API gako bat behar du, edo Eskaera bakoitzeko Lightning ordainketa bat. Itzulten du 202.
| Kalea | Idatzi | Beharrezkoa | Deskribapena |
|---|---|---|---|
model | saria | Bai | Bideo generatzaile baten IDa ...-tatik GET /api/v1/models?type=video, adibidez veo. |
prompt | saria | Bai | Zer gertatu beharko litzateke. |
duration | zenbakia alดา stringa? | Ez | Segundutan, 0 baino gehiago eta 60ra arte. Luzera aukeratzeko aukera ematen dizuten generatorrentzat bakarrik erabiltzen da; besteak beren ohiko irudia egiten dute, zer den seconds erantzunean eta prezioa dator. |
aspect_ratio | saria | Ez | Adibidez "16:9" edo "9:16"; honako bezalako tamaina bat "1280x720" hurbena ratioa bihurtzen da. |
resolutionquality | saria | Ez | Generatorearen baten resolutions modeloen zerrendan, adibidez "720p" edo "1080p"Prezioa zehazten du. Beste guztia gaitzatur onartzen da unsupported_resolution. |
image_url | saria | Ez | Irudi bat hasiera gisa: bat https:// esteka edo a data:image/… URL, lehenengoan Blossom ospatzaile publiko batera igotzen dena. Generatzaileek ...-rekin eskatzen dena. requires_image_url. |
Bidaltzen duzunean prezioa finkoa da, generatoraren, resoluzioaren eta luzeraren arabera, beraz,
zerbitzariak lana onartzen duen unean bertan zure Pro saldoaren aurrezki kobratzen da, eta honela erakusten da
cost, estimated_cost eta nymbot. Hornitzaileak lanera uko egiten badu, ez da ezer kobratzen. Ondoren renderizazioa huts egiten bada, edo clip amaitua ezin dela gordetzen eta hornitzaileak ez bada hau kobratu, kobratua automatikoki behin itzultzen da. Ordu bat igaro ondoren oraindik martxan dagoen renderizazioa uzten da, eta kobratua mantentzen da, hornitzaileak renderizazioa onartzen duenean kobratzen baitu. Birraraitzeak kredituak itzultzen ditu, baina ez du gakoaren gastu-kontua murrizten.
Erespondia (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 hasiera egiten du bezala in_progress, edo completed bideoarekin
denbora denean data generatzaileak berehala itzuli zenean.
Video bat egiaztatzen
GET https://nymbot.ai/api/v1/videos/{id} — bidali duena den nym-ari pertenezkiako giltza bat behar du. Bere muga gainditu duen giltzak oraindik egiaztatu dezake.
Erantzuten du 202 bideoa egiten ari den bitartean eta 200 amaituta dagoenean edo huts egin duenean. Galdetu 5 eta 10 segundo artean behin. Begiraketa bakoitzak hornitzaileari behin galdezten dio eta berehala erantzuten du; ez du inoiz bideoaren zain egon. Lana 24 ordu gordetzen da bidali ondoren.
GET /api/v1/videos adierazi giltzaren azken 50 lanak honako hau bezala:
{"object": "list", "data": […]}.
Erantzuna (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 da in_progress, completed edo failed. A
lan ez egindakoak dakar error ({"code": "generation_failed", "message": …});
bai berrerantzi egin bazuen, cost 0 eta da nymbot gehituak
refunded_credits eta refunded_sats. Videoa amaitua Blossom host publiko batean dago, irudi generatuak bezala.
| Estatusa | Noiz |
|---|---|
400 | Ez dago agindurik; 0 eta 60 arteko kanpoko iraupena (invalid_value); generatorrak eskaintzen ez duen resoluzio bat (unsupported_resolution); ez dago irudirik generatzaile batentzat, irudi bat behar duelako (image_required); bideo generatzaile ez den modelo bat (invalid_model). |
402 | Pro oreak ez du bideoa estali ahalik eta behinako. |
404 | Generatzaile ez dago estatik (model_not_found), edo zure nym-erako ID horretan ez badago lanik, edo 24 ordu baino zaharragoa da (video_not_found). |
429 | Zure izenak 10 bideo iragurtzen dituzkeela iragartzen du jada (video_jobs_limit). Begiratu eta bidali gehiago bat amaitzen denean. |
502 | Generatzaileak lanera uko egin diote. Ez da ezer kobratuko, zerbitzariak fakturatu ez badu. |
503 | Bideoak ezin dira orain entregatu edo bildu (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);
Testua ahotsera
Testua oihukatu egiten du eta audio fitxategia bera itzultzen du, ez esteka bat. OpenAIren hizkuntza puntua da, beraz audio.speech.create OpenAI SDKetan funtzionatzen du.
POST https://nymbot.ai/api/v1/audio/speech — API gako bat behar du, edo Eskaera bakoitzeko Lightning ordainketa bat.
| Kalea | Idatzi | Beharrezkoa | Deskribapena |
|---|---|---|---|
model | saria | Ez | Hitzlarietako modelo bat audio modeloen zerrenda. Hauterako: ahats standarda, @cf/myshell-ai/melotts. aura-2 Deepgram Aura 2 da. |
input | saria | Bai | Irakurtzeko testua: 800 karakterra arte standard ahotserako, 2.000 Aura 2-rentzat. |
voice | saria | Ez | Ahots ID bat ahotsen zerrenda: Aura hautspeaker bat, adibidez luna (edo aura-2-luna-en), edo MeloTTS hizkuntza bat (en, es, fr, zh). OpenAI ahots izenak bezalakoak alloy onetsia dira eta modeloaren botoz erronka nagusia ematen dute. |
language | saria | Ez | Hizkuntza kode bat, adibidez es. Ahatsurik gabe, hizkuntza horretarako bat hautatzen du. Beste hizkuntza bat hitz egiten duen ahats bat itzultzen da 422 voice_language_mismatch, eta modeloak ez duen hizkuntza bat 422 unsupported_language. |
response_format | saria | Ez | Ahots standarda itzultzen da mp3 bakarra. Aura 2 itzultzen du mp3 (berezgaia), opus, aac, flac, wav edo pcm. |
speed | zenbakia | Ez | Onartu eta ezetsi. |
Ahots standardak eskaera bakoitzeko 3 kredi standard (30 sats) finko kostatzen ditu, aplikasionean bezala. Aura 2 Pro da, bidaltzen dituzun karakteren arabera balio duena. Erantzunaren korpua audioa da, konpondentzia bera duenarekin
Content-Type; kostua honetan dago X-Nymbot-Cost-Sats titulua. Hitzlarietako
modelak huts egiten badu, ez da ezer kobratzen.
Erantzuna
HTTP/1.1 200 OK
Content-Type: audio/mpeg
X-Nymbot-Cost-Sats: 4.2
X-Nymbot-Balance-Sats: 41055.6
(audio bytes)
| Estatusa | Noiz |
|---|---|
400 | Ez dago sarrera; sarrera modeloaren limitea igarri da (input_too_long); modeloak ezin duen formatu bat (unsupported_response_format); ahots ezagutu gabe bat (invalid_voice); hitzlandari ez den modelo bat (invalid_model). |
422 | Ahotsak ez du emandako hizkuntza hitz egiten, edo modeloak ez du ahotsik horretarako. |
502 | Hitzlantzeko modeloak ez zuen funtzionatu. Ez da ezer kobratu. |
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()));
Audio modeloak eta ahatsak
Hizkuntza modelo eta ahots bat, edo transkrirazio modelo bat hautatzeko bi zerrenda publiko. 41 Aura 2 ingelesezko ahots eta MeloTTS hizkuntza lau daude.
GET https://nymbot.ai/api/v1/audio/models — ez du urrari beharrik.
GET https://nymbot.ai/api/v1/audio/voices?language=en — ez du urrari beharrik.
| Kalea | Idatzi | Beharrezkoa | Deskribapena |
|---|---|---|---|
language | testuinguru (bilaketa) | Ez | Hizkuntza honetarako ahotsak bakarrik. |
model | testuinguru (bilaketa) | Ez | Modelo hauentzat ahotsak bakarrik. |
Erantzuna (mozkeriak)
{
"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 }
]
}
Modelen zerrendak erantzunak ematen ditu {"object": "list", "data": {"tts": […], "stt": […]}}.
Hitzlarari modelo bakoitzak bere oreka, prezioa ematen du, max_input_chars,
response_formats, languages eta default_voice; transkripzio modeloak bere izengoak ematen ditu, max_file_bytes, max_seconds,
formatak eta minutu bakoitzeko prezioa.
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);
Hitzak testu bihurtzea
Whisperrekin grabazio bat testu bihurtzen du. OpenAI-ren transkriberatzeko endpointa hau da, beraz
audio.transcriptions.create Lan egiten du.
POST https://nymbot.ai/api/v1/audio/transcriptions — API gako bat behar du, edo Eskaera bakoitzeko Lightning ordainketa bat. Gorputza da multipart/form-data.
| Kalea | Idatzi | Beharrezkoa | Deskribapena |
|---|---|---|---|
file | fitela | Bai | Grabazioa, 256 bytetik 25 MB batera eta 30 minutura arte: WAV, WebM, MP4 edo M4A, Ogg edo Opus, MP3 eta Whisper irakurtzen dituen beste formatuak. Mugak ez direla aurretik irakurri ahal litzatekeen iraupena dituzten MP3 eta beste formatak 1,8 MB-ra limitatuak dira. |
model | saria | Ez | デフォルト whisper, Whisper Large v3 Turbo da. whisper-1, whisper-large-v3-turbo eta @cf/openai/whisper-large-v3-turbo berdin esan nahi dute. |
language | saria | Ez | Hizkuntza hitzuskatua, adibidez en. Kanpoan utzi badira, detektatuta. |
prompt | saria | Ez | Espera ditzakezun hitzak edo ortografia, izenak bezalakoak. Lehen 1.000 testu-karakterak bakarrik erabiltzen dira. |
response_format | saria | Ez | json (berezgaia), text, srt, vtt edo verbose_json. |
WAV, WebM, MP4 eta Ogg fitxategietarako, irauera fitxategietatik irakurtzen da prozesua hasi baino lehen, beraz, 30 minutetik gorako grabaketaa lehenengo etapa bertan uko egiten zaio (3 segundoko hobetasun batekin). WAV fitxategi baten irauera bere amostrate, kanalak eta amostra tamainatik dator. Beste formatu batzuen irauera, MP3 bezalakoak, ez da lehenengo etapa bertan irakurri ahalik, beraz, tamainaren arabera mugatzen dira: datu-tasa baxuenetan, Nymbot-ek 8 kbps adierazita, 30 minuta 1,8 MB dira, eta formatu horretako fitxategi handiago bat honen bidez uko egiten zaio: 413
audio_too_long zerbait ez martxan jartzean baino lehen. Bidali grabazio luzeagoak WAV, WebM, MP4 edo Ogg formatuan.
Whisper-k 30 minutetik gehiagoraren berri ematen badu ere, eskaera ukoztua da honekin
413 audio_too_long, eta Whisperra funtzatu delako, 30 minutuko kobran egongo dira.
Audioaren iraueraren aldegana ordaintzen duzu, segundo batera igotuta: irailerako irauera handiena
fitxategiotik irakurtzen dena, Whisper-ek raportatzen duen irauera, eta fitxategiaren tamainak
uzten duen gutxieneko irauera, Whisper-en minutuko prezioan,
ordainketa ohikoak eta marjinarekin, eta gutxienez 0.05 creditu eskaera bakoitzeko.
Saldo arrotzet ordaintzen da gutxienez gutun hori estali dezakenean, eta Pro-tik beste modu batetik; a 402 ematen du saldo bakoitzak
zer behar izango dion. Aplikazioan, ahatsuzko mezu bat transkribatzea doan izan daiteke; APIan
beti kobratzen da. Whisper ez badara funtzionatzen, ez da ezer kobratzen.
Erantzuna
{
"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 testu lana itzultzen du, srt eta vtt itzuli subtitulak, eta
verbose_json hizkuntza, irauera eta denbora markatutako segmentuak gehitzen ditu. JSON ez diren hiruetarako, kostua errelebuetan dago.
| Estatusa | Noiz |
|---|---|
400 | Fitxategirik ez, audio erabilgarriik ez duen fitxategi bat (invalid_audio), format ezaguna bat, edo transkribertzaile ez den modelo bat (invalid_model). |
402 | Ez bi saldok ere ezin dute estali. |
413 | Fitxilea 25 MB baino handiagoa da (file_too_large) edo grabazioa 30 minutetik baino luzeagoa, edo, luzea aurretik irakurri ezin den formatuan, 1.8 MB baino gehiago (audio_too_long). |
502 | Whisperrek audioa prozesatzen ezin izan zuen. Ez da ezer kobratu. |
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);
Hitzetara bertara ingelesezko itzulpena egitea
POST https://nymbot.ai/api/v1/audio/translations — API gako bat behar du, edo Eskaera bakoitzeko Lightning ordainketa bat. Gorputza da multipart/form-data.
Transkrirazio bera, arten ez denak izan bertakoak izanik language, limiteak eta
prezioa, baina testua ingelesez datorren guztiz hitz egiten den hizkuntza guzt regardless. OpenAI SDKk
hori honela deitzen du 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);
Txertatzeak
Testua vektoreak bihurtzen ditu bilaketa, klustertu eta duplikazioak kentzeko. Modelak Cloudflare-n مقرren eta saldo estandarra erabili egiten dute.
POST https://nymbot.ai/api/v1/embeddings — API gako bat behar du, edo Eskaera bakoitzeko Lightning ordainketa bat.
| Kalea | Idatzi | Beharrezkoa | Deskribapena |
|---|---|---|---|
model | saria | Bai | Embedding modelo bat ...ren botoz GET /api/v1/models?type=embedding. |
input | testuinguru bat edo testuinguruen array bat | Bai | Inkorporatzeko testua, 100 testu-zati mota guztira, ez hutsik. Token array-ak ez dira onartzen (token_input_unsupported). Sarrera bakoitzak modeloaren... context_length, token bakoitzeko lau byte inguru kontatuta. |
encoding_format | saria | Ez | float (egoargarria) edo base64 (little-endian 32-bit float-ak). |
dimensions | entegeroa | Ez | Modelaren propioa den tamaina, edo modelo batenentzat supported_dimensions horietako bat; vektorea orduan laburtu eta normalizatuko da. Beste guztia ukoitziko da. |
| Modela | Dimentsioak | Testuingurua |
|---|---|---|
@cf/baai/bge-m3 | 1024, hizkuntza asko | 8.192 tokenak |
@cf/qwen/qwen3-embedding-0.6b | 1024, hizkuntza asko | 8.192 tokenak |
@cf/baai/bge-large-en-v1.5 | 1024, ingelesez | 512 token |
@cf/baai/bge-base-en-v1.5 | 768, Ingelesa | 512 token |
@cf/baai/bge-small-en-v1.5 | 384, English | 512 token |
Modelen zerrenda da egiaren iturri tersedia direnak eta zer kostatu ziren jakiteko; Googleren EmbeddingGemma, eskaera bidez vektore laburtuagoekin, bertan agertzen da ere katalogoak prezio bat duenean. Embedding-ak sarrera-token bakoitzaren arabera neurtzen dira, eta 0.05-kreditu minimoa eskaera bakoitzari aplikatzen zaio, ez sarrera bakoitzari, beraz, testu asko eskaera baten barne taldekatu izatea askoz merkeagoa da bakoitza bakoitzera bidali baino.
Erantzuna
{
"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 }
}
| Estatusa | Noiz |
|---|---|
400 | Sarriderik ez edo hutsik dena; token array-ak (token_input_unsupported); 100 sartu baino gehiago (too_many_inputs); modeloak hartzen duen baino sarrera luzeagoa (input_too_long); modeloak ezin duen tamaina (unsupported_dimensions). |
402 | Saldo standarda askiego doa. Embeddingek ez dute inoiz Pro saldoa erabiltzen. |
404 | Ez du embedding modelo horretarako izenik. |
502 | Modeloak huts egin du. Ez da ezer kobratu. |
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);