Znalostní základna Vývojáři
Obrázky, audio a embeddings
Generátory z aplikace a stavební bloky pro vyhledávání: obrázky, video, řeč, transkripce a vkládání, každá účtována za použití z vašeho zůstatku.
Tato stránka je pro usnadnění přeložena strojově. Platí anglický originál.
Generování obrázků
Vytváří jeden až čtyři snímky z poptávky a vrátí je, když jsou hotové. ?image v rámci aplikace.
POST https://nymbot.ai/api/v1/images/generations - potřebuje klíč API, nebo Lightning platba na vyžádání.
IDS pochází z GET /api/v1/models?type=imageStandardní generátory jsou
@cf/black-forest-labs/flux-1-schnell, stojí ploché 5 standardních kreditů (50 sats) obrázek. Každý jiný generátor utrácí Pro kredity za vlastní cenu, s obvyklým poplatkem a marží, jako v Aplikace. n Obrázky stojí
n Pole, které generátor nepřijme, je spíše spuštěno než odmítnuto; standardní generátor používá pouze poptávku.
| pole | Typ | Požadováno | Popisek |
|---|---|---|---|
model | Stringové | Ano | Generátor ID, jako je například nano-banana. |
prompt | Stringové | Ano | Používá se pouze prvních 2000 znaků. |
n | integer | ne | 1 až 4. výchozí 1. rovněž akceptováno jako num_images. |
size | Stringové | ne | Srovnávací poměr jako "16:9"nebo otevřenou velikost, jako je "1792x1024", která se stává nejbližšími hodnotami 1:1, 16:9, 9:16, 4:3, 3:4, 3:2, 2:3, 21:9, 5:4 a 4:5. "auto" Vložte je do generátoru. |
aspect_ratio | Stringové | ne | Stejně jako sizeA vyhrává, když jsou oba posláni. |
quality | Stringové | ne | Speciální generátory, jako jsou "low", "medium" nebo "high". |
negative_prompt | Stringové | ne | Co zanechat venku. |
output_format | Stringové | ne | "png", "jpeg" nebo "webp". |
response_format | Stringové | ne | "url" (předpokládané ztráty nebo "b64_json". |
image_url | Stringové | ne | Obrázek na začátek: A https:// odkaz nejvýše 4 096 znaků bez uživatelského jména nebo hesla, nebo data:image/…;base64 URL (PNG, JPEG, WebP nebo GIF, nikoliv SVG). Pouze pro generátory editpožadován těmi, kteří requires_image_url. |
resolution se nepoužívá: každý generátor vytváří vlastní velikost. url, každý obrázek je nahrán na veřejný Blossom hostitel a dostanete jeho odkaz (několik generátorů pouze vrátí odkaz vlastní, který je předán). Co vidí oheňs
b64_json obrázek se vrátí v odpovědi a není nikdy nahrán. Obrázek odeslaný jako data: URL v image_url Je kontrolován stejným způsobem jako
Edit a nahráno do Blossom nejprve tak, že generátor může vyzvednout; je odstraněn znovu, pokud žádost selže vyúčtování.
Jestliže některé z n obrázky selhávají, dostanete ty, které fungovaly, jsou účtovány pouze za ty (plus jakýkoli poskytovatel účtoval navzdory selhání), a nymbot.failed řekne, kolik chybí. Pokud všechny selžou, žádost se vrátí 502.
Odpověď
{
"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 }
}
| statusu | Kdy |
|---|---|
400 | Není to rychlé n 1 až 4 (invalid_value); špatná velikost (invalid_size) nebo obrázek (invalid_image, invalid_image_url); model, který existuje, ale není generátor obrazu (invalid_model); obrázek pro generátor, který nemůže editovat (edit_unsupported); žádný obrázek pro toho, kdo to potřebuje (image_required). |
402 | Zůstatek nemůže pokrýt každý požadovaný obrázek. |
404 | Žádný model s tímto názvem (model_not_found). |
502 | generátor se nepodařilo (upstream_errorNic není účtováno, pokud poskytovatel neúčtuje za pokus; pak chyba charged_sats. |
503 | Fotky nelze v současné době hostit (media_hosting_unavailable). b64_json Stále to funguje. |
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);
Editační obrázky
Změní obrázek, který nahrajete, a následuje výzva.Toto je úpravný koncový bod OpenAI, takže OpenAI SDK images.edit funguje tak, jak je. Pouze pro generátory s edit v seznamu modelů ji přijmout.
POST https://nymbot.ai/api/v1/images/edits - potřebuje klíč API, nebo Lightning platba na vyžádáníTělo je multipart/form-dataAž 32 MB.
| pole | Typ | Požadováno | Popisek |
|---|---|---|---|
image | souboru | Ano | Obrázek k úpravě: PNG, JPEG, WebP nebo GIF, až 20 MB. image[]Používá se první. |
prompt | Stringové | Ano | Co se mění. |
model | Stringové | Ano | Generátor s edit. |
n | integer | ne | 1 až 4. |
sizeaspect_ratioqualitynegative_promptoutput_format | Stringové | ne | Co se týče generace. |
response_format | Stringové | ne | "b64_json" (zde uvedená položka) nebo "url". |
Obrázek, který nahrajete, je kontrolován tak, aby byl dobře formátovaný PNG, JPEG, WebP nebo GIF, odeslán jako jeho skutečný typ a umístěn na veřejném hostiteli Blossom, protože generátory shromažďují svůj vstup prostřednictvím odkazu. Zacházejte s ním jako s veřejným. Pokud editace selže a nic není načteno, hostovaná kopie je znovu smazána. Odpověď má stejný tvar jako pro generaci. Cena je cena generátoru, která pro některé generátory zahrnuje poplatek za vstupní obrázek.
Odpověď
{
"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 }
}
| statusu | Kdy |
|---|---|
400 | Žádný obrázek nebo prompt, soubor, který není obrázek (invalid_image), nebo generátor, který nemůže editovat (edit_unsupported). |
413 | Obraz je větší než 20 MB (file_too_large), nebo celá žádost nad 32 MB. |
503 | Snímek není momentálně k nahlédnutí (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"));
Videa
Video trvá minuty, takže běží v pozadí. Předložíte ho, okamžitě získáte ID a požádejte o ID, dokud nebude hotovo.
POST https://nymbot.ai/api/v1/videos - potřebuje klíč API, nebo Lightning platba na vyžádáníVrátí se 202.
| pole | Typ | Požadováno | Popisek |
|---|---|---|---|
model | Stringové | Ano | ID generátoru videa GET /api/v1/models?type=video, jako jsou veo. |
prompt | Stringové | Ano | Co by se mělo stát. |
duration | Číslo nebo řetězec | ne | Délka v sekundách, více než 0 a až 60. Používá se pouze generátory, které vám umožní vybrat si délku; ostatní dělají svou obvyklou délku, což je to, co seconds v reakci a cena následuje. |
aspect_ratio | Stringové | ne | Takové jako "16:9" nebo "9:16"velikost, jako je například "1280x720" Stává se nejbližším poměrem. |
resolutionquality | Stringové | ne | Jeden z generátorů resolutions V seznamu modelů, jako je "720p" nebo "1080p"Stanovuje cenu.Vše ostatní je odmítnuto unsupported_resolution. |
image_url | Stringové | ne | Obrázek na začátek: A https:// Link nebo A data:image/… URL, která je nejprve nahrána na veřejný hostitel Blossom. requires_image_url. |
Cena je pevná, když odesíláte, z generátoru, rozlišení a délky, takže se účtuje z vašeho Pro zůstatku, jakmile poskytovatel přijme práci, a je zobrazen jako
cost, estimated_cost a nymbotPokud poskytovatel odmítne práci, nic se neúčtuje.Pokud renderování později selže, nebo pokud hotový klip nelze uložit a poskytovatel za něj neúčtuje, poplatek je vrácen jednou, automaticky.Rendování, které stále probíhá po hodině, se vzdává a udržuje si jeho poplatek, protože poskytovatel účtuje renderování, jakmile ho přijme.Restituce vrací kredity, ale nesnižuje výši výdajů klíče.
Odpověď (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číná jako in_progressnebo completed Video, které je již v data Generátor ji okamžitě vrátil.
Prohlídka na video
GET https://nymbot.ai/api/v1/videos/{id} - potřebuje klíč patřící k nim, který jej předložil. klíč, který dosáhl své hranice, může stále kontrolovat.
odpovídá 202 Zatímco videa jsou zveřejněna a 200 po dokončení nebo neúspěchu. zeptejte se každých 5 až 10 sekund. Každá kontrola se zeptá poskytovatele jednou a odpovídá najednou; nikdy nečeká na video.
GET /api/v1/videos seznam posledních 50 pracovních míst klíče jako
{"object": "list", "data": […]}.
Odpověď na otázku (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 nebo failedNeúspěšná práce nese error ({"code": "generation_failed", "message": …}Jestliže je to vráceno, cost je 0 a nymbot Přidat
refunded_credits a refunded_satsHotové video je na veřejném hostiteli Blossom, jako jsou generované obrázky.
| statusu | Kdy |
|---|---|
400 | Žádný prompt; trvání mimo 0 až 60 (invalid_value); rozlišení, které generátor neposkytuje (unsupported_resolution); žádný obrázek pro generátor, který potřebuje jednu (image_required); model, který není generátor videa (invalid_model). |
402 | Pro rovnováha nemůže pokrýt video. |
404 | Žádný takový generátor (model_not_found), nebo žádná práce podle toho ID pro váš nym, nebo je více než 24 hodin starý (video_not_found). |
429 | Vaše nym již má 10 videí rendering (video_jobs_limitPodívejte se na ně a předložit další, jakmile jeden dokončí. |
502 | Generátor odmítl práci.Nic není účtováno, pokud poskytovatel neúčtuje za to. |
503 | Videa nelze momentálně doručit nebo uložit (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 k projevu
Čte text nahlas a vrací zvukový soubor sám, nikoliv odkaz. audio.speech.create v OpenAI SDKs funguje.
POST https://nymbot.ai/api/v1/audio/speech - potřebuje klíč API, nebo Lightning platba na vyžádání.
| pole | Typ | Požadováno | Popisek |
|---|---|---|---|
model | Stringové | ne | Model projevů z Seznam audio modelůDefault: Standardní hlas @cf/myshell-ai/melotts. aura-2 Hra Deepgram Aura 2. |
input | Stringové | Ano | Text k přečtení: až 800 znaků pro standardní hlas, 2000 pro Aura 2. |
voice | Stringové | ne | Hlasový ID od Seznam hlasůAura řečník, jako je luna (nebo aura-2-luna-en), nebo jazyk MeloTTS (en, es, fr, zhOpenAI hlasová jména, jako jsou alloy jsou přijaty a poskytují výchozí hlas modelu. |
language | Stringové | ne | Jazykový kód, jako je esBez hlasu si vybere jeden pro daný jazyk. Hlas, který mluví jiným jazykem, se vrátí 422 voice_language_mismatcha jazyk, pro který model nemá hlas 422 unsupported_language. |
response_format | Stringové | ne | Standardní hlas se vrací mp3 Aura 2 se vrací mp3 (na základě deficitu opus, aac, flac, wav nebo pcm. |
speed | Číslo | ne | Akceptováno a ignorováno. |
Standardní hlas stojí ploché 3 standardní kredity (30 sats) na žádost, jako v aplikaci. Aura 2 je Pro, ceněné podle znaků, které odesíláte.
Content-TypeNáklady jsou v X-Nymbot-Cost-Sats Pokud model řeči selže, není nic účtováno.
Odpověď
HTTP/1.1 200 OK
Content-Type: audio/mpeg
X-Nymbot-Cost-Sats: 4.2
X-Nymbot-Balance-Sats: 41055.6
(audio bytes)
| statusu | Kdy |
|---|---|
400 | Žádný vstup; vstup nad limit modelu (input_too_long); formát, který model nemůže produkovat (unsupported_response_format• neznámý hlas (invalid_voice); model, který není modelem řeči (invalid_model). |
422 | Hlas nemluví daným jazykem, nebo model nemá pro něj hlas. |
502 | Model řeči selhal. Nic není zatíž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()));
Audio modely a hlasy
Dva veřejné seznamy pro výběr modelu řeči a hlasu, nebo transkripční model. Existuje 41 Aura 2 anglicky mluvících a čtyři jazyky MeloTTS.
GET https://nymbot.ai/api/v1/audio/models Není potřeba žádný klíč.
GET https://nymbot.ai/api/v1/audio/voices?language=en Není potřeba žádný klíč.
| pole | Typ | Požadováno | Popisek |
|---|---|---|---|
language | Stringová otázka (query) | ne | Pouze hlasy pro tento jazyk. |
model | Stringová otázka (query) | ne | Pouze hlasy pro tento model. |
Reakce na hlasy (Hlasy)
{
"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 }
]
}
Modely Seznam odpovědí {"object": "list", "data": {"tts": […], "stt": […]}}Každý model řeči dává svou rovnováhu, cenu, max_input_chars,
response_formats, languages a default_voice- model transkripce dává své aliasy, max_file_bytes, max_secondsCeny a formáty za minutu.
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);
Projev k textu
Převádí záznam do textu pomocí aplikace Whisper.Toto je koncový bod transkripce OpenAI, takže
audio.transcriptions.create Pracuje se .
POST https://nymbot.ai/api/v1/audio/transcriptions - potřebuje klíč API, nebo Lightning platba na vyžádáníTělo je multipart/form-data.
| pole | Typ | Požadováno | Popisek |
|---|---|---|---|
file | souboru | Ano | Záznam, od 256 bajtů do 25 MB a až do 30 minut: WAV, WebM, MP4 nebo M4A, Ogg nebo Opus, MP3 a ostatní formáty Whisper čte. |
model | Stringové | ne | defektní whisperJe to Whisper Large v3 Turbo. whisper-1, whisper-large-v3-turbo a @cf/openai/whisper-large-v3-turbo To znamená totéž. |
language | Stringové | ne | Mluvené jazyky, jako jsou enZjištěno, pokud byl opuštěn |
prompt | Stringové | ne | Slovo nebo pravopis lze očekávat, například jména. Používá se pouze prvních 1000 znaků. |
response_format | Stringové | ne | json (na základě deficitu text, srt, vtt nebo verbose_json. |
U WAV, WebM, MP4 a Ogg souborů se délka čte z souboru před tím, než něco spustí, takže nahrávání přes 30 minut je zamítnuto dopředu (s 3 sekundami). Délka WAV souboru pochází z jeho vzorkové rychlosti, kanálů a velikosti vzorku. Délka jiných formátů, jako je MP3, nelze číst dopředu, takže jsou omezeny velikostí: při nejnižší bitové rychlosti Nymbot předpokládá, 8 kbps, 30 minut je 1,8 MB a větší soubor v takovém formátu je zamítnut s 413
audio_too_long Pošlete delší nahrávky jako WAV, WebM, MP4 nebo Ogg. Pokud Whisper pak hlásí více než 30 minut, žádost je odmítnuta
413 audio_too_long, a protože Whisper běžel, 30 minut jsou účtovány.
Platíte za délku zvuku, zaokrouhlenou na druhou: nejdelší délku přečtenou z souboru, délku zpráv Whisper, a nejméně velikost souboru umožňuje, za cenu za minutu Whisper s obvyklým poplatkem a marží, a nejméně 0,05 úvěru na žádost. 402 V aplikaci může být přepisování hlasové zprávy zdarma; na rozhraní API je vždy načteno.
Odpověď
{
"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 Vrátí čistý text, srt a vtt Návrat podtitulů a
verbose_json Přidá jazyk, dobu trvání a časované segmenty. Pro tři, které nejsou JSON, náklady jsou v hlavičkách.
| statusu | Kdy |
|---|---|
400 | Žádný soubor, soubor bez použitelného audio (invalid_audio, neznámý formát, nebo model, který není transkripčním modelem (invalid_model). |
402 | Ani rovnováha ho nemůže pokrýt. |
413 | Soubor je větší než 25 MB (file_too_large(v případě záznamu, který je delší než 30 minut, nebo ve formátu, jehož délka nelze číst dopředu, více než 1,8 MB)audio_too_long). |
502 | Šepot nemohl zpracovat zvuk. Nic není účtováno. |
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);
Překlad řeči do angličtiny
POST https://nymbot.ai/api/v1/audio/translations - potřebuje klíč API, nebo Lightning platba na vyžádáníTělo je multipart/form-data.
Stejné jako transkripce, se stejnými poli kromě language, limity a cena, ale text se vrací v angličtině bez ohledu na jazyk, který byl mluven. 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);
Embeddingové
Převádí text na vektory pro vyhledávání, seskupování a deduplikace.Modely běží na Cloudflare a utrácejí standardní zůstatek.
POST https://nymbot.ai/api/v1/embeddings - potřebuje klíč API, nebo Lightning platba na vyžádání.
| pole | Typ | Požadováno | Popisek |
|---|---|---|---|
model | Stringové | Ano | Vestavěný model od GET /api/v1/models?type=embedding. |
input | String nebo Array Strings | Ano | Následující Článek Text, který má být vložen, až do 100 prázdných řetězců. tokenové řetězce jsou odmítnuty (token_input_unsupportedKaždý vstup musí odpovídat modelu context_length, počítáno jako asi čtyři bajty za token. |
encoding_format | Stringové | ne | float (předpokládané ztráty nebo base64 (Little-endian 32bitové plavky |
dimensions | integer | ne | Vlastní velikost modelu, nebo pro model s supported_dimensions Jeden z nich; vektor je pak zkrácen a normalizován. |
| Modelování | Rozměry | Kontextové |
|---|---|---|
@cf/baai/bge-m3 | 1024 v mnoha jazycích | 8 192 Kč |
@cf/qwen/qwen3-embedding-0.6b | 1024 v mnoha jazycích | 8 192 Kč |
@cf/baai/bge-large-en-v1.5 | 1024 Angličtina | 512 tokenů |
@cf/baai/bge-base-en-v1.5 | 768, angličtina | 512 tokenů |
@cf/baai/bge-small-en-v1.5 | 384 Angličtina | 512 tokenů |
Seznam modelů je zdrojem pravdy, pro které jsou k dispozici a co stojí; Google EmbeddingGemma, s kratšími vektory na vyžádání, se objeví i tehdy, když má katalog cenu.
Odpověď
{
"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 }
}
| statusu | Kdy |
|---|---|
400 | Žádný vstup nebo prázdný jeden; tokenové arény (token_input_unsupported); více než 100 vstupů (too_many_inputs); vstup delší než model trvá (input_too_long); velikost, kterou model nemůže dát (unsupported_dimensions). |
402 | Standardní rovnováha je příliš nízká.Zahrnutí nikdy nepoužívá Pro rovnováhu. |
404 | Žádný model s tímto názvem. |
502 | Model selhal. nic není účtováno. |
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);