Hoppa till innehållet
Tillbaka till Nymbot

Kunskapsbas Utvecklare

Bilder, ljud och inbäddningar

Generatorerna från appen och byggstenarna för sökning: bilder, video, tal, transkription och inbäddningar, var och en fakturerad per användning från din balansräkning.

Generera bilder

Skapar en till fyra bilder från en prompt och returnerar dem när de är klara. ?image I den app.

POST https://nymbot.ai/api/v1/images/generations — behöver en API-nyckel, eller Lightning-betalning på begäran.

Ids kommer från GET /api/v1/models?type=imageDen vanliga generatorn, @cf/black-forest-labs/flux-1-schnell, kostar en flat 5 standard krediter (50 sats) en bild. Varje annan generator spenderar Pro krediter till sitt eget pris, med den vanliga avgiften och marginalen, som i Den app. n Bilder kostar n Ett fält som en generator inte tar droppas snarare än avvisas; standardgeneratorn använder endast prompt.

fältetTyp avnödvändigtBeskrivning
modelSträngarJaEn generator id, till exempel nano-banana.
promptSträngarJaVad ska man rita? Endast de första 2000 tecknen används.
nintegerNej1 till 4.Default 1.Accepteras också som num_images.
sizeSträngarNejEtt förhållande som "16:9"eller en öppen AI-storlek som "1792x1024", som blir närmast 1:1, 16:9, 9:16, 4:3, 3:4, 3:2, 2:3, 21:9, 5:4 och 4:5. "auto" Lämna den till generatorn.
aspect_ratioSträngarNejSamma som sizeOch vinner om båda skickas.
qualitySträngarNejGenerator specifika, såsom "low", "medium" eller "high".
negative_promptSträngarNejVad att lämna ut.
output_formatSträngarNej"png", "jpeg" eller "webp".
response_formatSträngarNej"url" (default) eller "b64_json".
image_urlSträngarNejEn bild att börja med: en https:// en länk på högst 4 096 tecken utan användarnamn eller lösenord i den, eller en data:image/…;base64 URL (PNG, JPEG, WebP eller GIF, inte SVG). Endast för generatorer med editsom krävs av dem med requires_image_url.

resolution inte används: varje generator gör sin egen storlek. url, varje bild laddas upp till en offentlig Blossom värd och du får dess länk (några generatorer ger bara tillbaka en länk av sin egen, som skickas vidare). Vad elden kan semed b64_json bilden returneras i svaret och laddas aldrig upp. data: Url i image_url kontrolleras på samma sätt som en Edit och laddas upp till Blossom först så att generatorn kan hämta det; det raderas igen om begäran misslyckas avräknat.

Om några av de n bilder misslyckas, du får de som fungerade, debiteras endast för dem (plus alla leverantören faktureras trots misslyckande), och nymbot.failed visar hur många som saknas. Om alla misslyckas returnerar begäran 502.

svarar

{
  "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 }
}
statusenNär
400inte snabbt; n från 1 till 4 (invalid_value); en dålig storlek (invalid_size) eller bild (invalid_image, invalid_image_url); en modell som existerar men inte är en bildgenerator (invalid_model); en bild för en generator som inte kan redigera (edit_unsupported); ingen bild för en som behöver det (image_required).
402Balansen kan inte täcka varje begärd bild.
404Ingen modell med det namnet (model_not_found).
502Generatorn har misslyckats (upstream_errorInget debiteras om inte leverantören faktureras för försöket; då felet har charged_sats.
503Bilderna kan inte vara värd just nu (media_hosting_unavailable). b64_json Fungerar fortfarande .

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);

Redigera bilder

Ändrar en bild du laddar upp, följer en uppmaning.Detta är OpenAI: s redigeringsändpunkt, så OpenAI SDK: s images.edit fungerar som det är. Endast Pro-generatorer med edit i modelllistan accepterar det.

POST https://nymbot.ai/api/v1/images/edits — behöver en API-nyckel, eller Lightning-betalning på begäranKroppen är multipart/form-dataUpp till 32 MB.

fältetTyp avnödvändigtBeskrivning
imageArkiveraJaBilden att redigera: PNG, JPEG, WebP eller GIF, upp till 20 MB. image[]Den första används.
promptSträngarJaVad att ändra.
modelSträngarJaEn generator med edit.
nintegerNej1 till 4.
size
aspect_ratio
quality
negative_prompt
output_format
SträngarNejVad gäller generationen.
response_formatSträngarNej"b64_json" (default här) eller "url".

