Preskoči na vsebino
Nazaj na Nymbot

Baza znanja razvijalci

Slike, avdio in vdelava

Generatorji iz aplikacije in gradniki za iskanje: slike, video, govor, transkripcija in vdelave, vsaka obračunana na uporabo iz vaše bilance.

Generiranje slik

Naredi od enega do štirih slik iz napotka in jih vrne, ko so končane. ?image v aplikaciji .

POST https://nymbot.ai/api/v1/images/generations — potrebuje ključ API ali Lightning plačilo na zahtevo.

ids prihajajo iz GET /api/v1/models?type=image• standardni generator, @cf/black-forest-labs/flux-1-schnell, stane ravno 5 standardnih kreditov (50 sats) na sliko. Vsak drug generator porabi Pro kreditov po svoji ceni, z običajno pristojbino in maržo, kot v Aplikacija. n Fotografije stanejo n Polje, ki ga generator ne sprejme, se spusti namesto zavrnitve; standardni generator uporablja samo poziv.

poljeVrstaPotrebnoOpis
modelStringjaGenerator ID, kot je nano-banana.
promptStringjaUporablja se samo prvih 2000 znakov.
nintegerne1 do 4. privzeto 1. tudi sprejeto kot num_images.
sizeStringneRazmerje, kot je "16:9", ali odprte velikosti, kot so "1792x1024", ki je najbližje razmerju 1:1, 16:9, 9:16, 4:3, 3:4, 3:2, 2:3, 21:9, 5:4 in 4:5. "auto" Postavite ga na generator.
aspect_ratioStringneEnako kot sizein zmaga, če sta oba poslana.
qualityStringneSpecifični generatorji, kot so "low", "medium" ali "high".
negative_promptStringneKaj naj zapustimo.
output_formatStringne"png", "jpeg" ali "webp".
response_formatStringne"url" (odvisno od dolžnosti) ali "b64_json".
image_urlStringneSlika za začetek: A https:// povezavo, ki vsebuje največ 4 096 znakov brez uporabniškega imena ali gesla ali data:image/…;base64 URL (PNG, JPEG, WebP ali GIF; ne SVG). editki jih zahtevajo tisti, ki requires_image_url.

resolution se ne uporablja: vsak generator naredi svojo velikost. url, vsaka slika se naloži na javni Blossom gostitelj in dobite njeno povezavo (nekateri generatorji vrnejo le svojo povezavo, ki se prenese). Kaj lahko ogenj vidi• z b64_json slika se vrne v odgovoru in se nikoli ne naloži. slika, poslana kot data: URL v image_url Preverja se na enak način kot Edit in najprej naložite v Blossom, tako da ga lahko generator prevzame; znova se izbriše, če zahteva ne uspe.

Če so nekatere od n slike ne uspejo, dobite tiste, ki delujejo, se zaračunajo samo za tiste (plus vse ponudnik zaračuna kljub neuspehu), in nymbot.failed pove, koliko jih manjka. če vsi ne uspejo, se zahteva vrne 502.

Odgovor

