Ga naar de inhoud
Terug naar Nymbot

Kennisbank Ontwikkelaars

Afbeeldingen, audio en embeddings

De generatoren van de app, en de bouwstenen voor het zoeken: foto's, video's, spraak, transcripties en embeddings, elk gefactureerd per gebruik van uw saldo.

Genereren van beelden

Maak één tot vier foto's van een prompt en retourneert ze wanneer ze klaar zijn. ?image In de app.

POST https://nymbot.ai/api/v1/images/generations — een API-sleutel nodig heeft, of Een Lightning betaling per aanvraag.

IDS komt van GET /api/v1/models?type=imageDe standaard generator, @cf/black-forest-labs/flux-1-schnell, kost een flat 5 standaard credits (50 sats) een foto. Elke andere generator besteedt Pro credits tegen zijn eigen prijs, met de gebruikelijke vergoeding en marge, zoals in De app. n Foto's kosten n Een veld dat een generator niet neemt, wordt in plaats van geweigerd weggelaten; de standaardgenerator gebruikt alleen de prompt.

Het veldtypevereistBeschrijving
modelStringJaEen generator id, zoals nano-banana.
promptStringJaWat te tekenen: Alleen de eerste 2000 tekens worden gebruikt.
nintegerniet1 tot 4. standaard 1. ook geaccepteerd als num_images.
sizeStringnietEen aspect ratio zoals "16:9", of een openAI-grootte zoals "1792x1024", die het dichtstbijzijnde wordt van 1:1, 16:9, 9:16, 4:3, 3:4, 3:2, 2:3, 21:9, 5:4 en 4:5. "auto" Geef het dan aan de generator.
aspect_ratioStringnietHetzelfde als size, en wint als beide worden verzonden.
qualityStringnietGenerator-specifieke, zoals "low", "medium" of "high".
negative_promptStringnietWat te verlaten.
output_formatStringniet"png", "jpeg" of "webp".
response_formatStringniet"url" (de default) of "b64_json".
image_urlStringnietEen foto om te beginnen met: een https:// een link van maximaal 4.096 tekens zonder gebruikersnaam of wachtwoord, of een data:image/…;base64 URL (PNG, JPEG, WebP of GIF; niet SVG). Alleen voor generatoren met editvereist door degenen met requires_image_url.

resolution wordt niet gebruikt: elke generator maakt zijn eigen grootte. url, elke afbeelding wordt geüpload naar een publieke Blossom-host en je krijgt de link (een paar generatoren geven alleen een link terug van hun eigen, die wordt doorgegeven). Wat het vuur kan zien. met b64_json de afbeelding wordt teruggestuurd in de reactie en wordt nooit geüpload. data: URL in image_url wordt op dezelfde manier gecontroleerd als een Edit en geüpload naar Blossom eerst, zodat de generator het kan ophalen; het wordt opnieuw verwijderd als de aanvraag mislukt onbetaald.

Als sommige van de n foto's falen, je krijgt degenen die werkten, worden alleen betaald voor die (plus elke aanbieder in rekening gebracht ondanks het falen), en nymbot.failed zegt hoeveel er ontbreken. als ze allemaal falen, wordt de aanvraag 502.

Reactie

