Vidensgrundlag Udviklere
Billeder, lyd og indlejringer
Generatorerne fra appen og byggeblokkerne til søgning: billeder, video, tale, transkription og indlejringer, hver faktureret pr. Brug fra din balance.
Denne side er maskinoversat for nemheds skyld. Den engelske original er den version, der gælder.
Genererer billeder
Optager en til fire billeder fra en prompt og returnerer dem, når de er færdige. ?image På den app.
POST https://nymbot.ai/api/v1/images/generations - der kræves en API-nøgle, eller Lightning betaling efter anmodning.
Ids kommer fra GET /api/v1/models?type=imageDen almindelige generator,
@cf/black-forest-labs/flux-1-schnell, koster en flat 5 standard kreditter (50 sats) et billede. Hver anden generator bruger Pro kreditter til sin egen pris, med den sædvanlige gebyr og margin, som i Den app. n Billeder koster
n Et felt, som en generator ikke tager, falder i stedet for afvist; standardgeneratoren bruger kun prompt.
| Feltet | Type af | Kræves | Beskrivelse af |
|---|---|---|---|
model | Strenge | Ja | En generator id, som nano-banana. |
prompt | Strenge | Ja | Kun de første 2000 tegn anvendes. |
n | Integer | Nej ikke | 1 til 4. Default 1. også accepteret som num_images. |
size | Strenge | Nej ikke | Et forhold som "16:9"eller en åben størrelse, som "1792x1024", som bliver den nærmeste af 1:1, 16:9, 9:16, 4:3, 3:4, 3:2, 2:3, 21:9, 5:4 og 4:5. "auto" Lad det gå til generatoren. |
aspect_ratio | Strenge | Nej ikke | Det samme som sizeOg vinder, hvis begge bliver sendt. |
quality | Strenge | Nej ikke | Generatorer som f.eks. "low", "medium" eller "high". |
negative_prompt | Strenge | Nej ikke | Hvad man skal efterlade. |
output_format | Strenge | Nej ikke | "png", "jpeg" eller "webp". |
response_format | Strenge | Nej ikke | "url" (den forældede) eller "b64_json". |
image_url | Strenge | Nej ikke | Et billede til at starte med: en https:// link på højst 4 096 tegn uden brugernavn eller adgangskode i det, eller en data:image/…;base64 URL (PNG, JPEG, WebP eller GIF; ikke SVG). editkræves af dem, der har requires_image_url. |
resolution ikke anvendes: hver generator gør sin egen størrelse. url, hvert billede uploades til en offentlig Blossom vært, og du får linket (nogle generatorer returnerer kun et link af deres egen, som sendes videre). Hvad branden kan semed
b64_json billedet returneres i svaret og uploades aldrig. data: URL til image_url Det kontrolleres på samme måde som en
Edit og uploades til Blossom først, så generatoren kan hente det; det slettes igen, hvis anmodningen mislykkes.
Hvis nogle af de n billeder fejler, du får dem, der fungerede, opkræves kun for dem (plus eventuelle leverandøren faktureret på trods af fejlen), og nymbot.failed angiver, hvor mange der mangler. Hvis alle fejler, returneres anmodningen 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 er | Når |
|---|---|
400 | Ikke hurtigt n Fra 1 til 4 (invalid_value); en dårlig størrelse (invalid_size) eller billede (invalid_image, invalid_image_url); en model, der eksisterer, men ikke er en billedgenerator (invalid_model); et billede til en generator, der ikke kan redigere (edit_unsupported); ingen billede for en, der har brug for det (image_required). |
402 | Balancen kan ikke dække alle de ønskede billeder. |
404 | Ingen model med dette navn (model_not_found). |
502 | Generatoren mislykkedes (upstream_errorIntet opkræves, medmindre udbyderen har opkrævet for forsøget; så er fejlen charged_sats. |
503 | Billeder kan ikke hostes lige nu (media_hosting_unavailable). b64_json Det virker stadig. |
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);
Rediger billeder
Ændrer et billede, du uploader, efter en opfordring. Dette er OpenAI's redigering endpoint, så OpenAI SDK's images.edit fungerer som det er. Kun Pro-generatorer med edit På modellen er det accepteret.
POST https://nymbot.ai/api/v1/images/edits - der kræves en API-nøgle, eller Lightning betaling efter anmodningKroppen er multipart/form-dataOp til 32 MB.
| Feltet | Type af | Kræves | Beskrivelse af |
|---|---|---|---|
image | Filen | Ja | Billedet til redigering: PNG, JPEG, WebP eller GIF, op til 20 MB. image[]Den første er brugt. |
prompt | Strenge | Ja | Hvad skal ændres. |
model | Strenge | Ja | En generator med edit. |
n | Integer | Nej ikke | 1 til 4. |
sizeaspect_ratioqualitynegative_promptoutput_format | Strenge | Nej ikke | Hvad angår generation. |
response_format | Strenge | Nej ikke | "b64_json" (default her) eller "url". |
Det billede, du uploader, kontrolleres for at være en velformet PNG, JPEG, WebP eller GIF, sendes som sin virkelige type og placeres på en offentlig Blossom-vært, fordi generatorerne henter deres input via link. Behandle det som offentligt. Hvis redigering mislykkes og intet opkræves, slettes den hostede kopi igen. Svaret har samme form som for generation. Prisen er generatorens pris, som for nogle generatorer inkluderer et gebyr for inputbilledet.
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 er | Når |
|---|---|
400 | Ingen billede eller prompt, en fil, der ikke er et billede (invalid_image) eller en generator, der ikke kan redigere (edit_unsupported). |
413 | Billedet er over 20 MB (file_too_large), eller hele forespørgslen over 32 MB. |
503 | Billedet kan ikke hostes i øjeblikket (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 tager minutter, så den kører i baggrunden. Du indsender den, får et id med det samme, og spørger om id'et, indtil det er gjort.
POST https://nymbot.ai/api/v1/videos - der kræves en API-nøgle, eller Lightning betaling efter anmodningTilbage 202.
| Feltet | Type af | Kræves | Beskrivelse af |
|---|---|---|---|
model | Strenge | Ja | En video generator id fra GET /api/v1/models?type=videoSom sådan som veo. |
prompt | Strenge | Ja | Hvad der skulle ske. |
duration | Nummer eller string | Nej ikke | Længde i sekunder, mere end 0 og op til 60. Bruges kun af generatorer, der giver dig mulighed for at vælge længden; de andre gør deres sædvanlige længde, hvilket er hvad seconds Svaret og prisen følger. |
aspect_ratio | Strenge | Nej ikke | Sådan som "16:9" eller "9:16"En størrelse som "1280x720" Det er det nærmeste forhold. |
resolutionquality | Strenge | Nej ikke | En af generatorerne resolutions På listen over modeller, som "720p" eller "1080p"Det fastsætter prisen. Alt andet er afvist med unsupported_resolution. |
image_url | Strenge | Nej ikke | Et billede til at starte med: en https:// Link eller A data:image/… URL, som først uploades til en offentlig Blossom host. Kræves af generatorer med requires_image_url. |
Prisen er fast, når du indsender, fra generatoren, opløsning og længde, så den opkræves fra din Pro-balance, så snart udbyderen accepterer jobbet, og vises som
cost, estimated_cost og nymbotHvis udbyderen nægter jobbet, opkræves der intet.Hvis renderingen senere mislykkes, eller hvis det færdige klip ikke kan gemmes, og udbyderen ikke har faktureret for det, refunderes gebyret en gang, automatisk.En rendering, der stadig går efter en time, opgives, og beholder gebyret, fordi udbyderen fakturerer en rendering, når den accepterer det.En refundering returnerer kreditterne, men nedsætter ikke nøglenes udgiftskonto.
Svar på spørgsmå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 Begynder som in_progresseller completed Videoen er allerede i data Så kom generatoren med det samme.
Tjek på en video
GET https://nymbot.ai/api/v1/videos/{id} - har brug for en nøgle, der tilhører den nym, der indsendte den. En nøgle, der har nået sin cap, kan stadig tjekke.
Det svarer 202 Mens videoen bliver lavet og 200 Spørg hver 5 til 10 sekunder. Hver check spørger leverandøren en gang og svarer med det samme; det venter aldrig på videoen. Et job holdes i 24 timer efter det blev indsendt.
GET /api/v1/videos Lister de sidste 50 jobs som
{"object": "list", "data": […]}.
Svar på spørgsmå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 failedEt mislykket job bærer error ({"code": "generation_failed", "message": …}Hvis det er tilbagebetalt, cost er 0 og nymbot Tilføj
refunded_credits og refunded_satsDen færdige video er på en offentlig Blossom vært, ligesom genererede billeder.
| Status er | Når |
|---|---|
400 | Ingen prompt; en varighed uden for 0 til 60 (invalid_value); en opløsning, som generatoren ikke tilbyder (unsupported_resolution); ingen billede til en generator, der har brug for en (image_required); en model, der ikke er en video generator (invalid_model). |
402 | Pro balance kan ikke dække videoen. |
404 | Der er ikke tale om en generator (model_not_found) eller ingen job af det id for din nym, eller det er mere end 24 timer gammelt (video_not_found). |
429 | Din nym allerede har 10 videoer rendering (video_jobs_limitTjek dem og indsend flere, når en afslutter. |
502 | Generatoren afviste jobbet. Intet opkræves, medmindre udbyderen har faktureret for det. |
503 | Videoer kan ikke leveres eller gemmes lige nu (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
Læser tekst højt og returnerer selve lydfilen, ikke et link. audio.speech.create i OpenAI SDKs fungerer.
POST https://nymbot.ai/api/v1/audio/speech - der kræves en API-nøgle, eller Lightning betaling efter anmodning.
| Feltet | Type af | Kræves | Beskrivelse af |
|---|---|---|---|
model | Strenge | Nej ikke | En talemodel fra Listen over lydmodellerDefault: Den standard stemme @cf/myshell-ai/melotts. aura-2 Det er Deepgram Aura 2. |
input | Strenge | Ja | Teksten til læsning: Op til 800 tegn for den standard stemme, 2000 for Aura 2. |
voice | Strenge | Nej ikke | En stemme-id fra Listen over stemmerEn Aura-højttaler som luna (eller aura-2-luna-en) eller et MeloTTS sprog (en, es, fr, zh) OpenAI stemme navne som alloy er accepteret og giver modelens standardstemme. |
language | Strenge | Nej ikke | Et sprog som esUden en stemme vælger den en for det pågældende sprog.En stemme, der taler et andet sprog, returnerer 422 voice_language_mismatchog et sprog, som modellen ikke har en stemme til 422 unsupported_language. |
response_format | Strenge | Nej ikke | Den almindelige stemme vender tilbage mp3 Aura 2 vender tilbage mp3 (Det er et underskud) opus, aac, flac, wav eller pcm. |
speed | Nummeret | Nej ikke | Accepteret og ignoreret. |
Den standard stemme koster en flat 3 standard kreditter (30 sats) en anmodning, som i appen. Aura 2 er Pro, prissat af de tegn, du sender.
Content-TypeOmkostningerne er i den X-Nymbot-Cost-Sats Hvis talemodellen fejler, opkræves der ikke noget.
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 er | Når |
|---|---|
400 | Ingen input; input over modelens grænse (input_too_long); et format, som modellen ikke kan producere (unsupported_response_formatEn ukendt stemme (invalid_voice); en model, der ikke er en talemodel (invalid_model). |
422 | Stemmen taler ikke det sprog, der er givet, eller modellen har ingen stemme til det. |
502 | Modellen fejler. Der er ikke noget, der opkræves. |
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()));
Lydmodeller og stemmer
To offentlige lister for at vælge en tale model og stemme, eller en transkriptionsmodel.Der er 41 Aura 2 engelsktalende og fire MeloTTS sprog.
GET https://nymbot.ai/api/v1/audio/models Ingen nøgle kræves.
GET https://nymbot.ai/api/v1/audio/voices?language=en Ingen nøgle kræves.
| Feltet | Type af | Kræves | Beskrivelse af |
|---|---|---|---|
language | String (Kørsel) | Nej ikke | Kun stemmer for dette sprog. |
model | String (Kørsel) | Nej ikke | Kun stemmer til denne model. |
Svar på spørgsmå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 }
]
}
Modeller lister svar {"object": "list", "data": {"tts": […], "stt": […]}}Hver tale model giver sin balance, pris, max_input_chars,
response_formats, languages og default_voice· Transkriptionsmodellen giver sine aliaser, max_file_bytes, max_secondsPriser og priser pr. 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);
Tal til tekst
Omdanner en optagelse til tekst med Whisper. Dette er OpenAI's transkriptionsendpunkt, så
audio.transcriptions.create Arbejder på.
POST https://nymbot.ai/api/v1/audio/transcriptions - der kræves en API-nøgle, eller Lightning betaling efter anmodningKroppen er multipart/form-data.
| Feltet | Type af | Kræves | Beskrivelse af |
|---|---|---|---|
file | Filen | Ja | Optagelsen, fra 256 byte til 25 MB og op til 30 minutter: WAV, WebM, MP4 eller M4A, Ogg eller Opus, MP3 og de andre formater Whisper læser. |
model | Strenge | Nej ikke | Default whisperDet er Whisper Large v3 Turbo. whisper-1, whisper-large-v3-turbo og @cf/openai/whisper-large-v3-turbo Sig det samme. |
language | Strenge | Nej ikke | Det talte sprog, som enOpdaget, hvis den blev efterladt. |
prompt | Strenge | Nej ikke | Ord eller stavelser at forvente, såsom navne. Kun de første 1000 tegn anvendes. |
response_format | Strenge | Nej ikke | json (Det er et underskud) text, srt, vtt eller verbose_json. |
For WAV, WebM, MP4 og Ogg filer længden læses fra filen, før noget kører, så en optagelse over 30 minutter er nægtet op foran (med 3 sekunders nåde). En WAV fil længde kommer fra dens prøve rate, kanaler og prøve størrelse. Længden af andre formater, såsom MP3, kan ikke læses op foran, så de er begrænset af størrelse: ved den laveste bitrate Nymbot antager, 8 kbps, 30 minutter er 1,8 MB, og en større fil i et sådant format er nægtet med 413
audio_too_long Send længere optagelser som WAV, WebM, MP4 eller Ogg. Hvis Whisper så rapporterer mere end 30 minutter alligevel, afvises anmodningen med
413 audio_too_long, og da Whisper løb, er 30 minutter opkrævet.
Du betaler for længden af lyd, afrundet op til det andet: den længste af længden læst fra filen, længden Whisper rapporter, og det mindste filens størrelse tillader, til Whisper's per-minut pris med den sædvanlige gebyr og margin, og mindst 0.05 kredit en anmodning. 402 Det giver, hvad hver balance ville have brug for. I appen kan transkription af en talemeddelelse være gratis; på API'en oplades det altid.
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 Tilbage til undertekster, og
verbose_json tilføjer sprog, varighed og timede segmenter. For de tre, der ikke er JSON, er omkostningerne i overskrifterne.
| Status er | Når |
|---|---|
400 | Ingen fil, en fil uden brugbar lyd (invalid_audio) et ukendt format, eller en model, der ikke er en transkriptionsmodel (invalid_model). |
402 | Ligevægten kan ikke dække det. |
413 | Filen er mere end 25 MB (file_too_large) eller optagelsen over 30 minutter, eller, i et format, hvis længde ikke kan læses op foran, over 1,8 MB (audio_too_long). |
502 | Whisper kunne ikke behandle lyden. Intet er opkrævet. |
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);
Oversættelse af tale til engelsk
POST https://nymbot.ai/api/v1/audio/translations - der kræves en API-nøgle, eller Lightning betaling efter anmodningKroppen er multipart/form-data.
Det samme som transkription, med de samme felter bortset fra language, grænser og pris, men teksten kommer tilbage på engelsk, uanset hvilket sprog der blev talt. 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);
Indsætninger
Omdanner tekst til vektorer til søgning, klassificering og deduplicering.Modellerne kører på Cloudflare og bruger standardbalancen.
POST https://nymbot.ai/api/v1/embeddings - der kræves en API-nøgle, eller Lightning betaling efter anmodning.
| Feltet | Type af | Kræves | Beskrivelse af |
|---|---|---|---|
model | Strenge | Ja | En indbygget model fra GET /api/v1/models?type=embedding. |
input | String eller array af strings | Ja | Det er ikke tilstrækkeligt at indstille en tekst med op til 100 tomme strenge.Token-arrayer afvises (token_input_unsupported) Hver input skal passe til modellen context_length, regnet som omkring fire bytes en token. |
encoding_format | Strenge | Nej ikke | float (den forældede) eller base64 (Little-endian 32-bit flåder) |
dimensions | Integer | Nej ikke | modellen, eller for en model med supported_dimensions en af dem; vektoren forkortes derefter og normaliseres. |
| Modellen | Dimensioner | Konteksten |
|---|---|---|
@cf/baai/bge-m3 | 1024 på mange sprog | 8.192 billetter |
@cf/qwen/qwen3-embedding-0.6b | 1024 på mange sprog | 8.192 billetter |
@cf/baai/bge-large-en-v1.5 | 1024 Engelsk | 512 Tænder |
@cf/baai/bge-base-en-v1.5 | 768, Engelsk | 512 Tænder |
@cf/baai/bge-small-en-v1.5 | 384 Engelsk | 512 Tænder |
Modellisten er kilden til sandheden for hvilke der er tilgængelige og hvad de koster; Googles EmbeddingGemma, med kortere vektorer på anmodning, vises der også, når kataloget 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 er | Når |
|---|---|
400 | Ingen input eller en tom en; token array (token_input_unsupported); mere end 100 input (too_many_inputs); en input længere end modellen tager (input_too_long); en størrelse, som modellen ikke kan give (unsupported_dimensions). |
402 | Standardbalancen er for lav. Indlejringer bruger aldrig Pro-balancen. |
404 | Ikke en model med det navn. |
502 | Modellen mislykkedes. der er ikke opkrævet noget. |
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);