{
  "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 }
}
statusaKdaj
400ni hitra; n izven 1 do 4 (invalid_value); slaba velikost (invalid_size) ali sliko (invalid_image, invalid_image_url); model, ki obstaja, vendar ni generator slike (invalid_model); slika za generator, ki ne more urejati (edit_unsupported); nobena slika za tistega, ki jo potrebuje (image_required).
402Bilance ne more pokriti vsake slike, ki jo potrebujete.
404Ne obstaja model s tem imenom (model_not_found).
502Naprava ne deluje (upstream_errorNič se ne zaračuna, razen če je ponudnik zaračunal za poskus; potem je napaka charged_sats.
503Fotografije trenutno ni mogoče gostiti (media_hosting_unavailable). b64_json Še vedno deluje.

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

Urejanje slik

Spreminja sliko, ki jo naložite, po spodnjem navodilu.To je končna točka za urejanje OpenAI, tako da so OpenAI SDK images.edit deluje kot je. samo Pro generatorji z edit na seznamu modelov ga sprejme.

POST https://nymbot.ai/api/v1/images/edits — potrebuje ključ API ali Lightning plačilo na zahtevoTelo je multipart/form-datado 32 MB.

poljeVrstaPotrebnoOpis
imagedatotekejaSlika za urejanje: PNG, JPEG, WebP ali GIF, do 20 MB. image[]Prva se uporablja.
promptStringjaKaj pa spremeniti.
modelStringjaGeneratorji z edit.
nintegerne1 do 4.
size
aspect_ratio
quality
negative_prompt
output_format
StringneKar se tiče generacije.
response_formatStringne"b64_json" (v nadaljevanju tukaj) ali "url".

Slika, ki jo naložite, je preverjena, da je dobro oblikovana PNG, JPEG, WebP ali GIF, poslana kot njena resnična vrsta in postavljena na javni Blossom gostitelj, ker generatorji pobirajo svoj vnos po povezavi. Obravnavajte ga kot javno. Če urejanje ne uspe in se nič ne zaračuna, se gostovana kopija znova izbriše. Odgovor ima enako obliko kot za generacijo. Cena je cena generatorja, ki za nekatere generatorje vključuje pristojbino za vhodno sliko.

Odgovor

{
  "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 }
}
statusaKdaj
400Brez slike ali prompt, datoteka, ki ni slika (invalid_image), ali generator, ki ne more urejati (edit_unsupported).
413Slika je večja od 20 MB (file_too_large), ali celotno zahtevo več kot 32 MB.
503Slike trenutno ni mogoče gostiti (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 posnetki

Videoposnetek traja nekaj minut, zato se izvaja v ozadju. ga pošljete, takoj dobite id in vprašajte za id, dokler ni končan.

POST https://nymbot.ai/api/v1/videos — potrebuje ključ API ali Lightning plačilo na zahtevoVrnitev 202.

poljeVrstaPotrebnoOpis
modelStringjaVideo generator ID iz GET /api/v1/models?type=video, kot so veo.
promptStringjaKaj naj se zgodi.
durationŠtevilka ali stringneDolžina v sekundah, več kot 0 in do 60. Uporabljajo jih samo generatorji, ki vam omogočajo, da izberete dolžino; drugi naredijo svojo običajno dolžino, kar je tisto, kar seconds v odgovor in cena sledi.
aspect_ratioStringneTako kot "16:9" ali "9:16"Velikost, kot je "1280x720" To je najbližji razmerje.
resolution
quality
StringneEden od generatorjev resolutions Na seznamu modelov, kot so "720p" ali "1080p"To določa ceno. Vse ostalo je zavrnjeno z unsupported_resolution.
image_urlStringneSlika za začetek: A https:// povezava ali a data:image/… URL, ki se najprej naloži v javni Blossom gostitelj. requires_image_url.

Cena je fiksna, ko pošljete, iz generatorja, resolucije in dolžine, zato se zaračuna iz vašega Pro bilance takoj, ko ponudnik sprejme delo, in je prikazana kot cost, estimated_cost in nymbotČe ponudnik zavrne delo, se nič ne zaračuna.Če predvajanje pozneje ne uspe ali če končnega posnetka ni mogoče shraniti in ponudnik ni zaračunal za to, se zaračun vrača enkrat, samodejno.Predvajanje, ki še vedno poteka po eni uri, se opusti in ohranja svoje zaračunavanje, ker ponudnik zaračuna predvajanje, ko ga sprejme.Predvajanje vrača kredite, vendar ne znižuje števila porabe ključa.

Odgovor na vprašanje (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 Začne se kot in_progressali completed Videoposnetek že v data generator ga je takoj vrnil.

Preverjanje na video

GET https://nymbot.ai/api/v1/videos/{id} — potrebuje ključ, ki pripada nim, ki ga je predložil. Ključ, ki je dosegel svoj prag, lahko še vedno preveri.

Odgovarja se 202 Medtem ko je videoposnetek narejen in 200 ko je končano ali je neuspešno. Vprašajte vsakih 5 do 10 sekund. Vsak pregled vpraša ponudnika enkrat in odgovori naenkrat; nikoli ne čaka na videoposnetek. GET /api/v1/videos seznam zadnjih 50 delovnih mest ključa kot {"object": "list", "data": […]}.

Odgovori na vprašanja (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 je in_progress, completed ali failedNeuspešno delo prinaša error ({"code": "generation_failed", "message": …}če je bil vrnjen, cost je 0 in nymbot Dodajanje refunded_credits in refunded_satsKončni videoposnetek je na javnem gostitelju Blossom, kot so ustvarjene slike.

statusaKdaj
400Ni hitrega; trajanje zunaj 0 do 60 (invalid_value); resolucija, ki jo generator ne ponuja (unsupported_resolution); ni slike za generator, ki potrebuje eno (image_required); model, ki ni video generator (invalid_model).
402Pro ravnovesje ne more pokriti videa.
404Ni takšnega generatorja (model_not_found), ali brez dela s tem id za vaš nimm, ali je starejši od 24 ur (video_not_found).
429Vaš nimm že ima 10 videoposnetkov (video_jobs_limitPreverite jih in pošljite več, ko ena konča.
502Generator je zavrnil delo. Nič se ne zaračuna, razen če je ponudnik zaračunal za to.
503Videoposnetkov trenutno ni mogoče dostaviti ali shraniti (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);

Besedilo za govor

Glasno bere besedilo in vrne avdio datoteko, ne povezavo. audio.speech.create v OpenAI SDKs deluje.

POST https://nymbot.ai/api/v1/audio/speech — potrebuje ključ API ali Lightning plačilo na zahtevo.

poljeVrstaPotrebnoOpis
modelStringneVzorec govora iz Seznam avdio modelovPrivzeto: standardni glas, @cf/myshell-ai/melotts. aura-2 Deepgram Aura 2.
inputStringjaBesedilo za branje: do 800 znakov za standardni glas, 2.000 za Aura 2.
voiceStringneGlasovni ID iz Seznam glasovAura zvočnik, kot je luna (ali pa aura-2-luna-en), ali pa jezik MeloTTS (en, es, fr, zh.OpenAI glasovna imena, kot so alloy so sprejete in dajejo privzeti glas modela.
languageStringnejezikovne kode, kot so esBrez glasu izbere enega za ta jezik. glas, ki govori v drugem jeziku, vrne 422 voice_language_mismatchin jezik, za katerega model nima glasu 422 unsupported_language.
response_formatStringneStandardni glas se vrača mp3 Aura 2 se vrača mp3 (v primeru nepravilnosti) opus, aac, flac, wav ali pcm.
speedšteviloneSprejeto in prezrto.

Standardni glas stane 3 standardne kredite (30 sats) na zahtevo, kot v aplikaciji. Aura 2 je Pro, cenjeno po znakih, ki jih pošljete. Content-TypeStroški so v X-Nymbot-Cost-Sats Če govorni model ne uspe, se nič ne zaračuna.

Odgovor

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

(audio bytes)
statusaKdaj
400Brez vnosa; vnos nad mejo modela (input_too_long); format, ki ga model ne more ustvariti (unsupported_response_format); neznani glas (invalid_voice); model, ki ni model govora (invalid_model).
422Glas ne govori danega jezika, ali pa model nima glasu za to.
502Model govora je neuspešen. Nič ni naloženo.

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

Zvočni modeli in glasovi

Dva javna seznama za izbiro modela govora in glasu ali modela transkripcije.Obstaja 41 Aura 2 angleških govorcev in štiri jezike MeloTTS.

GET https://nymbot.ai/api/v1/audio/models Ključ ni potreben.

GET https://nymbot.ai/api/v1/audio/voices?language=en Ključ ni potreben.

poljeVrstaPotrebnoOpis
languageString (poizvedba)neSamo glasovi za ta jezik.
modelString (poizvedba)neSamo glasovi za ta model.

Odgovori na vprašanja (glas)

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

Seznam modelov odgovori {"object": "list", "data": {"tts": […], "stt": […]}}Vsak model govora daje svojo ravnovesje, ceno, max_input_chars, response_formats, languages in default_voice- model transkripcije daje svoje vzdevke, max_file_bytes, max_seconds, oblike in cena na minuto.

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

Besedilo v besedilu

Spreminja zapis v besedilo z Whisper.To je končna točka transkripcije OpenAI, tako da audio.transcriptions.create Deluje pa

POST https://nymbot.ai/api/v1/audio/transcriptions — potrebuje ključ API ali Lightning plačilo na zahtevoTelo je multipart/form-data.

poljeVrstaPotrebnoOpis
filedatotekejaSnemanje, od 256 bajtov do 25 MB in do 30 minut: WAV, WebM, MP4 ali M4A, Ogg ali Opus, MP3 in drugi formati Whisper bere.
modelStringnepomanjkanja whisper, ki je Whisper Large v3 Turbo. whisper-1, whisper-large-v3-turbo in @cf/openai/whisper-large-v3-turbo pomeni enako
languageStringnegovorjenega jezika, kot je enOdkriti, če je bil zapuščen
promptStringneBesede ali črkovanja, ki jih lahko pričakujete, kot so imena. Uporablja se le prvih 1000 znakov.
response_formatStringnejson (v primeru nepravilnosti) text, srt, vtt ali verbose_json.

Za datoteke WAV, WebM, MP4 in Ogg se dolžina prebere iz datoteke, preden se nekaj izvaja, zato je snemanje več kot 30 minut zavrnjeno naprej (z 3 sekundami). Dolžina datoteke WAV je odvisna od njene vzorčne hitrosti, kanalov in velikosti vzorca. Dolžina drugih formatov, kot je MP3, se ne more prebrati naprej, zato so omejeni z velikostjo: pri najnižji bitni hitrosti Nymbot predvideva, da je 8 kbps, 30 minut je 1,8 MB, in večja datoteka v takšni obliki je zavrnjena z 413 audio_too_long pošljite daljše posnetke kot WAV, WebM, MP4 ali Ogg. Če Whisper nato poroča več kot 30 minut, se zahteva zavrne z 413 audio_too_long, in ker je Whisper teče, 30 minut se zaračuna.

Plačate za dolžino zvoka, zaokroženo do sekunde: najdaljša dolžina branja iz datoteke, dolžina Whisper poročila, in najmanj velikost datoteke omogoča, na Whisper je cena na minuto z običajno pristojbino in maržo, in vsaj 0,05 kredit zahtevo. 402 V aplikaciji je lahko transkripcija glasovnega sporočila brezplačna; na API-ju se vedno zaračuna.

Odgovor

{
  "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 vrne jasno besedilo, srt in vtt vrnitev podnapisov in verbose_json dodaja jezik, trajanje in časovne segmente. Za tri, ki niso JSON, so stroški v naslovih.

statusaKdaj
400Ni datoteke, datoteka brez uporabnega avdio (invalid_audio, neznana oblika ali model, ki ni transkripcijski model (invalid_model).
402Tudi ravnotežje ga ne more pokriti.
413datoteka je večja od 25 MB (file_too_large(v primeru, da je vsebina v obliki zapisa, ki ni daljša od 1 MB, ne sme biti daljša od 1 MB)audio_too_long).
502Šepetanje ni moglo obdelati zvoka. Nič ni naloženo.

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

Prevajanje govora v angleščino

POST https://nymbot.ai/api/v1/audio/translations — potrebuje ključ API ali Lightning plačilo na zahtevoTelo je multipart/form-data.

Enako kot transkripcija, z istimi polji poleg language, omejitve in cena, vendar se besedilo vrne v angleščini, ne glede na jezik. 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

Pretvori besedilo v vektorje za iskanje, združevanje in deduplikiranje. Modeli se izvajajo v storitvi Cloudflare in porabijo standardno stanje.

POST https://nymbot.ai/api/v1/embeddings — potrebuje ključ API ali Lightning plačilo na zahtevo.

poljeVrstaPotrebnoOpis
modelStringjaVgrajeni model iz GET /api/v1/models?type=embedding.
inputString ali niz stringovjaIzdelek je bil izdelan v obliki ploščic, ki niso bile vgrajene, ampak so bile vgrajene (token_input_unsupportedVsak vnos mora ustrezati modelu context_length, šteje kot približno štiri bajte na žeton.
encoding_formatStringnefloat (odvisno od dolžnosti) ali base64 (Little-endian 32-bitni plavajoči ploščadi)
dimensionsintegernelastno velikost modela ali za model z supported_dimensions Vektor je nato skrajšan in normaliziran.Vse ostalo je zavrnjeno.
modeladimenzijahKontekst
@cf/baai/bge-m31024 v številnih jezikih8,192 žetonov
@cf/qwen/qwen3-embedding-0.6b1024 v številnih jezikih8,192 žetonov
@cf/baai/bge-large-en-v1.51024 angleščina512 žetonov
@cf/baai/bge-base-en-v1.5768, Angleščina512 žetonov
@cf/baai/bge-small-en-v1.5384 angleščina512 žetonov

Seznam modelov je vir resnice, za katere so na voljo in kaj stanejo; Googlov EmbeddingGemma, s krajšimi vektorji na zahtevo, se pojavi tudi, ko ima katalog ceno za to.

Odgovor

{
  "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 }
}
statusaKdaj
400Ni vnosa ali prazno eno; žetoni (token_input_unsupported); več kot 100 vhodov (too_many_inputs); vnos je daljši od modela (input_too_long); velikost, ki je model ne more dati (unsupported_dimensions).
402Standardno ravnotežje je prenizko. Vdelave nikoli ne uporabljajo Pro ravnotežje.
404Nobenega modela s tem imenom.
502Model je neuspešen. Nič ni naloženo.

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