Tudásbázis Fejlesztők
Képek, audio és beágyazás
Az alkalmazás generátorai és a keresés építőelemei: képek, videók, beszéd, átiratok és beágyazások, amelyek mindegyike felhasználásonként számlázódik a mérlegéből.
Ez az oldal a kényelem kedvéért gépi fordítással készült. Az eredeti angol nyelvű változat az érvényes.
Képek generálása
Egy-négy képet készít egy promptből, és elvégezéskor visszaküldi őket. ?image Az app alatt.
POST https://nymbot.ai/api/v1/images/generations - API kulcs szükséges, vagy Lightning fizetés kérésre.
Az IDS származik GET /api/v1/models?type=imageA szabványos generátor,
@cf/black-forest-labs/flux-1-schnell, költségek egy lapos 5 standard kredit (50 sats) egy képet. Minden más generátor költi Pro kredit saját áron, a szokásos díj és a margin, mint a Az app. n Képek ára
n A generátor által nem használt mezőt eldobják, nem pedig elutasítják; a szabványos generátor csak a promptet használja.
| mező | típus | Szükség | leírás |
|---|---|---|---|
model | String | Igen | A generátor azonosítója, például nano-banana. |
prompt | String | Igen | Csak az első 2000 karaktert használjuk. |
n | Integrál | nem | 1 a 4. Alapértelmezett 1. Azt is elfogadják, mint num_images. |
size | String | nem | Az összehasonlító tényező, mint "16:9", vagy egy olyan OpenAI méretű, mint a "1792x1024", amely a legközelebbi az 1:1, 16:9, 9:16, 4:3, 3:4, 3:2, 2:3, 21:9, 5:4 és 4:5. "auto" Adja át a generátort. |
aspect_ratio | String | nem | Ugyanaz, mint sizeÉs nyer, ha mindkettőt elküldik. |
quality | String | nem | generátorok, mint például "low", "medium" vagy "high". |
negative_prompt | String | nem | Mit hagyjunk ki. |
output_format | String | nem | "png", "jpeg" vagy "webp". |
response_format | String | nem | "url" (a lejárati idő) vagy "b64_json". |
image_url | String | nem | Kezdőlap » A https:// legfeljebb 4 096 karakterből álló link, amelyben nincs felhasználónév vagy jelszó, vagy data:image/…;base64 URL (PNG, JPEG, WebP vagy GIF; nem SVG). editAzok számára, akiknek a requires_image_url. |
resolution nem használják: minden generátor saját méretű. url, minden kép feltöltődik egy nyilvános Blossom hostra, és megkapja a linket (néhány generátor csak saját linket ad vissza, amelyet továbbítanak). bárki megnyithatja a linket, és nem lehet újra letölteni; lásd Mit láthat a tűz• a
b64_json a kép a válaszban visszatér, és soha nem töltődik fel. data: Az URL image_url A vizsgálatot ugyanúgy végzik, mint egy
Edit Először feltöltődnek a Blossom-ra, hogy a generátor visszaszerezze; ha a kérés nem teljesül, újra törlődnek.
Ha egyesek a n képek nem működnek, megkapja azokat, amelyek működtek, csak azokért számítanak fel (plusz a szolgáltató a kudarc ellenére számlázta), és nymbot.failed azt jelzi, hogy hány hiányzik. Ha mindegyik sikertelen, a kérés visszatér 502.
Válasz
{
"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 }
}
| státusz | Mikor |
|---|---|
400 | nem gyors; n 1 és 4 között (invalid_valueA rossz minőségű (invalid_size) vagy kép (invalid_image, invalid_image_url); egy modell, amely létezik, de nem képgenerátor (invalid_model); egy kép egy generátor számára, amely nem szerkesztheti (edit_unsupported(Nincs képe annak, akinek szüksége van rá)image_required). |
402 | A mérleg nem fedezi az összes kívánt képet. |
404 | Nincs olyan modell, amelynek neve (model_not_found). |
502 | A generátor nem működik (upstream_errorSemmi sem kerül felszámításra, hacsak a szolgáltató nem számlázta a kísérletet; akkor a hiba charged_sats. |
503 | A képek jelenleg nem tárolhatók (media_hosting_unavailable). b64_json Még mindig működik. |
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);
Képek szerkesztése
Ez az OpenAI szerkesztési végpontja, így az OpenAI SDK-k images.edit működik, ahogy van. Csak Pro generátorok edit A modellek listáján elfogadja.
POST https://nymbot.ai/api/v1/images/edits - API kulcs szükséges, vagy Lightning fizetés kérésreA test az multipart/form-dataLegfeljebb 32 MB.
| mező | típus | Szükség | leírás |
|---|---|---|---|
image | Fájl | Igen | A szerkesztendő kép: PNG, JPEG, WebP vagy GIF, legfeljebb 20 MB. image[]Az elsőt használják. |
prompt | String | Igen | Mit kell változtatni. |
model | String | Igen | A generátor a edit. |
n | Integrál | nem | 1 és 4. |
sizeaspect_ratioqualitynegative_promptoutput_format | String | nem | Ami a generációt illeti. |
response_format | String | nem | "b64_json" (a fájl itt található) vagy "url". |
Az Ön által feltöltött képet jól formázott PNG, JPEG, WebP vagy GIF-nek tekintik, valós típusként továbbítják, és nyilvános Blossom-hostra helyezik, mert a generátorok hivatkozással gyűjtik a bemenetüket. Kezeljük nyilvánosnak. Ha a szerkesztés nem sikerül, és semmi sem kerül felszámításra, a tárolt másolatot újra törlik. A válasz ugyanolyan alakú, mint a generáció esetében. Az ár a generátor ára, amely egyes generátorok esetében a bemeneti kép díját is tartalmazza.
Válasz
{
"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 }
}
| státusz | Mikor |
|---|---|
400 | Nincs kép vagy prompt, egy olyan fájl, amely nem kép (invalid_image), vagy egy generátor, amely nem tudja szerkeszteni (edit_unsupported). |
413 | A kép több mint 20 MB (file_too_large), vagy a teljes kérés több mint 32 MB. |
503 | A képet jelenleg nem lehet tárolni (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"));
videó
Egy videó percet vesz igénybe, így a háttérben fut. Ön benyújtja, azonnal kap egy azonosítót, és kérdezze meg az azonosítót, amíg be nem fejeződik.
POST https://nymbot.ai/api/v1/videos - API kulcs szükséges, vagy Lightning fizetés kérésreVisszatérés 202.
| mező | típus | Szükség | leírás |
|---|---|---|---|
model | String | Igen | A videó generátor azonosító GET /api/v1/models?type=videoIlyen például veo. |
prompt | String | Igen | Mi kell történnie. |
duration | Szám vagy string | nem | Hossza másodpercekben, több mint 0 és legfeljebb 60. Csak olyan generátorok használják, amelyek lehetővé teszik a hossza kiválasztását; a többiek a szokásos hosszúságot, ami seconds A válasz és az ár következik. |
aspect_ratio | String | nem | Mint ahogy "16:9" vagy "9:16"Olyan méretű, mint "1280x720" Ez lesz a legközelebbi arány. |
resolutionquality | String | nem | Az egyik generátor resolutions A modellek listáján, például "720p" vagy "1080p"Meghatározza az árat.Minden mást megtagadnak unsupported_resolution. |
image_url | String | nem | Kezdőlap » A https:// link vagy a data:image/… URL, amely először egy nyilvános Blossom-hostra kerül feltöltésre. requires_image_url. |
Az ár rögzített, amikor benyújtja, a generátorról, a felbontásról és a hosszról, így a Pro egyenlegéből kerül felszámításra, amint a szolgáltató elfogadja a munkát, és megjelenik, mint
cost, estimated_cost és nymbotHa a szolgáltató elutasítja a munkát, semmi sem kerül felszámításra. Ha a renderelés később nem sikerül, vagy a kész klipet nem lehet tárolni, és a szolgáltató nem számlázott rá, a díjat egyszer, automatikusan visszatérítik. Egy renderelés, amely még mindig egy óra után megy, lemond, és megtartja a díjat, mert a szolgáltató egy renderelést számláz, ha elfogadja.
Válasz erre (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 Kezdődik a in_progressvagy completed A videó már a data A generátor azonnal visszaküldte.
Ellenőrizze a videót
GET https://nymbot.ai/api/v1/videos/{id} - olyan kulcsra van szüksége, amely a nymhez tartozik, aki azt benyújtotta.
Válaszol a 202 A videó elkészítése és 200 Miután befejeződött, vagy kudarcot vallott. Kérjen 5-10 másodpercenként. Minden ellenőrzés egyszer megkérdezi a szolgáltatót, és egyszerre válaszol; soha nem várja meg a videót.
GET /api/v1/videos A kulcsszó utolsó 50 munkahelyét a
{"object": "list", "data": […]}.
Válasz erre (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 az in_progress, completed vagy failedA kudarcot valló munkahely error ({"code": "generation_failed", "message": …}Amennyiben a visszatérítés megtörtént, cost 0 és nymbot hozzáadása
refunded_credits és refunded_satsA kész videó egy nyilvános Blossom hoston van, mint a generált képek.
| státusz | Mikor |
|---|---|
400 | Nincs sürgősségi; időtartam 0 és 60 között (invalid_value); a generátor által nem kínált felbontás (unsupported_resolution); nincs kép egy generátorra, amelyre szükség van (image_required); egy modell, amely nem egy videó generátor (invalid_model). |
402 | A Pro mérleg nem tudja lefedni a videót. |
404 | Nincs ilyen generátor (model_not_found, vagy nincs munkája az id a nym, vagy több mint 24 órás (video_not_found). |
429 | Az Ön nym már 10 videó renderelés (video_jobs_limitEllenőrizze őket, és küldjön több egyszer egy befejeződik. |
502 | A generátor elutasította a munkát. Semmi sem kerül felszámításra, hacsak a szolgáltató nem számlázta fel. |
503 | A videók jelenleg nem szállíthatók vagy tárolhatók (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);
Szöveg a beszédhez
Hangosan olvassa el a szöveget, és maga a hangfájlt adja vissza, nem pedig egy linket. audio.speech.create Az OpenAI SDK-k működnek.
POST https://nymbot.ai/api/v1/audio/speech - API kulcs szükséges, vagy Lightning fizetés kérésre.
| mező | típus | Szükség | leírás |
|---|---|---|---|
model | String | nem | A beszédmodell a Az audio modellek listájaAlapértelmezett hang: a standard hang, @cf/myshell-ai/melotts. aura-2 Ez a Deepgram Aura 2. |
input | String | Igen | Az olvasandó szöveg: legfeljebb 800 karakter a standard hanghoz, 2000 az Aura 2-hez. |
voice | String | nem | A hangazonosító a A hangok listájaAura hangszórók, mint például luna (vagy aura-2-luna-en, vagy egy MeloTTS nyelv (en, es, fr, zhOpenAI hangnevek, mint például alloy Elfogadják és megadják a modell alapértelmezett hangját. |
language | String | nem | A nyelvi kódok, mint esHa nincs hangja, kiválaszt egy hangot az adott nyelvre; egy hang, amely egy másik nyelvet beszél, visszatér. 422 voice_language_mismatchA nyelv, amelyre a modellnek nincs hangja 422 unsupported_language. |
response_format | String | nem | A szabványos hang visszatér mp3 Aura 2 visszatér mp3 (A meghibásodás opus, aac, flac, wav vagy pcm. |
speed | szám | nem | Elfogadják és figyelmen kívül hagyják. |
A szabványos hang ára egy lapos 3 szabványos kredit (30 sats) egy kérés, mint az alkalmazásban. Aura 2 Pro, az általad küldött karakterek alapján.
Content-TypeA költségek a X-Nymbot-Cost-Sats Ha a beszédmodell meghibásodik, semmi sem kerül felszámításra.
Válasz
HTTP/1.1 200 OK
Content-Type: audio/mpeg
X-Nymbot-Cost-Sats: 4.2
X-Nymbot-Balance-Sats: 41055.6
(audio bytes)
| státusz | Mikor |
|---|---|
400 | Nincs bemenet; bemenet a modell határa felett (input_too_long); egy olyan formátum, amelyet a modell nem képes előállítani (unsupported_response_formatEgy ismeretlen hang (invalid_voice); egy olyan modell, amely nem beszédmodell (invalid_model). |
422 | A hang nem beszél a megadott nyelvet, vagy a modellnek nincs hangja. |
502 | A beszédmodell kudarcot vallott. - Semmi sem terhelt. |
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 modellek és hangok
Két nyilvános lista a beszédmodell és a hang kiválasztásához, vagy egy transzkripciós modell. 41 Aura 2 angol nyelvű és négy MeloTTS nyelv van.
GET https://nymbot.ai/api/v1/audio/models Nincs szükség kulcsra.
GET https://nymbot.ai/api/v1/audio/voices?language=en Nincs szükség kulcsra.
| mező | típus | Szükség | leírás |
|---|---|---|---|
language | A kérés (query) | nem | Csak hangok erre a nyelvre. |
model | A kérés (query) | nem | Csak hangok erre a modellre. |
A válaszok (hangok)
{
"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 }
]
}
A modellek listája válaszok {"object": "list", "data": {"tts": […], "stt": […]}}Minden beszédmodell megadja az egyensúlyát, az árát, max_input_chars,
response_formats, languages és default_voiceA transzkripciós modell adja az álnéveket, max_file_bytes, max_seconds, formátumok és percenkénti ár.
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);
Beszéd a szöveghez
A Whisper segítségével szöveggé alakítja a felvételt. Ez az OpenAI transzkripciós végpontja, így
audio.transcriptions.create A munka.
POST https://nymbot.ai/api/v1/audio/transcriptions - API kulcs szükséges, vagy Lightning fizetés kérésreA test az multipart/form-data.
| mező | típus | Szükség | leírás |
|---|---|---|---|
file | Fájl | Igen | A felvétel, 256 bájt 25 MB és legfeljebb 30 perc: WAV, WebM, MP4 vagy M4A, Ogg vagy Opus, MP3 és a többi formátumban Whisper olvas. |
model | String | nem | hiányzó whisperIlyen a Whisper Large v3 Turbo. whisper-1, whisper-large-v3-turbo és @cf/openai/whisper-large-v3-turbo Ugyanezt jelenti. |
language | String | nem | A beszélt nyelv, mint például enMegtalálták, ha elhagyták |
prompt | String | nem | Elvárható szavak vagy helyesírás, például nevek. Csak az első 1000 karaktert használják. |
response_format | String | nem | json (A meghibásodás text, srt, vtt vagy verbose_json. |
A WAV, a WebM, az MP4 és az Ogg fájlok esetében a hosszat a fájlból elolvashatják, mielőtt bármi futna, így a 30 percnél hosszabb felvételt előre megtagadják (három másodperces kegyelemmel). A WAV fájl hossza a mintavételi sebességéből, csatornáiból és mintavételi méretéből származik. Az egyéb formátumok, például az MP3 hosszát nem lehet előre felolvasni, így méretük korlátozza: a legalacsonyabb bitráta esetén a Nymbot 8 kbps, 30 perc alatt 1.8 MB, és egy nagyobb fájl ilyen formátumban megtagadható. 413
audio_too_long Küldjön hosszabb felvételeket WAV, WebM, MP4 vagy Ogg formátumban. Ha a Whisper több mint 30 percet jelent, a kérés elutasításra kerül.
413 audio_too_long, és mivel a Suttogás futott, 30 perc van feltöltve.
Ön fizet a hossza az audio, kerekítve a második: a leghosszabb a hossza olvasható a fájlt, a hossza a Whisper jelentések, és a legkevesebb a fájl mérete lehetővé teszi, a percenkénti áron Whisper a szokásos díj és a margin, és legalább 0,05 hitel kérés. 402 Az alkalmazásban a hangüzenet átírása ingyenes lehet; az API-n mindig feltöltődik.
Válasz
{
"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 visszaadja a tiszta szöveget, srt és vtt visszaadják az alfejezeteket, és
verbose_json hozzáadja a nyelvet, az időtartamot és az időzített szegmenseket. A három, amelyek nem JSON, a költség a fejlécben van.
| státusz | Mikor |
|---|---|
400 | Nincs fájl, a fájl nem használható audió (invalid_audio, egy ismeretlen formátum, vagy egy modell, amely nem egy transzkripciós modell (invalid_model). |
402 | A kiegyensúlyozottság sem fedezi. |
413 | A fájl több mint 25 MB (file_too_largea) a felvétel hosszúsága több mint 30 perc, vagy olyan formátumban, amelynek hossza nem olvasható előre, több mint 1,8 MB (audio_too_long). |
502 | A whisper nem tudta feldolgozni a hangot. |
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);
A beszéd fordítása angolul
POST https://nymbot.ai/api/v1/audio/translations - API kulcs szükséges, vagy Lightning fizetés kérésreA test az multipart/form-data.
Ugyanaz, mint a transzkripció, ugyanazokkal a mezőkkel a language, korlátozások és ár, de a szöveg angol nyelven jön vissza, függetlenül attól, hogy melyik nyelven beszélt. 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);
Beágyazás
Változtatja a szöveget vektorokká a kereséshez, a csoportosításhoz és a deduplikáláshoz. A modellek a Cloudflare-en futnak, és a standard egyenleget töltik.
POST https://nymbot.ai/api/v1/embeddings - API kulcs szükséges, vagy Lightning fizetés kérésre.
| mező | típus | Szükség | leírás |
|---|---|---|---|
model | String | Igen | A beépített modell a GET /api/v1/models?type=embedding. |
input | String vagy string array | Igen | A beágyazott szöveg, legfeljebb 100 üres szál. a token-sorozatok elutasításra kerülnek (token_input_unsupported(Minden beállításnak meg kell felelnie a modellnek) context_lengthEz körülbelül 4 byte egy token. |
encoding_format | String | nem | float (a lejárati idő) vagy base64 (Kis méretű 32 bites flotta) |
dimensions | Integrál | nem | A modell saját mérete, vagy egy modell esetében a supported_dimensions Ezután a vektor rövidül és normalizálódik. |
| modell | dimenziók | kontextus |
|---|---|---|
@cf/baai/bge-m3 | 1024 több nyelven | 8192 számlázás |
@cf/qwen/qwen3-embedding-0.6b | 1024 több nyelven | 8192 számlázás |
@cf/baai/bge-large-en-v1.5 | 1024 angol nyelvű | 512 tételek |
@cf/baai/bge-base-en-v1.5 | 768 angol nyelvű | 512 tételek |
@cf/baai/bge-small-en-v1.5 | 384 angol | 512 tételek |
A modellek listája az igazság forrása, amelyekért rendelkezésre állnak, és mennyibe kerülnek; a Google EmbeddingGemma, rövidebb vektorokkal kérésre, ott is megjelenik, ha a katalógusnak ára van rá.
Válasz
{
"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 }
}
| státusz | Mikor |
|---|---|
400 | Nincs belépő vagy üres; token array (token_input_unsupportedtöbb mint 100 fő (too_many_inputs); a bemenet hosszabb, mint a modell (input_too_long); egy méret, amelyet a modell nem adhat (unsupported_dimensions). |
402 | A szabványos egyensúly túl alacsony.A beágyazás soha nem használja a Pro egyensúlyt. |
404 | Ezzel a névvel nem lehet modellt beépíteni. |
502 | A modell meghibásodott. semmi sem kerül felszámításra. |
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);