Bilden du laddar upp kontrolleras för att vara en välformad PNG, JPEG, WebP eller GIF, skickas som dess verkliga typ, och placeras på en offentlig Blossom-värd, eftersom generatorerna hämtar sin input via länk. Behandla den som offentlig. Om redigering misslyckas och ingenting laddas, raderas den värdkopia igen. Svaret har samma form som för generering. Priset är generatorns pris, vilket för vissa generatorer inkluderar en avgift för inmatningsbilden.

svarar

{
  "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 }
}
statusenNär
400Ingen bild eller prompt, en fil som inte är en bild (invalid_image) eller en generator som inte kan redigera (edit_unsupported).
413Bilden är över 20 MB (file_too_large), eller hela begäran över 32 MB.
503Bilden kan inte vara värd just nu (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"));

Videor

En video tar minuter, så den körs i bakgrunden. Du skickar in den, får en id omedelbart och frågar om id tills den är klar.

POST https://nymbot.ai/api/v1/videos — behöver en API-nyckel, eller Lightning-betalning på begäranÅtervänder 202.

fältetTyp avnödvändigtBeskrivning
modelSträngarJaEn video generator id från GET /api/v1/models?type=videoSå som veo.
promptSträngarJaVad som borde hända.
durationnummer eller strängNejLängd i sekunder, mer än 0 och upp till 60. Används endast av generatorer som låter dig välja längd; de andra gör sin vanliga längd, vilket är vad seconds i svaret och priset följer.
aspect_ratioSträngarNejSå som "16:9" eller "9:16"En storlek som "1280x720" blir det närmaste förhållandet.
resolution
quality
SträngarNejEn av generatorerna resolutions I listan över modeller, som "720p" eller "1080p"Det sätter priset. Allt annat nekas med unsupported_resolution.
image_urlSträngarNejEn bild att börja med: en https:// Länk eller a data:image/… URL, som laddas upp till en offentlig Blossom-värd först. requires_image_url.

Priset är fast när du skickar, från generatorn, upplösning och längd, så det debiteras från din Pro-balans så snart leverantören accepterar jobbet, och visas som cost, estimated_cost och nymbotOm leverantören vägrar jobbet debiteras ingenting.Om renderingen senare misslyckas, eller om det färdiga klippet inte kan lagras och leverantören inte har fakturerat för det, återbetalas avgiften en gång, automatiskt.En rendering som fortfarande går efter en timme överges och behåller sin avgift, eftersom leverantören debiterar en rendering när den accepterar den.En återbetalning returnerar krediterna men sänker inte nyckelns utgifter.

Svar på frågan (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 Börjar som in_progresseller completed Med videon redan i data när generatorn omedelbart återlämnade den.

Kolla på en video

GET https://nymbot.ai/api/v1/videos/{id} — behöver en nyckel som tillhör nym som skickade den. En nyckel som har nått sin cap kan fortfarande kontrollera.

Det svarar 202 Samtidigt som videon skapas och 200 När den är klar eller har misslyckats. Fråga var 5 till 10 sekunder. Varje check frågar leverantören en gång och svarar på en gång; det väntar aldrig på videon. GET /api/v1/videos listar nyckelns sista 50 jobb som {"object": "list", "data": […]}.

Svar på frågorna (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 är in_progress, completed eller failedEtt misslyckat jobb bär error ({"code": "generation_failed", "message": …}Om det återbetalas, cost är 0 och nymbot tillägg refunded_credits och refunded_satsDen färdiga videon är på en offentlig Blossom-värd, som genererade bilder.

statusenNär
400Ingen snabb; en varaktighet utanför 0 till 60 (invalid_value); en upplösning som generatorn inte erbjuder (unsupported_resolution); ingen bild för en generator som behöver en (image_required); en modell som inte är en videogenerator (invalid_model).
402Pro-balansen kan inte täcka videon.
404Ingen sådan generator (model_not_found), eller inget jobb av det id för din nym, eller det är mer än 24 timmar gammalt (video_not_found).
429Din nym redan har 10 videor rendering (video_jobs_limitKontrollera dem och skicka fler när en avslutade.
502Generatorn vägrade jobbet. Inget debiteras om inte leverantören fakturerade för det.
503Videor kan inte levereras eller lagras just 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);

Text till tal

Läser text högt och returnerar själva ljudfilen, inte en länk. audio.speech.create i OpenAI SDKs fungerar.

POST https://nymbot.ai/api/v1/audio/speech — behöver en API-nyckel, eller Lightning-betalning på begäran.

fältetTyp avnödvändigtBeskrivning
modelSträngarNejEn talmodell från Listan över ljudmodellerDefault: Standard röst @cf/myshell-ai/melotts. aura-2 Det är Deepgram Aura 2.
inputSträngarJaTexten att läsa: upp till 800 tecken för standardröst, 2000 för Aura 2.
voiceSträngarNejEn röst-id från Listan över rösteren Aura-högtalare som luna (eller aura-2-luna-en) eller ett MeloTTS-språk (en, es, fr, zh). OpenAI röstnamn som alloy accepteras och ger modellens standardröst.
languageSträngarNejEn språkkod som esUtan en röst väljer den en röst för det språket. En röst som talar ett annat språk returnerar 422 voice_language_mismatchoch ett språk som modellen inte har någon röst för 422 unsupported_language.
response_formatSträngarNejStandard röst återvänder mp3 Aura 2 är tillbaka mp3 (Det är en defekt) opus, aac, flac, wav eller pcm.
speedAntaletNejAccepterat och ignorerat.

Standard röst kostar en flat 3 standard krediter (30 sats) en begäran, som i appen. Aura 2 är Pro, prissatt av de tecken du skickar. Content-TypeKostnaden är i den X-Nymbot-Cost-Sats header.Om talmodellen misslyckas, debiteras ingenting.

svarar

HTTP/1.1 200 OK
Content-Type: audio/mpeg
X-Nymbot-Cost-Sats: 4.2
X-Nymbot-Balance-Sats: 41055.6

(audio bytes)
statusenNär
400Ingen inmatning; inmatning över modellens gräns (input_too_long); ett format som modellen inte kan producera (unsupported_response_formatEn okänd röst (invalid_voice); en modell som inte är en talmodell (invalid_model).
422Rösten talar inte det språk som ges, eller modellen har ingen röst för det.
502Talarmodellen misslyckades. Inget är belagt.

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 och röster

Två offentliga listor för att välja en talmodell och röst, eller en transkriptionsmodell.Det finns 41 Aura 2 engelska talare och fyra MeloTTS språk.

GET https://nymbot.ai/api/v1/audio/models Ingen nyckel behövs.

GET https://nymbot.ai/api/v1/audio/voices?language=en Ingen nyckel behövs.

fältetTyp avnödvändigtBeskrivning
languagesträng (förfrågan)NejEndast röster för detta språk.
modelsträng (förfrågan)NejEndast röster för denna modell.

Svar på frågor (röster)

{
  "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 }
  ]
}

Modellerna lista svar {"object": "list", "data": {"tts": […], "stt": […]}}Varje talmodell ger sin balans, pris, max_input_chars, response_formats, languages och default_voice; transkriptionsmodellen ger sina alias, max_file_bytes, max_seconds, format och pris per 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 till text

Omvandlar en inspelning till text med Whisper. Detta är OpenAI:s transkriptionsändpunkt, så audio.transcriptions.create och verk.

POST https://nymbot.ai/api/v1/audio/transcriptions — behöver en API-nyckel, eller Lightning-betalning på begäranKroppen är multipart/form-data.

fältetTyp avnödvändigtBeskrivning
fileArkiveraJaInspelningen, från 256 byte till 25 MB och upp till 30 minuter: WAV, WebM, MP4 eller M4A, Ogg eller Opus, MP3 och andra format Whisper läser.
modelSträngarNejdefekt whisperDetta är Whisper Large v3 Turbo. whisper-1, whisper-large-v3-turbo och @cf/openai/whisper-large-v3-turbo Menar samma sak.
languageSträngarNejDet talade språket, som enUpptäckts om lämnas ut.
promptSträngarNejOrd eller stavningar att förvänta sig, till exempel namn. Endast de första 1000 tecknen används.
response_formatSträngarNejjson (Det är en defekt) text, srt, vtt eller verbose_json.

För WAV, WebM, MP4 och Ogg-filer läses längden från filen innan något körs, så en inspelning över 30 minuter vägras framåt (med 3 sekunders nåd). En WAV-fils längd kommer från dess provhastighet, kanaler och provstorlek. Längden på andra format, såsom MP3, kan inte läsas upp framåt, så de är begränsade av storlek: vid den lägsta bitraten antar Nymbot, 8 kbps, 30 minuter är 1,8 MB, och en större fil i sådant format vägras med 413 audio_too_long Skicka längre inspelningar som WAV, WebM, MP4 eller Ogg. Om Whisper sedan rapporterar mer än 30 minuter ändå avvisas begäran med 413 audio_too_long, och eftersom Whisper körde, laddas 30 minuter.

Du betalar för längden på ljudet, avrundat upp till den andra: den längsta av längden läst från filen, längden Whisper rapporter, och det minsta filens storlek tillåter, till Whisper per minut pris med den vanliga avgiften och marginalen, och minst 0,05 kredit en begäran. 402 ger vad varje balans skulle behöva. I appen kan transkriptionen av ett röstmeddelande vara gratis; på API laddas det alltid. Om Whisper misslyckas laddas inget.

svarar

{
  "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 Returnerar tydlig text srt och vtt återgå till undertexter, och verbose_json lägger till språket, varaktigheten och tidssegmenten. För de tre som inte är JSON är kostnaden i rubrikerna.

statusenNär
400Ingen fil, en fil med ingen användbar ljud (invalid_audio, ett okänt format, eller en modell som inte är en transkriptionsmodell (invalid_model).
402Inte ens balansen kan täcka den.
413Filen är större än 25 MB (file_too_large) eller inspelningen över 30 minuter, eller, i ett format vars längd inte kan läsas upp på framsidan, över 1,8 MB (audio_too_long).
502Whisper kunde inte bearbeta ljudet.

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);

Översätt tal till engelska

POST https://nymbot.ai/api/v1/audio/translations — behöver en API-nyckel, eller Lightning-betalning på begäranKroppen är multipart/form-data.

Samma som transkription, med samma fält förutom language, gränser och pris, men texten kommer tillbaka på engelska oavsett vilket språk som talades. 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);

Inbäddningar

Omvandlar text till vektorer för sökning, klassificering och deduplicering.Modellerna körs på Cloudflare och spenderar standardbalansen.

POST https://nymbot.ai/api/v1/embeddings — behöver en API-nyckel, eller Lightning-betalning på begäran.

fältetTyp avnödvändigtBeskrivning
modelSträngarJaEn inbäddad modell från GET /api/v1/models?type=embedding.
inputString eller array av stringsJaText som ska inbäddas, upp till 100 icke-tomma strängar.token_input_unsupported) Varje inmatning måste matcha modellens context_length, räknas som ungefär fyra bytes en token.
encoding_formatSträngarNejfloat (default) eller base64 (Little-endian 32-bit floats är en liten fluga)
dimensionsintegerNejmodellens egen storlek, eller för en modell med supported_dimensions En av dem; vectorn förkortas och normaliseras.
ModellenDimensionerKontexten
@cf/baai/bge-m31024 många språk8,192 stycken
@cf/qwen/qwen3-embedding-0.6b1024 många språk8,192 stycken
@cf/baai/bge-large-en-v1.51024 på engelska512 stycken
@cf/baai/bge-base-en-v1.5768, Engelska512 stycken
@cf/baai/bge-small-en-v1.5384 Engelska512 stycken

Modellistan är källan till sanningen för vilka de är tillgängliga och vad de kostar; Googles EmbeddingGemma, med kortare vektorer på begäran, visas där också när katalogen har ett pris för det.

svarar

{
  "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 }
}
statusenNär
400Ingen inmatning eller en tom; token array (token_input_unsupported); mer än 100 ingångar (too_many_inputs); en inmatning längre än modellen tar (input_too_long); en storlek som modellen inte kan ge (unsupported_dimensions).
402Standardbalansen är för låg. Inbäddningar använder aldrig Pro-balansen.
404Ingen inbäddad modell med detta namn.
502Modellen misslyckades. Inget är debiterat.

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);