Wëssensbasis Entwéckler
Bild, Audio a Embeddings
D'Generatoren vun der App, an d'Buildbläcke fir d'Suche: Bildern, Videoen, Sprach, Transkriptioun an Embeddings, all fir all Gebrauch aus Ärem Bilan.
Dës Säit ass Maschinn iwwersat fir Kamoudheet. Déi englesch Original ass d'Versioun déi gëlt.
Generatioun vun Bildern
Et ass eng vun de gréissten a gréissten Schëffer, déi op der Säit geschéckt ginn. ?image an der App.
POST https://nymbot.ai/api/v1/images/generations - braucht eng API Schlëssel, oder Mir akzeptéieren Lightning Payment op Anfrage.
Et gëtt aus GET /api/v1/models?type=imageDe Standard Generator ass
@cf/black-forest-labs/flux-1-schnell, kostet eng flat 5 Standard Credits (50 sats) eng Bild. All aner Generator verbréngt Pro Credits zu sengem eegene Präis, mat der gewëssen Gebühr a Marge, wéi an Déi App. n Fotografie kostet
n E Feld, deen de Generator net nimmt, gëtt gefall anstatt refuséiert; de Standardgenerator benotzt nëmmen d'Prompt.
| Fënnef | Typ | Vläicht | Beschreiwung |
|---|---|---|---|
model | Streng | Jo | Eng Generator ID, wéi nano-banana. |
prompt | Streng | Jo | Wat ze ziehen. nëmmen déi éischt 2000 Charaktere sinn benotzt. |
n | Integratioun | Nieft | 1 bis 4. Default 1. Also accepted as num_images. |
size | Streng | Nieft | Déi aner Aspekter wéi "16:9"Oder op anerersäits wierklech. "1792x1024"Et ass eng vun de gréissten vun de gréissten vun de gréissten vun de gréissten vun de gréissten vun de gréissten vun de gréissten vun de gréissten vun de gréissten vun de gréissten vun de gréissten vun de gréissten. "auto" Et gëtt den Generator. |
aspect_ratio | Streng | Nieft | Déi aner als sizeEt gewënnt och, wann déi zwee geschriwwen ginn. |
quality | Streng | Nieft | Generator spezifesch, wéi "low", "medium" oder "high". |
negative_prompt | Streng | Nieft | Wat ze verléieren. |
output_format | Streng | Nieft | "png", "jpeg" oder "webp". |
response_format | Streng | Nieft | "url" (an der Zäit) oder "b64_json". |
image_url | Streng | Nieft | D'Bild fir ze starten vun: an https:// Link vun maximal 4096 Zeichen ohne Benutzername oder Passwort an et, oder data:image/…;base64 URL (PNG, JPEG, WebP oder GIF; net SVG). editFirwat ee steet, a wéi eng Visioun ee fir Lëtzebuerg hätt. requires_image_url. |
resolution ass net benotzt: all Generator schafft seng eegene Gréisst. url, all Bild ass op eng öffentlech Blossom Host uploaden an Dir kritt seng Link (e puer Generatoren hunn nëmmen e Link vu hinnen, deen iwwerginn gëtt). Wat de Feuer kann gesinn... an
b64_json D'Bild kënnt an der Reaktioun zréck an gëtt nie uploaden. data: Url an image_url Et gëtt genauso kontrolléiert wéi e
Editioun Et gëtt zu Blossom erstallt, fir de Generator ze kréien; et gëtt erneut geléist, wann d'Bezéiung feelt.
Wann e puer vun den n Dir kënnt d'Fotos kréien, déi funktionnéiert, ginn nëmmen fir déi (plus all de Provider bezeechent trotz fehlgeschlagen), an nymbot.failed Et ass net ganz einfach, wann all de Bewäertungen gespaart sinn. 502.
Reaktioun
{
"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 vum | Wann |
|---|---|
400 | Et ass séier. n Déi éischt 4 (invalid_valueDéi éischt Kéier (invalid_sizeDéi éischt Foto (invalid_image, invalid_image_url); e Modell deen existéiert awer ass net e Bildgenerator (invalid_model); e Bild fir en Generator deen net editéiert kann (edit_unsupportedEt gëtt kee Gott awer Allah an de Muhammad ass den Allah.image_required). |
402 | D'Balance kann net all d'Bild ze bedreiwen. |
404 | Et gëtt keng Modell vum Numm (model_not_found). |
502 | Déi éischt Generatioun (upstream_errorEt handelt sech ëm zwéi Stären, déi no beienee leien. charged_sats. |
503 | Fotoen kënnen momentan net gehost ginn (media_hosting_unavailable). b64_json Et funktionnéiert nach. |
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);
Editioun vum Image
Dëst ass den OpenAI Edit Endpoint, also d'OpenAI SDKs' images.edit funktionnéiert wéi et ass. Nur Pro Generatoren mat edit an der Modellliste akzeptéieren.
POST https://nymbot.ai/api/v1/images/edits - braucht eng API Schlëssel, oder Mir akzeptéieren Lightning Payment op AnfrageDe Kierper ass multipart/form-dataBis zu 32 MB.
| Fënnef | Typ | Vläicht | Beschreiwung |
|---|---|---|---|
image | Dokumentatioun | Jo | D'Bild ze bearbeiten: PNG, JPEG, WebP oder GIF, bis zu 20 MB. image[]Déi éischt gëtt benotzt. |
prompt | Streng | Jo | Wat ze changéieren. |
model | Streng | Jo | De Generator mat edit. |
n | Integratioun | Nieft | 1 zu 4. |
sizeaspect_ratioqualitynegative_promptoutput_format | Streng | Nieft | An déi Generatioun. |
response_format | Streng | Nieft | "b64_json" (default hier) oder "url". |
D'Bild, déi Dir uploadet, gëtt kontrolléiert, ob et eng gutt geforméiert PNG, JPEG, WebP oder GIF ass, als säi echte Typ geschéckt, an op engem öffentlechen Blossom-Host geschéckt gëtt, well d'Generatoren hir Input duerch Link kréien. Behandelt et als öffentlech. Wann d'Editioun falen an et net geléiert gëtt, gëtt d'hosted Kopie erneut geléiert. D'Reaktioun huet déi selwecht Form wéi fir d'Generatioun.
Reaktioun
{
"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 vum | Wann |
|---|---|
400 | No Bild oder Prompt, eng Datei, déi net eng Bild ass (invalid_imageOder op anerersäits wierklech, dat esou.edit_unsupported). |
413 | D'Bild ass méi wéi 20 MB (file_too_large), oder d'ganz Recherche iwwer 32 MB. |
503 | D'Bild kann momentan net gehost ginn (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"));
Videoen
A Video dauert Minutte, sou datt et am Hintergrund lafen. Dir sendet et, kritt eng id direkt, an gefragt iwwer d'id bis et geschéien ass. All Video Generator verbréngt de Pro Balance.
POST https://nymbot.ai/api/v1/videos - braucht eng API Schlëssel, oder Mir akzeptéieren Lightning Payment op AnfrageWëllkomm 202.
| Fënnef | Typ | Vläicht | Beschreiwung |
|---|---|---|---|
model | Streng | Jo | A Video Generator Id vun GET /api/v1/models?type=videoDéi aner wéi veo. |
prompt | Streng | Jo | Wat muss geschéien. |
duration | Nummer oder String | Nieft | Längt an Sekonnen, méi wéi 0 an bis 60. Gebraucht nëmmen vun Generatoren, déi Iech d'Längt ze wählen; déi aner maachen hir gewëssen Längt, wat seconds an der Reaktioun an de Präis folgen. |
aspect_ratio | Streng | Nieft | Wéi "16:9" oder "9:16"Déi aner Gréisst wéi "1280x720" Et ass déi nächst Ratio. |
resolutionquality | Streng | Nieft | Ee vun de Generatoren resolutions An der Modellliste, wéi zum Beispill "720p" oder "1080p"Et féiert den Präis. Alles anescht gëtt verweigert unsupported_resolution. |
image_url | Streng | Nieft | D'Bild fir ze starten vun: an https:// Link oder a data:image/… URL, déi an engem öffentlechen Blossom-Host éischt uploaden ass. requires_image_url. |
De Präis ass fix, wann Dir de Generator, d'Resolutioun an d'Längt ze senden, sou datt et aus Ärem Pro-Balance bereet gëtt, wann de Provider d'Arbeit akzeptiert, an gezeigt als
cost, estimated_cost an nymbotWann de Provider de Job verweigert, gëtt et net opgeluecht. Wann d'Rendering méi spéit misse, oder de fertige Clip kann net ze späicheren an de Provider huet net fir dat Rechnung gemaach, gëtt d'Gebühr eng Kéier, automatesch. Eng Rendering, déi nach eng Stonn gëtt, gëtt opgeholl, an behält d'Gebühr, well de Provider e Rendering rechnet, wann se et annoncéiert.
Déi éischt (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 Beginn vum in_progressoder completed D'Video ass schon am data De Generator huet se direkt gemaach.
Kontrolléieren op Video
GET https://nymbot.ai/api/v1/videos/{id} - braucht e Schlëssel, deen dem Nym gehéieren huet, deen se geschéckt huet.
Mir reagéieren 202 Während de Video gëtt gemaach an 200 Wann et komplett ass oder gefeelt huet. fragt all 5 bis 10 Sekonnen. All Check fragt de Provider eng Kéier an antwortet eng Kéier; et wacht nie fir de Video.
GET /api/v1/videos listet déi lescht 50 Jobs vum Schlëssel als
{"object": "list", "data": […]}.
Déi éischt (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 Déi in_progress, completed oder failedEng gescheitert Aarbecht féiert error ({"code": "generation_failed", "message": …}Och wann et erëm beim éischte Ravi!! cost Et ass 0 an nymbot D’Additioun
refunded_credits an refunded_satsDe fertige Video ass op engem öffentlechen Blossom-Host, wéi generéiert Bilder.
| Status vum | Wann |
|---|---|
400 | No prompt; eng Dauer ausserhalb 0 bis 60 (invalid_value); eng Resolutioun déi de Generator net bitt (unsupported_resolution); keng Bild fir en Generator, deen eng braucht (image_required); e Modell deen eng Video Generator ass (invalid_model). |
402 | De Pro Balance kann de Video net decken. |
404 | Et gëtt keng Generatioun (model_not_found), oder keng Aarbecht vum id fir Är nym, oder et ass méi wéi 24 Stonnen al (video_not_found). |
429 | Dir hutt schon 10 Videoen ze reproduzéieren (video_jobs_limitCheck op se a submit méi wann een Finishes. |
502 | De Generator huet d'Arbeit refuséiert. Et gëtt net opgeluecht, wann de Provider fir et gebraucht huet. |
503 | Videoen kënnen momentan net gelieft oder gespäichert ginn (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);
Text fir d'Sprache
Liest Text haut an returnéiert d'Audio-Datei selbst, net e Link. audio.speech.create an den OpenAI SDKs funktionnéieren.
POST https://nymbot.ai/api/v1/audio/speech - braucht eng API Schlëssel, oder Mir akzeptéieren Lightning Payment op Anfrage.
| Fënnef | Typ | Vläicht | Beschreiwung |
|---|---|---|---|
model | Streng | Nieft | Et ass e Sprachmodell vum D'Lëscht vun de Audio ModellerDefault: déi standard Voice. @cf/myshell-ai/melotts. aura-2 De Deepgram huet d'Aura 2 gemaach. |
input | Streng | Jo | De Text ze liesen: bis zu 800 Zeichen fir d'Standard Voice, 2000 fir Aura 2. |
voice | Streng | Nieft | A Voice ID vun D'Lëscht vun de Voix: e Aura-Sprecher wéi luna oder aura-2-luna-enEt gëtt keng Erënnerung (en, es, fr, zh) OpenAI Voice Names wéi alloy Si sinn akzeptabel an gitt d'Default-Stem vum Modell. |
language | Streng | Nieft | Et ass eng Sprachkode, déi esNo enger Stimme wählt et eng fir déi Sprooch. 422 voice_language_mismatchEt ass eng Sprache, fir déi de Modell keng Stimme huet. 422 unsupported_language. |
response_format | Streng | Nieft | Normalerweis kënnt de mp3 D'Aura 2 ass de Retour. mp3 Duerfir gëtt klenggeschriwwen: opus, aac, flac, wav oder pcm. |
speed | D’Numér | Nieft | Vläicht ignoréiert a ignoréiert. |
D'Standard-Voix kostet eng Flat 3 Standard-Credits (30 Sats) eng Recherche, wéi an der App. Aura 2 ass Pro, gepréift duerch d'Charakteren déi Dir sendet.
Content-TypeD'Käschte läit an der X-Nymbot-Cost-Sats Wann de Sprachmodell feelt, gëtt nichts geladen.
Reaktioun
HTTP/1.1 200 OK
Content-Type: audio/mpeg
X-Nymbot-Cost-Sats: 4.2
X-Nymbot-Balance-Sats: 41055.6
(audio bytes)
| Status vum | Wann |
|---|---|
400 | Et handelt sech ëm zwéi Stären, déi no beienee leien.input_too_long); e Format deen de Modell net produzéiert kann (unsupported_response_formatEt gëtt keng sou Adress (invalid_voiceEt handelt sech ëm zwéi Stären, déi no beienee leien.invalid_model). |
422 | D'Stëmme spricht net d'Sprache, oder d'Modell huet keng Stëmme fir et. |
502 | De Sprachmodell huet gescheit. |
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 Modeller a Stimmen
Zwee öffentlech Listen fir e Sprachmodell an d'Sprache ze wählen, oder e Transcription-Modell.
GET https://nymbot.ai/api/v1/audio/models Et braucht keng Schlëssel.
GET https://nymbot.ai/api/v1/audio/voices?language=en Et braucht keng Schlëssel.
| Fënnef | Typ | Vläicht | Beschreiwung |
|---|---|---|---|
language | D’Qualitéit (Question) | Nieft | Just fir dës Sprache. |
model | D’Qualitéit (Question) | Nieft | Just fir dës Modell. |
Reaktioune ( an d’Reaktioune)
{
"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 }
]
}
D'Lëscht vun de Modeller huet Antworten {"object": "list", "data": {"tts": […], "stt": […]}}All Sprachmodell huet seng Balance, Präis, max_input_chars,
response_formats, languages an default_voiceD'Transkriptiounsmodell huet seng Alias, max_file_bytes, max_seconds, Formater a Präis pro Minutt.
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);
Duerfir gëtt et Text
Dëst ass de Transcription Endpoint vun OpenAI, also
audio.transcriptions.create Déi funktionnéiert.
POST https://nymbot.ai/api/v1/audio/transcriptions - braucht eng API Schlëssel, oder Mir akzeptéieren Lightning Payment op AnfrageDe Kierper ass multipart/form-data.
| Fënnef | Typ | Vläicht | Beschreiwung |
|---|---|---|---|
file | Dokumentatioun | Jo | D'Aufnahmen, vun 256 Byte bis 25 MB an bis zu 30 Minutten: WAV, WebM, MP4 oder M4A, Ogg oder Opus, MP3 an déi aner Formater Whisper liest. |
model | Streng | Nieft | Default whisperD'Situatioun ass de Whisper Large v3 Turbo. whisper-1, whisper-large-v3-turbo an @cf/openai/whisper-large-v3-turbo Et ass déi selwecht. |
language | Streng | Nieft | De Sprachgebrauch, wéi enEt gëtt entdeckt, wann et verpasst gëtt. |
prompt | Streng | Nieft | Worte oder Rechtschreibungen ze erwaart, wéi zum Beispill Namen. |
response_format | Streng | Nieft | json Duerfir gëtt klenggeschriwwen: text, srt, vtt oder verbose_json. |
Fir WAV, WebM, MP4 an Ogg Fichier d'Längt ass aus der Datei ze liesen, ier alles ausgeführt gëtt, sou datt eng Rekord méi wéi 30 Minutten an der Fräizäit refuséiert gëtt (met 3 Sekonnen). D'Längt vun enger WAV-Datei ass vun der Probe-Rate, Kanälen an Probe-Gréisst. D'Längt vun aner Formater, wéi MP3, kann net op der Fräizäit geléiert ginn, sou datt se vun der Gréisst beschränkt sinn: bei der niedrigsten Bitrate Nymbot ass, 8 kbps, 30 Minutten ass 1,8 MB, an eng méi grouss Datei an sou Format ass refuséiert. 413
audio_too_long Schreift länger Rekordunge wéi WAV, WebM, MP4 oder Ogg. Wann Whisper dann méi wéi 30 Minutten meldt, gëtt d'Anfrage verweigert mat
413 audio_too_long, a well Whisper huet geännert, 30 Minutten ginn opgelueden.
Dir bezuelt fir d'Längt vun der Audio, fir déi zweet: d'längste vun der Längt aus der Datei liest, d'Längt vu Whisper Rapporten, an d'minimum vun der Datei erméiglecht, zu Whisper's pro-Minutt Präis mat der gewöhnlechen Gebühr a Marge, an mindestens 0,05 Kredit eng Fro. 402 An der App kann d'Transkriptioun vun enger Sprachnachricht gratis sinn; op der API ass et ëmmer geladen.
Reaktioun
{
"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 Returnéiert de klenge Text. srt an vtt Et gëtt subtituléiert, an
verbose_json Et féiert d'Sprache, d'Dauer an d'Timed Segmente. Fir déi dräi, déi net JSON sinn, ass d'Käschte an de Header.
| Status vum | Wann |
|---|---|
400 | No der Datei, eng Datei mat engem net benotztbare Audio (invalid_audioEt handelt sech ëm zwéi Stären, déi no beienee leien.invalid_model). |
402 | Et balancéiert net ze decken. |
413 | D'Datei ass méi wéi 25 MB (file_too_large) oder d'Aufnahme méi wéi 30 Minutten, oder, an engem Format mat enger Längt, déi net op der Front liesen kann, méi wéi 1,8 MB (audio_too_long). |
502 | D'Audio kann net verarbeitet ginn. Et gëtt net opgelueden. |
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);
Sprachübersetzung op Englesch
POST https://nymbot.ai/api/v1/audio/translations - braucht eng API Schlëssel, oder Mir akzeptéieren Lightning Payment op AnfrageDe Kierper ass multipart/form-data.
Déi selwecht wéi d'Transcription, mat den selwechten Felder ausser dem language, Limite an Präis, awer de Text kënnt op Englesch, egal wéi d'Sprache gesot gouf. 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);
Emplikatiounen
Konvertéiert Text zu Vektoren fir Suen, Clustering a Deduplicatioun. D'Modeller lafen op Cloudflare a verbréngen de Standardgeld.
POST https://nymbot.ai/api/v1/embeddings - braucht eng API Schlëssel, oder Mir akzeptéieren Lightning Payment op Anfrage.
| Fënnef | Typ | Vläicht | Beschreiwung |
|---|---|---|---|
model | Streng | Jo | E Modell vun der GET /api/v1/models?type=embedding. |
input | String oder Array vun Strings | Jo | De Text fir ze embeddéieren, bis zu 100 net-leer Strings. Token Array gëtt verstoen (token_input_unsupportedAll Input muss mat dem Modell passen context_lengthEt gëtt ongeféier 4 Bytes a Token. |
encoding_format | Streng | Nieft | float (an der Zäit) oder base64 (Säit vun der 32-Bit Flowers) |
dimensions | Integratioun | Nieft | D'Modell vun der Eigengréisst, oder fir e Modell mat supported_dimensions Et ass eng vun hinnen; de Vektor gëtt dann verkürzt an normaliséiert. |
| Modelléieren | Dimensiounen | Kontext |
|---|---|---|
@cf/baai/bge-m3 | 1024 vill Sproochen | 8 192 Joer. |
@cf/qwen/qwen3-embedding-0.6b | 1024 vill Sproochen | 8 192 Joer. |
@cf/baai/bge-large-en-v1.5 | Englesch 1024 | 512 Joer |
@cf/baai/bge-base-en-v1.5 | Englesch 768. | 512 Joer |
@cf/baai/bge-small-en-v1.5 | Englesch 384 | 512 Joer |
D'Modellliste ass d'Quell vun der Wahrheet fir wat se verfügbar sinn an wat se kosten; d'Google's EmbeddingGemma, mat kortere Vektoren op Recherche, erscheet da och wann de Katalog e Präis fir et huet.
Reaktioun
{
"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 vum | Wann |
|---|---|
400 | Et handelt sech ëm zwéi Stären, déi no beienee leien.token_input_unsupported); méi wéi 100 Inputs (too_many_inputs); eng Input länger wéi de Modell nimmt (input_too_longEt handelt sech ëm zwéi Stären, déi no beienee leien.unsupported_dimensions). |
402 | De Standardbalans ass zu niedrig. d'Embeddings benotzen nie de Pro-Balance. |
404 | Et gëtt keng Modell mat dësem Numm. |
502 | D'Modell huet gefeelt. Et gëtt keng Gebühr gemaach. |
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);