Kunnskapsgrunnlag Utviklere
Bilder, lyd og embeddings
Generatorene fra appen, og byggeblokkene for søk: bilder, video, tale, transkripsjon og innebygging, hver fakturert per bruk fra saldoen din.
Denne siden er maskinoversatt for enkelhets skyld. Den engelske originalen er versjonen som gjelder.
Genererer bilder
Lagrer ett til fire bilder fra en forespørsel og returnerer dem når de er gjort. ?image og i appen.
POST https://nymbot.ai/api/v1/images/generations - trenger en API-nøkkel, eller Lightning betaling per forespørsel.
Ids kommer fra GET /api/v1/models?type=imageDen standardiserte generatoren
@cf/black-forest-labs/flux-1-schnell, koster en flat 5 standard kreditter (50 sats) et bilde. Hver annen generator bruker Pro kreditter til sin egen pris, med den vanlige gebyr og margin, som i Den app. n Bilder koster
n Et felt som en generator ikke tar, blir kastet i stedet for avvist; standardgeneratoren bruker bare prompt.
| Feltet | Typen | Krevde | Beskrivelse |
|---|---|---|---|
model | Strenge | Ja | En generator id, for eksempel nano-banana. |
prompt | Strenge | Ja | Det er bare de første 2000 tegnene som brukes. |
n | Integrert | Nei | 1 til 4. standard 1. også akseptert som num_images. |
size | Strenge | Nei | Et forhold som for eksempel "16:9"eller en åpen størrelse som "1792x1024", som blir den nærmeste av 1:1, 16:9, 9:16, 4:3, 3:4, 3:2, 2:3, 21:9, 5:4 og 4:5. "auto" Legg den til generatoren. |
aspect_ratio | Strenge | Nei | Det samme som sizeOg vinner hvis begge blir sendt. |
quality | Strenge | Nei | Generator-spesifikke, slik som "low", "medium" eller "high". |
negative_prompt | Strenge | Nei | Hva å legge ut. |
output_format | Strenge | Nei | "png", "jpeg" eller "webp". |
response_format | Strenge | Nei | "url" (default) eller "b64_json". |
image_url | Strenge | Nei | Et bilde for å begynne med: en https:// lenke på maksimalt 4 096 tegn uten brukernavn eller passord i den, eller en data:image/…;base64 URL (PNG, JPEG, WebP eller GIF; ikke SVG). editkreves av de som har requires_image_url. |
resolution ikke brukes: hver generator gjør sin egen størrelse. url, hvert bilde lastes opp til en offentlig Blossom-verten og du får linken (noen generatorer gir bare tilbake en link av sin egen, som sendes videre). Hva brannen kan seMed
b64_json bildet returneres i svaret og lastes aldri opp. data: URL i image_url Det er undersøkt på samme måte som en
Edit og lastet opp til Blossom først slik at generatoren kan hente den; den blir slettet igjen hvis forespørselen mislykkes unbilled.
Hvis noen av de n bilder mislykkes, du får de som fungerte, belastes bare for de (pluss eventuelle leverandøren fakturert til tross for å mislykkes), og nymbot.failed angir hvor mange som mangler. Hvis alle feiler, returnerer forespørselen 502.
Svaret
{
"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 | Når |
|---|---|
400 | Ikke raskt n fra 1 til 4 (invalid_valueDet er en dårlig størrelse (invalid_size) eller bilde (invalid_image, invalid_image_url); en modell som eksisterer, men ikke er en bildegenerator (invalid_model); et bilde for en generator som ikke kan redigere (edit_unsupported); ingen bilde for en som trenger det (image_required). |
402 | Balansen kan ikke dekke hvert bilde som kreves. |
404 | Ingen modell med dette navnet (model_not_found). |
502 | Generatoren mislyktes (upstream_errorIngenting er belastet med mindre leverandøren fakturert for forsøk; deretter feilen har charged_sats. |
503 | Bildene kan ikke hentes for øyeblikket (media_hosting_unavailable). b64_json Fungerer fortsatt |
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);
Redigere bilder
Endrer et bilde du laster opp, etter en påminnelse.Dette er OpenAIs redigeringsendpunkt, så OpenAI SDKs' images.edit fungerer som det er. bare Pro-generatorer med edit i modelllisten aksepterer det.
POST https://nymbot.ai/api/v1/images/edits - trenger en API-nøkkel, eller Lightning betaling per forespørselKroppen er multipart/form-dataOpp til 32 MB.
| Feltet | Typen | Krevde | Beskrivelse |
|---|---|---|---|
image | Filer | Ja | Bildet som skal redigeres: PNG, JPEG, WebP eller GIF, opptil 20 MB. image[]Den første er brukt. |
prompt | Strenge | Ja | Hva å forandre. |
model | Strenge | Ja | Generator med edit. |
n | Integrert | Nei | 1 til 4. |
sizeaspect_ratioqualitynegative_promptoutput_format | Strenge | Nei | Når det gjelder generasjon. |
response_format | Strenge | Nei | "b64_json" (default her) eller "url". |
Bildet du laster opp er sjekket for å være en velformet PNG, JPEG, WebP eller GIF, sendt på som sin virkelige type, og satt på en offentlig Blossom-verter, fordi generatorene henter innspillene sine ved kobling. Behandle det som offentlig. Hvis redigering mislykkes og ingenting belastes, blir den vertsbaserte kopien slettet igjen. Svaret har samme form som for generasjon. Prisen er generatorens pris, som for noen generatorer inkluderer en avgift for innspillingsbildet.
Svaret
{
"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 | Når |
|---|---|
400 | Ingen bilde eller en fil som ikke er et bilde (invalid_image), eller en generator som ikke kan redigere (edit_unsupported). |
413 | Bildet er mer enn 20 MB (file_too_large), eller hele forespørselen over 32 MB. |
503 | Bildet kan ikke brukes for øyeblikket (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"));
Videoer
En video tar minutter, så den kjører i bakgrunnen. Du sender den inn, får en id umiddelbart, og spør om id til den er ferdig.
POST https://nymbot.ai/api/v1/videos - trenger en API-nøkkel, eller Lightning betaling per forespørselReturnerer 202.
| Feltet | Typen | Krevde | Beskrivelse |
|---|---|---|---|
model | Strenge | Ja | En video generator id fra GET /api/v1/models?type=video, slik som veo. |
prompt | Strenge | Ja | Hva bør skje. |
duration | Antall eller string | Nei | Lengde i sekunder, mer enn 0 og opp til 60. Brukes bare av generatorer som lar deg velge lengden; de andre gjør sin vanlige lengde, som er hva seconds Svaret og prisen følger. |
aspect_ratio | Strenge | Nei | Slik som "16:9" eller "9:16"En slik størrelse som "1280x720" blir det nærmeste forholdet. |
resolutionquality | Strenge | Nei | En av generatorene resolutions I modelllisten, for eksempel "720p" eller "1080p"Det setter prisen. Alt annet er avvist med unsupported_resolution. |
image_url | Strenge | Nei | Et bilde for å begynne med: en https:// Link eller a data:image/… URL, som lastes opp til en offentlig Blossom-verter først. Kreves av generatorer med requires_image_url. |
Prisen er fast når du sender inn, fra generatoren, oppløsning og lengde, så den belastes fra Pro-saldoen din så snart leverandøren aksepterer jobben, og vises som
cost, estimated_cost og nymbotHvis leverandøren nekter jobben, blir ingenting belastet. Hvis gjengivelsen senere mislykkes, eller det ferdige klippet ikke kan lagres og leverandøren ikke har fakturert for det, refunderes gebyret en gang, automatisk. En gjengivelse som fortsatt går etter en time blir gitt opp, og beholder sin gebyr, fordi leverandøren fakturerer en gjengivelse når den aksepterer den. En refusjon returnerer kredittene, men senker ikke nøkkelenes utgiftskonto.
Svar på spørsmål (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 Begynner som in_progresseller completed Videoen er allerede i data Generatoren ga den umiddelbart tilbake.
Sjekker på video
GET https://nymbot.ai/api/v1/videos/{id} - trenger en nøkkel som tilhører nym som sendte den. En nøkkel som har nådd sin cap kan fortsatt sjekke.
Det svarer 202 Når videoen er laget og 200 Spør hver 5 til 10 sekunder. Hver sjekk spør leverandøren en gang og svarer på en gang; det venter aldri på videoen.
GET /api/v1/videos oppgir de siste 50 jobbene til nøkkelen som
{"object": "list", "data": […]}.
Svar på spørsmål (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 er in_progress, completed eller failedEn mislykket jobb bærer error ({"code": "generation_failed", "message": …}Hvis det ble refundert, cost er 0 og nymbot Tillegg
refunded_credits og refunded_satsDen ferdige videoen er på en offentlig Blossom-verter, som genererte bilder.
| Status | Når |
|---|---|
400 | Ingen prompt; en varighet utenfor 0 til 60 (invalid_value); en oppløsning generatoren ikke tilbyr (unsupported_resolution); ingen bilde for en generator som trenger en (image_required); en modell som ikke er en video generator (invalid_model). |
402 | Pro-balansen kan ikke dekke videoen. |
404 | Ingen slik generator (model_not_found), eller ingen jobb av det id for din nym, eller det er mer enn 24 timer gammelt (video_not_found). |
429 | Din nym allerede har 10 videoer som gjengir (video_jobs_limitSjekk dem og send inn flere når en avslutter. |
502 | Generatoren nektet jobben. Ingenting blir belastet med mindre leverandøren fakturerte for det. |
503 | Videoer kan ikke leveres eller lagres akkurat nå (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);
Tekst til tale
Leser tekst høyt og returnerer selve lydfilen, ikke en lenke. audio.speech.create i OpenAI SDKs fungerer.
POST https://nymbot.ai/api/v1/audio/speech - trenger en API-nøkkel, eller Lightning betaling per forespørsel.
| Feltet | Typen | Krevde | Beskrivelse |
|---|---|---|---|
model | Strenge | Nei | En talemodell fra Liste over lydmodellerDefault: Standard stemme @cf/myshell-ai/melotts. aura-2 Det er Deepgram Aura 2. |
input | Strenge | Ja | Tekst å lese: opptil 800 tegn for standard stemme, 2000 for Aura 2. |
voice | Strenge | Nei | En stemme id fra Listen over stemmeren Aura-høyttaler som luna (eller aura-2-luna-en, eller et MeloTTS språk (en, es, fr, zhOpenAI stemmenavn som alloy er akseptert og gi modellens standard stemme. |
language | Strenge | Nei | Et språk som for eksempel esUten en stemme, velger den en for det språket. En stemme som snakker et annet språk returnerer 422 voice_language_mismatchog et språk som modellen ikke har noen stemme for 422 unsupported_language. |
response_format | Strenge | Nei | Standard stemmen returnerer mp3 Aura 2 er tilbake mp3 (Dette er et forsinkelse) opus, aac, flac, wav eller pcm. |
speed | Antall | Nei | Godkjent og ignorert. |
Den vanlige stemmen koster en flat 3 standard kreditter (30 sats) per forespørsel, som i appen. Aura 2 er Pro, prissatt etter tegnene du sender.
Content-TypeKostnadene ligger i X-Nymbot-Cost-Sats Hvis talemodellen mislykkes, blir ingenting belastet.
Svaret
HTTP/1.1 200 OK
Content-Type: audio/mpeg
X-Nymbot-Cost-Sats: 4.2
X-Nymbot-Balance-Sats: 41055.6
(audio bytes)
| Status | Når |
|---|---|
400 | Ingen innspill; innspill over modellens grense (input_too_long); et format som modellen ikke kan produsere (unsupported_response_formatEn ukjent stemme (invalid_voice); en modell som ikke er en talemodell (invalid_model). |
422 | Stemmen snakker ikke språket som er gitt, eller modellen har ingen stemme for det. |
502 | Ordforslaget mislykkes, det er ikke pålagt noe. |
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 og stemmer
To offentlige lister for å velge en talemodell og stemme, eller en transkripsjonsmodell.
GET https://nymbot.ai/api/v1/audio/models Ingen nøkkel nødvendig.
GET https://nymbot.ai/api/v1/audio/voices?language=en Ingen nøkkel nødvendig.
| Feltet | Typen | Krevde | Beskrivelse |
|---|---|---|---|
language | String (forespørsel) | Nei | Bare stemmer for dette språket. |
model | String (forespørsel) | Nei | Bare stemmer for denne modellen. |
Svar på spørsmål (stemmer)
{
"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 }
]
}
Modellene lister opp svar {"object": "list", "data": {"tts": […], "stt": […]}}Hver tale modell gir sin balanse, pris, max_input_chars,
response_formats, languages og default_voice· transkripsjonsmodellen gir sine aliaser, max_file_bytes, max_secondsPris og pris per 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);
Tale til tekst
Gjør en innspilling til tekst med Whisper. Dette er OpenAIs transkripsjonsendpunkt, så
audio.transcriptions.create og arbeider.
POST https://nymbot.ai/api/v1/audio/transcriptions - trenger en API-nøkkel, eller Lightning betaling per forespørselKroppen er multipart/form-data.
| Feltet | Typen | Krevde | Beskrivelse |
|---|---|---|---|
file | Filer | Ja | Opptak, fra 256 bytes til 25 MB og opptil 30 minutter: WAV, WebM, MP4 eller M4A, Ogg eller Opus, MP3 og de andre formatene Whisper leser. |
model | Strenge | Nei | Default whisperDette er Whisper Large v3 Turbo. whisper-1, whisper-large-v3-turbo og @cf/openai/whisper-large-v3-turbo Betyr det samme. |
language | Strenge | Nei | Det talte språket, som enoppdaget hvis de ble utestengt. |
prompt | Strenge | Nei | Ord eller stavemåter å forvente, for eksempel navn. |
response_format | Strenge | Nei | json (Dette er et forsinkelse) text, srt, vtt eller verbose_json. |
For WAV, WebM, MP4 og Ogg filer lengden leses fra filen før noe kjører, så en opptak over 30 minutter er nektet opp foran (med 3 sekunders nåde). En WAV fil lengde kommer fra sin prøvehastighet, kanaler og prøve størrelse. Lengden på andre formater, som MP3, kan ikke leses opp foran, så de er begrenset av størrelse: ved den laveste bitrate Nymbot antar, 8 kbps, 30 minutter er 1,8 MB, og en større fil i et slikt format er nektet med 413
audio_too_long Send lengre opptak som WAV, WebM, MP4 eller Ogg. Hvis Whisper deretter rapporterer mer enn 30 minutter uansett, blir forespørselen avvist med
413 audio_too_long, og siden Whisper kjørte, er 30 minutter belastet.
Du betaler for lengden på lyden, avrundet opp til den andre: lengst av lengden lest fra filen, lengden Whisper rapporter, og minst størrelsen på filen tillater, til Whisper's per-minutt pris med den vanlige gebyr og margin, og minst 0.05 kreditt en forespørsel. 402 gir hva hver balanse ville trenge.I appen kan transkribering av en talemelding være gratis; på API er det alltid ladet.Hvis Whisper mislykkes, blir ingenting ladet.
Svaret
{
"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 Returnerer klar tekst. srt og vtt Tilbake undertekster, og
verbose_json legger til språk, varighet og tidssegmenter. For de tre som ikke er JSON, er kostnaden i overskriftene.
| Status | Når |
|---|---|
400 | Ingen fil, en fil uten brukbar lyd (invalid_audio, et ukjent format, eller en modell som ikke er en transkripsjonsmodell (invalid_model). |
402 | Balansen kan ikke dekke den. |
413 | Filen er mer enn 25 MB (file_too_largeb) opptak over 30 minutter, eller i et format hvis lengde ikke kan leses opp foran, over 1,8 MB (audio_too_long). |
502 | Whisper kunne ikke behandle lyden. |
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);
Oversettelse av tale til engelsk
POST https://nymbot.ai/api/v1/audio/translations - trenger en API-nøkkel, eller Lightning betaling per forespørselKroppen er multipart/form-data.
Samme som transkripsjon, med de samme feltene bortsett fra language, grenser og pris, men teksten kommer tilbake på engelsk uansett språk som ble snakket. 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);
Embedded
Omdanner tekst til vektorer for søk, klassifisering og deduplisering.Modellene kjører på Cloudflare og bruker standardbalansen.
POST https://nymbot.ai/api/v1/embeddings - trenger en API-nøkkel, eller Lightning betaling per forespørsel.
| Feltet | Typen | Krevde | Beskrivelse |
|---|---|---|---|
model | Strenge | Ja | En innbyggermodell fra GET /api/v1/models?type=embedding. |
input | String eller array av strings | Ja | Det er ikke tillatt å legge inn en tekst, opptil 100 tomme strenger. token array er avvist (token_input_unsupported) Hver input må passe til modellens context_length, regnet som omtrent fire bytes en token. |
encoding_format | Strenge | Nei | float (default) eller base64 (Little-endian 32-bit flåter) |
dimensions | Integrert | Nei | modellens egen størrelse, eller for en modell med supported_dimensions En av dem; vektoren blir deretter forkortet og normalisert. |
| Modellen | Dimensjoner | Kontekst |
|---|---|---|
@cf/baai/bge-m3 | 1024 på flere språk | 8,192 tokens |
@cf/qwen/qwen3-embedding-0.6b | 1024 på flere språk | 8,192 tokens |
@cf/baai/bge-large-en-v1.5 | 1024 Engelsk | 512 kroner |
@cf/baai/bge-base-en-v1.5 | 768, Engelsk | 512 kroner |
@cf/baai/bge-small-en-v1.5 | 384 Engelsk | 512 kroner |
Modelllisten er kilden til sannheten for hvilke de er tilgjengelige og hva de koster; Googles EmbeddingGemma, med kortere vektorer på forespørsel, vises der også når katalogen har en pris for det.
Svaret
{
"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 | Når |
|---|---|
400 | Ingen innspill eller en tom en; token array (token_input_unsupportedmer enn 100 innspill (too_many_inputs); et innspill lengre enn modellen tar (input_too_long); en størrelse modellen ikke kan gi (unsupported_dimensions). |
402 | Standardbalansen er for lav. Innlemminger bruker aldri Probalansen. |
404 | Det finnes ingen modell med dette navnet. |
502 | Modellen mislyktes.Ingenting er belastet. |
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);