{
  "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 }
}
StatusWanneer
400niet snel; n 1 tot en met 4 (invalid_valueEen slechte grootte (invalid_size) of afbeelding (invalid_image, invalid_image_url); een model dat bestaat, maar geen beeldgenerator is (invalid_model); een afbeelding voor een generator die niet kan bewerken (edit_unsupported); geen foto voor iemand die het nodig heeft (image_required).
402De balans kan niet alle gevraagde foto's dekken.
404Geen model met deze naam (model_not_found).
502De generator mislukt (upstream_errorEr wordt niets in rekening gebracht tenzij de provider voor de poging heeft gefactureerd; dan heeft de fout charged_sats.
503Foto's kunnen op dit moment niet worden gehost (media_hosting_unavailable). b64_json nog steeds werkt.

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

Beelden bewerken

Wijzigt een afbeelding die u uploadt, na een aanmaning.Dit is het bewerkingsendpunt van OpenAI, dus de OpenAI SDK's images.edit werkt zoals het is. Alleen Pro-generatoren met edit in de modellijst accepteren.

POST https://nymbot.ai/api/v1/images/edits — een API-sleutel nodig heeft, of Een Lightning betaling per aanvraagHet lichaam is multipart/form-dataTot wel 32 MB.

Het veldtypevereistBeschrijving
imagebestandJaDe afbeelding om te bewerken: PNG, JPEG, WebP of GIF, tot 20 MB. image[]De eerste wordt gebruikt.
promptStringJaWat te veranderen.
modelStringJaEen generator met edit.
nintegerniet1 tot 4.
size
aspect_ratio
quality
negative_prompt
output_format
StringnietWat generatie betreft.
response_formatStringniet"b64_json" (de standaard hier) of "url".

De afbeelding die u uploadt wordt gecontroleerd op een goed gevormde PNG, JPEG, WebP of GIF, verzonden als zijn echte type, en op een publieke Blossom-host geplaatst, omdat de generatoren hun input ophalen via link. Behandel het als publiek. Als de bewerking faalt en niets wordt geladen, wordt de gehost kopie opnieuw verwijderd. De reactie heeft dezelfde vorm als voor generatie. De prijs is de prijs van de generator, die voor sommige generatoren een vergoeding voor de inputfoto omvat.

Reactie

{
  "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 }
}
StatusWanneer
400Geen afbeelding of prompt, een bestand dat geen afbeelding (invalid_image) of een generator die niet kan bewerken (edit_unsupported).
413De afbeelding is meer dan 20 MB (file_too_large), of het volledige verzoek van meer dan 32 MB.
503De foto kan op dit moment niet worden gehost (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"));

Video’s

Een video duurt minuten, dus het loopt in de achtergrond. U stuurt het, krijgt onmiddellijk een id, en vraagt over de id totdat het is gedaan.

POST https://nymbot.ai/api/v1/videos — een API-sleutel nodig heeft, of Een Lightning betaling per aanvraagTerugkeren 202.

Het veldtypevereistBeschrijving
modelStringJaEen videogenerator id van GET /api/v1/models?type=video, zoals veo.
promptStringJaWat zou moeten gebeuren.
durationAantal of stringnietLengte in seconden, meer dan 0 en maximaal 60. Gebruikt alleen door generatoren die u toestaan om de lengte te kiezen; de anderen maken hun gebruikelijke lengte, dat is wat seconds In de reactie en de prijs volgt.
aspect_ratioStringnietZoals "16:9" of "9:16"Een grootte zoals "1280x720" Het wordt de dichtstbijzijnde verhouding.
resolution
quality
StringnietEen van de generatoren resolutions In de modellijst, zoals "720p" of "1080p"Het bepaalt de prijs.Alles anders wordt geweigerd met unsupported_resolution.
image_urlStringnietEen foto om te beginnen met: een https:// Link of een data:image/… URL, die eerst wordt geüpload naar een publieke Blossom-host. requires_image_url.

De prijs is vast wanneer u het indient, van de generator, resolutie en lengte, dus het wordt in rekening gebracht van uw Pro-saldo zodra de provider de baan accepteert, en wordt weergegeven als cost, estimated_cost En nymbotAls de leverancier de taak weigert, wordt er niets in rekening gebracht. Als de rendering later mislukt, of de afgewerkte clip niet kan worden opgeslagen en de leverancier er niet voor heeft gefactureerd, wordt de kosten eenmaal, automatisch, terugbetaald. Een rendering die nog steeds na een uur gaat, wordt opgehouden en behoudt zijn kosten, omdat de leverancier een rendering in rekening brengt zodra deze wordt geaccepteerd.

Reacties op (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 Begin als in_progress, of completed Met de video al in data De generator heeft hem meteen teruggestuurd.

Controleer een video

GET https://nymbot.ai/api/v1/videos/{id} - heeft een sleutel nodig die behoort tot de nym die deze heeft ingediend.

Het antwoordt 202 Terwijl de video wordt gemaakt en 200 Vraag elke 5 tot 10 seconden. Elke check vraagt de provider een keer en beantwoordt meteen; het wacht nooit op de video. Een baan wordt 24 uur bewaard nadat het is ingediend. GET /api/v1/videos lijst de laatste 50 banen van de sleutel als {"object": "list", "data": […]}.

Beantwoorden (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 is in_progress, completed of failedEen mislukte baan draagt error ({"code": "generation_failed", "message": …}Als het terugbetaald wordt, cost Het is 0 en nymbot toevoegen refunded_credits En refunded_satsDe afgewerkte video is op een publieke Blossom-host, zoals gegenereerde afbeeldingen.

StatusWanneer
400Geen spoed; een duur buiten 0 tot 60 (invalid_value); een resolutie die de generator niet biedt (unsupported_resolution); geen foto voor een generator die een behoefte heeft (image_required); een model dat geen videogenerator is (invalid_model).
402De Pro-balans kan de video niet dekken.
404Geen generator (model_not_found), of geen baan door die id voor uw nym, of het is meer dan 24 uur oud (video_not_found).
429Uw nym heeft al 10 video's weergegeven (video_jobs_limitControleer ze en stuur meer eenmaal een eindigt.
502De generator weigerde de baan. er wordt niets in rekening gebracht tenzij de provider daarvoor heeft gefactureerd.
503Video's kunnen op dit moment niet worden geleverd of opgeslagen (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 tot toespraak

Leest tekst hardop en retourneert het audiobestand zelf, niet een link. audio.speech.create In de OpenAI SDKs werkt.

POST https://nymbot.ai/api/v1/audio/speech — een API-sleutel nodig heeft, of Een Lightning betaling per aanvraag.

Het veldtypevereistBeschrijving
modelStringnietEen speechmodel van Lijst van audio modellenDefault: de standaard stem, @cf/myshell-ai/melotts. aura-2 Het is Deepgram Aura 2.
inputStringJaDe tekst om te lezen: maximaal 800 tekens voor de standaard stem, 2.000 voor Aura 2.
voiceStringnietEen voice id van Lijst van stemmenEen Aura speaker zoals luna (of aura-2-luna-en, of een MeloTTS taal (en, es, fr, zhOpenAI stemnamen zoals alloy worden geaccepteerd en geven de standaard stem van het model.
languageStringnietEen taalcode zoals esZonder een stem, kiest het een voor die taal. Een stem die een andere taal spreekt, keert terug 422 voice_language_mismatchen een taal waar het model geen stem voor heeft 422 unsupported_language.
response_formatStringnietDe standaard stem keert terug mp3 Aura 2 keert terug mp3 (Het is een defect) opus, aac, flac, wav of pcm.
speedAantalnietGeaccepteerd en genegeerd.

De standaard stem kost een flat 3 standaard credits (30 sats) per verzoek, zoals in de app. Aura 2 is Pro, geprijsd op basis van de tekens die u verzendt. Content-TypeDe kosten liggen in de X-Nymbot-Cost-Sats Als het spraakmodel mislukt, wordt er niets in rekening gebracht.

Reactie

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

(audio bytes)
StatusWanneer
400Geen input; input boven de limiet van het model (input_too_long); een formaat dat het model niet kan produceren (unsupported_response_formatEen onbekende stem (invalid_voice); een model dat geen spraakmodel is (invalid_model).
422De stem spreekt de gegeven taal niet, of het model heeft er geen stem voor.
502Het speechmodel mislukt. er wordt niets opgelegd.

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 modellen en stemmen

Twee publieke lijsten voor het kiezen van een spraakmodel en stem, of een transcriptiemodel.

GET https://nymbot.ai/api/v1/audio/models Geen sleutel nodig.

GET https://nymbot.ai/api/v1/audio/voices?language=en Geen sleutel nodig.

Het veldtypevereistBeschrijving
languageDe string (query)nietAlleen stemmen voor deze taal.
modelDe string (query)nietAlleen stemmen voor dit model.

Reacties (met stemmen)

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

De modellen lijst antwoorden {"object": "list", "data": {"tts": […], "stt": […]}}Elk spraakmodel geeft zijn balans, prijs, max_input_chars, response_formats, languages En default_voicehet transcriptiemodel geeft zijn aliassen, max_file_bytes, max_seconds, formaten en prijs per minuut.

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

Spreekwoord naar tekst

Wordt een opname omgezet in tekst met Whisper. Dit is het transcriptie-endpunt van OpenAI, dus audio.transcriptions.create Werken aan.

POST https://nymbot.ai/api/v1/audio/transcriptions — een API-sleutel nodig heeft, of Een Lightning betaling per aanvraagHet lichaam is multipart/form-data.

Het veldtypevereistBeschrijving
filebestandJaDe opname, van 256 bytes tot 25 MB en tot 30 minuten: WAV, WebM, MP4 of M4A, Ogg of Opus, MP3 en de andere formaten Whisper leest.
modelStringnietDefault whisperDit is de Whisper Large v3 Turbo. whisper-1, whisper-large-v3-turbo En @cf/openai/whisper-large-v3-turbo Dat betekent hetzelfde.
languageStringnietDe gesproken taal, zoals enGeïdentificeerd als verlaten.
promptStringnietWoorden of spelling te verwachten, zoals namen. Alleen de eerste 1000 tekens worden gebruikt.
response_formatStringnietjson (Het is een defect) text, srt, vtt of verbose_json.

Voor WAV, WebM, MP4 en Ogg-bestanden wordt de lengte gelezen uit het bestand voordat er iets wordt uitgevoerd, dus een opname van meer dan 30 minuten wordt vooruit geweigerd (met 3 seconden 'gratie). De lengte van een WAV-bestand komt van zijn steekproefpercentage, kanalen en steekproefgrootte. De lengte van andere formaten, zoals MP3, kan niet vooruit gelezen worden, dus ze zijn beperkt door grootte: bij de laagste bitrate Nymbot veronderstelt, 8 kbps, 30 minuten is 1,8 MB, en een groter bestand in zo'n formaat wordt geweigerd met 413 audio_too_long Stuur langere opnames als WAV, WebM, MP4 of Ogg. Als Whisper dan meer dan 30 minuten meldt, wordt het verzoek afgewezen met 413 audio_too_long, en aangezien Whisper heeft uitgevoerd, worden 30 minuten in rekening gebracht.

U betaalt voor de lengte van de audio, afgerond tot de tweede: de langste van de lengte gelezen uit het bestand, de lengte Whisper rapporten, en de minste de grootte van het bestand toelaat, op Whisper's per-minute prijs met de gebruikelijke vergoeding en marge, en ten minste 0.05 krediet een verzoek. 402 geeft wat elke balans nodig zou hebben.In de app kan het transcriberen van een spraakbericht gratis zijn; op de API wordt het altijd geladen.Als Whisper faalt, wordt niets geladen.

Reactie

{
  "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 Een duidelijke tekst weergeven, srt En vtt Subtitels teruggeven, en verbose_json voegt de taal, duur en timed segmenten. Voor de drie die niet JSON zijn, is de kosten in de kopjes.

StatusWanneer
400Geen bestand, een bestand zonder bruikbare audio (invalid_audio, een onbekend formaat, of een model dat geen transcriptiemodel is (invalid_model).
402Ook het evenwicht kan het niet bedekken.
413Het bestand is groter dan 25 MB (file_too_large) of de opname van meer dan 30 minuten, of, in een formaat waarvan de lengte niet naar voren kan worden gelezen, meer dan 1,8 MB (audio_too_long).
502Whisper kon de audio niet verwerken.

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

Vertaling van de toespraak naar het Engels

POST https://nymbot.ai/api/v1/audio/translations — een API-sleutel nodig heeft, of Een Lightning betaling per aanvraagHet lichaam is multipart/form-data.

Hetzelfde als transcriptie, met dezelfde velden behalve language, limieten en prijs, maar de tekst komt terug in het Engels, ongeacht de taal die werd gesproken. 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);

Embeddings

Wordt tekst omgezet in vectoren voor zoeken, clustering en deduplicatie.De modellen draaien op Cloudflare en besteden de standaardbalans.

POST https://nymbot.ai/api/v1/embeddings — een API-sleutel nodig heeft, of Een Lightning betaling per aanvraag.

Het veldtypevereistBeschrijving
modelStringJaEen embedded model van GET /api/v1/models?type=embedding.
inputstring of array van stringsJaDe tekst om in te voegen, maximaal 100 niet-leegste strengen. token-array's worden geweigerd (token_input_unsupportedElke input moet overeenkomen met het model context_length, geteld als ongeveer vier bytes een token.
encoding_formatStringnietfloat (de default) of base64 (Little-endian 32-bits vloeistof op het scherm)
dimensionsintegernietDe grootte van het model zelf, of voor een model met supported_dimensions een van die; de vector wordt dan verkort en genormaliseerd.
modelDimensiescontext
@cf/baai/bge-m31024 in vele talen8.192 Tokens
@cf/qwen/qwen3-embedding-0.6b1024 in vele talen8.192 Tokens
@cf/baai/bge-large-en-v1.51024 in het Engels512 Tokens
@cf/baai/bge-base-en-v1.5768, Engels512 Tokens
@cf/baai/bge-small-en-v1.5384 Engels512 Tokens

De modellijst is de bron van waarheid waarvoor ze beschikbaar zijn en wat ze kosten; Google's EmbeddingGemma, met kortere vectoren op aanvraag, verschijnt er ook wanneer de catalogus er een prijs voor heeft.

Reactie

{
  "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 }
}
StatusWanneer
400Geen input of een lege; token array (token_input_unsupported); meer dan 100 ingangen (too_many_inputs); een invoer langer dan het model neemt (input_too_long); een grootte die het model niet kan geven (unsupported_dimensions).
402De standaardbalans is te laag. Embeddings gebruiken nooit de Pro-balans.
404Geen model met die naam.
502Het model mislukt. er wordt niets in rekening gebracht.

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