Spring til indholdet
Tilbage til Nymbot

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.

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.

FeltetType afKrævesBeskrivelse af
modelStrengeJaEn generator id, som nano-banana.
promptStrengeJaKun de første 2000 tegn anvendes.
nIntegerNej ikke1 til 4. Default 1. også accepteret som num_images.
sizeStrengeNej ikkeEt 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_ratioStrengeNej ikkeDet samme som sizeOg vinder, hvis begge bliver sendt.
qualityStrengeNej ikkeGeneratorer som f.eks. "low", "medium" eller "high".
negative_promptStrengeNej ikkeHvad man skal efterlade.
output_formatStrengeNej ikke"png", "jpeg" eller "webp".
response_formatStrengeNej ikke"url" (den forældede) eller "b64_json".
image_urlStrengeNej ikkeEt 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 erNår
400Ikke 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).
402Balancen kan ikke dække alle de ønskede billeder.
404Ingen model med dette navn (model_not_found).
502Generatoren mislykkedes (upstream_errorIntet opkræves, medmindre udbyderen har opkrævet for forsøget; så er fejlen charged_sats.
503Billeder 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.

FeltetType afKrævesBeskrivelse af
imageFilenJaBilledet til redigering: PNG, JPEG, WebP eller GIF, op til 20 MB. image[]Den første er brugt.
promptStrengeJaHvad skal ændres.
modelStrengeJaEn generator med edit.
nIntegerNej ikke1 til 4.
size
aspect_ratio
quality
negative_prompt
output_format
StrengeNej ikkeHvad angår generation.
response_formatStrengeNej 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 erNår
400Ingen billede eller prompt, en fil, der ikke er et billede (invalid_image) eller en generator, der ikke kan redigere (edit_unsupported).
413Billedet er over 20 MB (file_too_large), eller hele forespørgslen over 32 MB.
503Billedet 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.

FeltetType afKrævesBeskrivelse af
modelStrengeJaEn video generator id fra GET /api/v1/models?type=videoSom sådan som veo.
promptStrengeJaHvad der skulle ske.
durationNummer eller stringNej ikkeLæ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_ratioStrengeNej ikkeSådan som "16:9" eller "9:16"En størrelse som "1280x720" Det er det nærmeste forhold.
resolution
quality
StrengeNej ikkeEn af generatorerne resolutions På listen over modeller, som "720p" eller "1080p"Det fastsætter prisen. Alt andet er afvist med unsupported_resolution.
image_urlStrengeNej ikkeEt 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 erNår
400Ingen 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).
402Pro balance kan ikke dække videoen.
404Der 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).
429Din nym allerede har 10 videoer rendering (video_jobs_limitTjek dem og indsend flere, når en afslutter.
502Generatoren afviste jobbet. Intet opkræves, medmindre udbyderen har faktureret for det.
503Videoer 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.

FeltetType afKrævesBeskrivelse af
modelStrengeNej ikkeEn talemodel fra Listen over lydmodellerDefault: Den standard stemme @cf/myshell-ai/melotts. aura-2 Det er Deepgram Aura 2.
inputStrengeJaTeksten til læsning: Op til 800 tegn for den standard stemme, 2000 for Aura 2.
voiceStrengeNej ikkeEn 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.
languageStrengeNej ikkeEt 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_formatStrengeNej ikkeDen almindelige stemme vender tilbage mp3 Aura 2 vender tilbage mp3 (Det er et underskud) opus, aac, flac, wav eller pcm.
speedNummeretNej ikkeAccepteret 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 erNår
400Ingen 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).
422Stemmen taler ikke det sprog, der er givet, eller modellen har ingen stemme til det.
502Modellen 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.

FeltetType afKrævesBeskrivelse af
languageString (Kørsel)Nej ikkeKun stemmer for dette sprog.
modelString (Kørsel)Nej ikkeKun 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.

FeltetType afKrævesBeskrivelse af
fileFilenJaOptagelsen, 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.
modelStrengeNej ikkeDefault whisperDet er Whisper Large v3 Turbo. whisper-1, whisper-large-v3-turbo og @cf/openai/whisper-large-v3-turbo Sig det samme.
languageStrengeNej ikkeDet talte sprog, som enOpdaget, hvis den blev efterladt.
promptStrengeNej ikkeOrd eller stavelser at forvente, såsom navne. Kun de første 1000 tegn anvendes.
response_formatStrengeNej ikkejson (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 erNår
400Ingen fil, en fil uden brugbar lyd (invalid_audio) et ukendt format, eller en model, der ikke er en transkriptionsmodel (invalid_model).
402Ligevægten kan ikke dække det.
413Filen 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).
502Whisper 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.

FeltetType afKrævesBeskrivelse af
modelStrengeJaEn indbygget model fra GET /api/v1/models?type=embedding.
inputString eller array af stringsJaDet 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_formatStrengeNej ikkefloat (den forældede) eller base64 (Little-endian 32-bit flåder)
dimensionsIntegerNej ikkemodellen, eller for en model med supported_dimensions en af dem; vektoren forkortes derefter og normaliseres.
ModellenDimensionerKonteksten
@cf/baai/bge-m31024 på mange sprog8.192 billetter
@cf/qwen/qwen3-embedding-0.6b1024 på mange sprog8.192 billetter
@cf/baai/bge-large-en-v1.51024 Engelsk512 Tænder
@cf/baai/bge-base-en-v1.5768, Engelsk512 Tænder
@cf/baai/bge-small-en-v1.5384 Engelsk512 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 erNår
400Ingen 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).
402Standardbalancen er for lav. Indlejringer bruger aldrig Pro-balancen.
404Ikke en model med det navn.
502Modellen 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);