Žinių bazė kūrėjai
Vaizdai, garso ir įterpimai
Programos generatoriai ir paieškos blokai: nuotraukos, vaizdo įrašai, kalba, transkripcija ir įterpimai, kiekvienas iš jūsų balanso.
Patogumui šis puslapis išverstas mašininiu būdu. Tinkama versija anglų kalba.
Vaizdų generavimas
Sukuria nuo vienos iki keturių nuotraukų iš skambučio ir grąžina juos, kai jie yra atlikti. ?image Į programėlę
POST https://nymbot.ai/api/v1/images/generations — reikia API rakto arba „Lightning“ mokėjimas pagal prašymą.
Idėja ateina iš GET /api/v1/models?type=imageStandartinis generatorius
@cf/black-forest-labs/flux-1-schnell, kainuoja lygus 5 standartiniai kreditai (50 sats) nuotrauka. Kiekvienas kitas generatorius praleidžia Pro kreditai savo kaina, su įprasta mokesčio ir maržos, kaip ir Aplikacijos. n Nuotraukos kainuoja
n Laukas, kurio generatorius neužima, yra nuleistas, o ne atmestas; standartinis generatorius naudoja tik žingsnį.
| Lauko | Tipas | Reikalingas | Aprašymas |
|---|---|---|---|
model | Stringų | Taip | Generatoriaus ID, pavyzdžiui, nano-banana. |
prompt | Stringų | Taip | Naudojami tik pirmieji 2000 simbolių. |
n | Integracijos | ne | 1 į 4. numatytasis 1. taip pat priimtas kaip num_images. |
size | Stringų | ne | Vienas iš tokių santykių, kaip "16:9"arba tokio dydžio, kaip "1792x1024", kuris tampa artimiausiu 1:1, 16:9, 9:16, 4:3, 3:4, 3:2, 2:3, 21:9, 5:4 ir 4:5. "auto" Palikite jį ant generatoriaus. |
aspect_ratio | Stringų | ne | Tas pats kaip sizeIr laimės, jei abu bus išsiųsti. |
quality | Stringų | ne | Specifiniai generatoriai, tokie kaip "low", "medium" arba "high". |
negative_prompt | Stringų | ne | Ką palikti lauke. |
output_format | Stringų | ne | "png", "jpeg" arba "webp". |
response_format | Stringų | ne | "url" (Darbo sutartis) arba "b64_json". |
image_url | Stringų | ne | Paveikslėlį pradėti nuo: a https:// ne ilgesnė kaip 4 096 simbolių su jokiu vartotojo vardu ar slaptažodžiu, arba data:image/…;base64 URL (PNG, JPEG, WebP arba GIF; ne SVG). editReikalavimai tiems, kurie requires_image_url. |
resolution nėra naudojamas: kiekvienas generatorius sukuria savo dydį. url, kiekvienas vaizdas yra įkeliamas į viešą Blossom hostą ir jūs gaunate jo nuorodą (kai kurie generatoriai tik grąžina savo nuorodą, kuri perduodama toliau). Ką gali pamatyti ugnissu
b64_json nuotrauka grįžta į atsakymą ir niekada nėra įkeliama. data: URL į image_url Jis tikrinamas taip pat, kaip ir
EDIT ir pirmiausia įkeliamas į Blossom, kad generatorius galėtų jį paimti; jis vėl ištrinamas, jei užklausa nepavyksta išskaityti.
Jei kai kurie iš n nuotraukos nepavyksta, jūs gaunate tuos, kurie dirbo, yra apmokestinami tik už tuos (plius bet kuris teikėjas sąskaitą, nepaisant to, kad nepavyko), ir nymbot.failed nurodo, kiek trūksta. jei visi nepavyksta, prašymas grąžinamas 502.
Atsakymas
{
"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 }
}
| statusą | Kada |
|---|---|
400 | ne greitai; n nuo 1 iki 4 (invalid_valuePavyzdžiui, blogas dydis (invalid_size) arba nuotrauka (invalid_image, invalid_image_url); modelis, kuris egzistuoja, bet nėra vaizdo generatorius (invalid_model); vaizdas generatoriui, kuris negali redaguoti (edit_unsupportedNėra nuotraukos tam, kam jos reikia (image_required). |
402 | Balansas negali apimti kiekvienos pageidaujamos nuotraukos. |
404 | Nėra tokio pavadinimo (model_not_found). |
502 | generatorius nepavyko (upstream_errorNėra nieko apmokestinama, nebent teikėjas sąskaitą už bandymą; tada klaida yra charged_sats. |
503 | Nuotraukos šiuo metu negali būti prieinamos (media_hosting_unavailable). b64_json Vis dar veikia. |
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);
Redaguoti vaizdus
Pakeičia paveikslėlį, kurį įkeliate, po perspėjimo.Tai yra „OpenAI“ redagavimo galutinis taškas, todėl „OpenAI SDK“ images.edit veikia taip, kaip yra. Tik Pro generatoriai su edit Į sąrašą įtrauktas modelis.
POST https://nymbot.ai/api/v1/images/edits — reikia API rakto arba „Lightning“ mokėjimas pagal prašymąKūnas yra multipart/form-dataiki 32 MB.
| Lauko | Tipas | Reikalingas | Aprašymas |
|---|---|---|---|
image | failą | Taip | Vaizdas, kurį reikia redaguoti: PNG, JPEG, WebP arba GIF, iki 20 MB. Taip pat priimamas kaip image[]Pirmasis yra naudojamas. |
prompt | Stringų | Taip | Ką reikia keisti. |
model | Stringų | Taip | Generatorius su edit. |
n | Integracijos | ne | 1 iš 4. |
sizeaspect_ratioqualitynegative_promptoutput_format | Stringų | ne | Kaip ir kartos. |
response_format | Stringų | ne | "b64_json" (išskyrus čia pateiktą formą) arba "url". |
Vaizdas, kurį įkeliate, yra patikrinamas, ar jis yra gerai suformuotas PNG, JPEG, WebP ar GIF, siunčiamas kaip jo tikrasis tipas, ir dedamas į viešą Blossom prieglobą, nes generatoriai paima savo įvestį per nuorodą. Gydykite jį kaip viešą. Jei redagavimas nepavyksta ir nieko nėra įkraunama, prieglobos kopija vėl ištrinama. Atsakymas turi tokią pačią formą kaip ir generatoriui. Kaina yra generatoriaus kaina, kuri kai kuriems generatoriams apima įvesties vaizdo mokestį.
Atsakymas
{
"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 }
}
| statusą | Kada |
|---|---|
400 | Nėra vaizdo ar skambučio, failas, kuris nėra vaizdas (invalid_image), arba generatorius, kuris negali redaguoti (edit_unsupported). |
413 | Nuotrauka yra didesnė nei 20 MB (file_too_large), arba visą užklausą virš 32 MB. |
503 | Nuotrauka šiuo metu negali būti prieinama (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"));
Vaizdo
Vaizdo įrašas trunka keletą minučių, todėl jis veikia fone.Jūs jį pateikiate, iš karto gausite ID ir paprašysite apie ID, kol jis bus baigtas.
POST https://nymbot.ai/api/v1/videos — reikia API rakto arba „Lightning“ mokėjimas pagal prašymąGrįžta 202.
| Lauko | Tipas | Reikalingas | Aprašymas |
|---|---|---|---|
model | Stringų | Taip | Vaizdo generatoriaus ID GET /api/v1/models?type=videoTokie kaip veo. |
prompt | Stringų | Taip | Kas turėtų įvykti. |
duration | Skaičius arba stringa | ne | Ilgis per sekundes, daugiau nei 0 ir iki 60. Naudojamas tik generatorių, kurie leidžia jums pasirinkti ilgį; kiti daro savo įprastą ilgį, kuris yra tai, ką seconds Atsižvelgiant į atsakymą ir kainą. |
aspect_ratio | Stringų | ne | Toks kaip "16:9" arba "9:16"Toks dydis, kaip "1280x720" Tai yra artimiausias santykis. |
resolutionquality | Stringų | ne | Vienas iš generatorių resolutions Šio modelio sąraše, pavyzdžiui, "720p" arba "1080p"Jis nustato kainą.Viskas kita yra atsisakyta su unsupported_resolution. |
image_url | Stringų | ne | Paveikslėlį pradėti nuo: a https:// LINK arba A data:image/… URL, kuris pirmiausia įkeliamas į viešą Blossom hostą.Reikalingas generatoriams su requires_image_url. |
Kaina yra fiksuota, kai pateikiate, iš generatoriaus, rezoliucijos ir ilgio, todėl ji apmokestinama iš jūsų Pro balanso, kai tik teikėjas priima darbą, ir parodyta kaip
cost, estimated_cost ir nymbotJei paslaugų teikėjas atsisako atlikti darbą, nieko neapmokestinama. Jei perdavimas vėliau nepavyksta arba paruoštas klipas negali būti saugomas ir paslaugų teikėjas jo neapmokėjo, mokestis grąžinamas vieną kartą, automatiškai. Perdavimas, kuris vis dar vyksta po valandos, nustoja galioti ir išlaiko savo mokestį, nes paslaugų teikėjas perdavimą apmokestina, kai tik jį priima.
Atsakymas į klausimą (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 Pradėk kaip in_progressarba completed Vaizdo įrašas jau yra data Kai generatorius jį iš karto grąžino.
Patikrinkite vaizdo įrašą
GET https://nymbot.ai/api/v1/videos/{id} — reikia raktą, priklausantį nym, kuris jį pateikė. raktas, kuris pasiekė savo viršutinę ribą, vis dar gali patikrinti.
Atsakė 202 Vaizdo įrašas yra sukurtas ir 200 kai jis yra baigtas arba nepavyko. Paklauskite kas 5 iki 10 sekundžių. Kiekvienas patikrinimas klausia teikėjo vieną kartą ir atsako iš karto; jis niekada nelaukia vaizdo įrašo. Darbas laikomas 24 valandas po to, kai jis buvo pateiktas.
GET /api/v1/videos išvardija paskutinius 50 darbo vietų kaip
{"object": "list", "data": […]}.
Atsakymas į šį klausimą (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 yra in_progress, completed arba failedNesėkmingas darbas atlieka error ({"code": "generation_failed", "message": …}Jei jis buvo grąžintas, cost 0 ir nymbot Pridėti
refunded_credits ir refunded_satsBaigtas vaizdo įrašas yra viešame „Blossom“ prieglobos sistemoje, kaip ir sukurtos nuotraukos.
| statusą | Kada |
|---|---|
400 | Nėra skubiai; trukmė ne 0 iki 60 (invalid_value); rezoliucija generatorius nesuteikia (unsupported_resolution); nėra vaizdo generatoriui, kuriam reikia vieno (image_required); modelis, kuris nėra vaizdo generatorius (invalid_model). |
402 | Pro balansas negali apimti vaizdo įrašą. |
404 | Nėra tokio generatoriaus (model_not_found), arba joks darbas pagal tą ID jūsų nym, arba jis yra daugiau nei 24 valandos senumo (video_not_found). |
429 | Jūsų nym jau turi 10 vaizdo įrašų perdavimą (video_jobs_limitPatikrinkite juos ir pateikite daugiau, kai vienas baigiasi. |
502 | Generatorius atsisakė darbo. nieko neapmokestinama, nebent teikėjas už tai atsiskaito. |
503 | Vaizdo įrašai šiuo metu negali būti pristatomi ar saugomi (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);
Tekstas į kalbą
Skaito tekstą garsiai ir grąžina pačią garso failą, o ne nuorodą. audio.speech.create „OpenAI SDK“ veikia.
POST https://nymbot.ai/api/v1/audio/speech — reikia API rakto arba „Lightning“ mokėjimas pagal prašymą.
| Lauko | Tipas | Reikalingas | Aprašymas |
|---|---|---|---|
model | Stringų | ne | Kalbėjimo modelis iš Audio modelių sąrašasPagal numatytuosius nustatymus – standartinis balsas; @cf/myshell-ai/melotts. aura-2 „Deepgram Aura 2“ žaidimas. |
input | Stringų | Taip | Tekstas, kurį reikia perskaityti: iki 800 simbolių standartiniam balsui, 2000 Aura 2. |
voice | Stringų | ne | balso ID iš Balsų sąrašasAura garsiakalbis, kaip luna (arba aura-2-luna-en, arba MeloTTS kalba (en, es, fr, zhOpenAI balso vardai, tokie kaip alloy yra priimami ir suteikia modelio numatytąjį balsą. |
language | Stringų | ne | Kalbos kodai, tokie kaip esBe balso, jis pasirenka vieną tą kalbą. Balso, kuris kalba kita kalba grįžta 422 voice_language_mismatch, ir kalba, kuriai modelis neturi balso 422 unsupported_language. |
response_format | Stringų | ne | Standartinis balsas grįžta mp3 Aura 2 sugrįžta mp3 (Tai yra nesėkmė) opus, aac, flac, wav arba pcm. |
speed | Numeris | ne | Priimtas ir ignoruojamas. |
Standartinis balsas kainuoja 3 standartinius kreditus (30 sats) už prašymą, kaip ir programoje. „Aura 2“ yra „Pro“, kainuojamas pagal siunčiamus simbolius.
Content-TypeKaina yra į X-Nymbot-Cost-Sats Jei kalbos modelis nepavyksta, nieko nekompensuojama.
Atsakymas
HTTP/1.1 200 OK
Content-Type: audio/mpeg
X-Nymbot-Cost-Sats: 4.2
X-Nymbot-Balance-Sats: 41055.6
(audio bytes)
| statusą | Kada |
|---|---|
400 | Nėra įvesties; įvesties virš modelio ribos (input_too_long); formatas, kurio modelis negali gaminti (unsupported_response_format); nežinomas balsas (invalid_voice); modelis, kuris nėra kalbos modelis (invalid_model). |
422 | Balsas nekalba nurodyta kalba, arba modelis neturi balso už tai. |
502 | Kalbos modelis nepavyko. nieko nėra apmokėta. |
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 modeliai ir balsai
Du viešieji sąrašai, skirti pasirinkti kalbos modelį ir balsą arba transkripcijos modelį.Yra 41 Aura 2 anglų kalbos ir keturios MeloTTS kalbos.
GET https://nymbot.ai/api/v1/audio/models Nereikia jokių raktų.
GET https://nymbot.ai/api/v1/audio/voices?language=en Nereikia jokių raktų.
| Lauko | Tipas | Reikalingas | Aprašymas |
|---|---|---|---|
language | Žymės: String Query | ne | Tik balsai šiai kalbai. |
model | Žymės: String Query | ne | Tik balsai šiam modeliui. |
Atsakymai į klausimus (balsai)
{
"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 }
]
}
Modelių sąrašas Atsakymai {"object": "list", "data": {"tts": […], "stt": […]}}Kiekvienas kalbėjimo modelis suteikia savo balansą, kainą, max_input_chars,
response_formats, languages ir default_voice· transkripcijos modelis suteikia savo slapyvardžius, max_file_bytes, max_seconds, formatai ir kaina už minutę.
cURL
curl https://nymbot.ai/api/v1/audio/models
curl "https://nymbot.ai/api/v1/audio/voices?language=en"
Python
import requests
print(requests.get("https://nymbot.ai/api/v1/audio/models").json())
for voice in requests.get("https://nymbot.ai/api/v1/audio/voices", params={"language": "en"}).json()["data"]:
print(voice["id"], voice["model_id"])
JavaScript
console.log(await (await fetch("https://nymbot.ai/api/v1/audio/models")).json());
const voices = await (await fetch("https://nymbot.ai/api/v1/audio/voices?language=en")).json();
for (const v of voices.data) console.log(v.id, v.model_id);
Kalba į tekstą
Paverčia įrašą į tekstą su šnabžda.Tai yra OpenAI transkripcijos galutinis taškas, todėl
audio.transcriptions.create Veikia ir
POST https://nymbot.ai/api/v1/audio/transcriptions — reikia API rakto arba „Lightning“ mokėjimas pagal prašymąKūnas yra multipart/form-data.
| Lauko | Tipas | Reikalingas | Aprašymas |
|---|---|---|---|
file | failą | Taip | Įrašai, nuo 256 baitų iki 25 MB ir iki 30 minučių: WAV, WebM, MP4 arba M4A, Ogg arba Opus, MP3 ir kiti formatai Šnabždėti skaito. |
model | Stringų | ne | Defektų whisperIšmanusis telefonas Whisper Large v3 Turbo. whisper-1, whisper-large-v3-turbo ir @cf/openai/whisper-large-v3-turbo Tai reiškia tą patį. |
language | Stringų | ne | Kalbama kalba, kaip enNustatyta, jei ji buvo palikta. |
prompt | Stringų | ne | Žodžiai ar rašybos, kurių galima tikėtis, pvz., vardai. Naudojami tik pirmieji 1000 simbolių. |
response_format | Stringų | ne | json (Tai yra nesėkmė) text, srt, vtt arba verbose_json. |
WAV, WebM, MP4 ir Ogg failams ilgis skaitomas iš failo prieš tai, kai kas nors veikia, todėl daugiau nei 30 minučių įrašas yra atmestas iš anksto (su 3 sekundžių malonės). WAV failo ilgis priklauso nuo jo pavyzdžio greičio, kanalų ir pavyzdžio dydžio. Kitų formatų, tokių kaip MP3, ilgis negali būti perskaitytas iš priekio, todėl jie yra ribojami dydžiu: mažiausiu bitiniu greičiu Nymbot mano, kad 8 kbps, 30 minučių yra 1,8 MB, o didesnis failas tokiu formatu yra atmestas su 413
audio_too_long Siųskite ilgesnius įrašus, pvz., WAV, WebM, MP4 arba Ogg. Jei Whisper tada praneša daugiau nei 30 minučių, prašymas atmetamas
413 audio_too_long, ir kadangi šnabždesys buvo paleistas, 30 minučių yra įkraunama.
Jūs mokate už garso ilgį, suapvalintą iki antrojo: ilgesnis ilgio skaitymas iš failo, ilgio šnabždesio ataskaitos ir mažiausias failo dydis leidžia, už šnabždesio kainą per minutę su įprasta mokesčiu ir marža, ir ne mažiau kaip 0,05 kredito už prašymą. 402 suteikia tai, ko reikėtų kiekvienam balansui. programoje balso pranešimo transkripcija gali būti nemokama; API ji visada įkraunama.
Atsakymas
{
"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 grąžina aiškų tekstą, srt ir vtt grąžinti subtitrus ir
verbose_json prideda kalbą, trukmę ir laiko segmentus. Trijų, kurie nėra JSON, kaina yra antraštėse.
| statusą | Kada |
|---|---|
400 | Nėra failų, failų, kuriuose nėra naudojamo garso (invalid_audio, nežinomas formatas, arba modelis, kuris nėra transkripcijos modelis (invalid_model). |
402 | Nei pusiausvyra negali jį padengti. |
413 | Duomenų rinkinys yra didesnis nei 25 MB (file_too_large1) ne ilgesniam nei 30 minučių laikotarpiui, arba ne ilgesniam nei 1,8 MB laikotarpiui (audio_too_long). |
502 | Šnabžda negalėjo apdoroti garso. nieko nėra apmokestinama. |
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);
Vertimas kalbos į anglų kalbą
POST https://nymbot.ai/api/v1/audio/translations — reikia API rakto arba „Lightning“ mokėjimas pagal prašymąKūnas yra multipart/form-data.
Tas pats kaip transkripcija, su tais pačiais laukais, išskyrus language, apribojimai ir kaina, tačiau tekstas grįžta į anglų kalbą, nesvarbu, kokia kalba buvo kalbama. 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);
Įdėklai
Konvertuoja tekstą į vektorius paieškai, grupavimui ir deduplikavimui.Modeliai veikia „Cloudflare“ ir praleidžia standartinį balansą.
POST https://nymbot.ai/api/v1/embeddings — reikia API rakto arba „Lightning“ mokėjimas pagal prašymą.
| Lauko | Tipas | Reikalingas | Aprašymas |
|---|---|---|---|
model | Stringų | Taip | Įterpimo modelis iš GET /api/v1/models?type=embedding. |
input | Strings arba string array | Taip | Pavyzdžiui, norint įdėti tekstą, ne daugiau kaip 100 tuščių eilučių. žetonų diapazonai yra atmesti (token_input_unsupportedKiekvienas įvestis turi atitikti modelio context_length, skaičiuojamas kaip apie keturis bytes tokeną. |
encoding_format | Stringų | ne | float (Darbo sutartis) arba base64 (Little-endian 32 bitų plaukiojimas) |
dimensions | Integracijos | ne | modelio dydį arba modelio dydį su supported_dimensions Vienas iš jų; vektoris tada sutrumpinamas ir normalizuojamas. |
| Modelis | matmenys | Kontekstas |
|---|---|---|
@cf/baai/bge-m3 | 1024 daugybė kalbų | 8,192 žetonai |
@cf/qwen/qwen3-embedding-0.6b | 1024 daugybė kalbų | 8,192 žetonai |
@cf/baai/bge-large-en-v1.5 | 1024 anglų kalba | 512 žetonų |
@cf/baai/bge-base-en-v1.5 | 768 Anglų kalba | 512 žetonų |
@cf/baai/bge-small-en-v1.5 | 384 Anglų kalba | 512 žetonų |
Modelių sąrašas yra tiesos šaltinis, už kurį jie yra prieinami ir kiek jie kainuoja; "Google" "EmbeddingGemma", turintis trumpesnius vektorius pagal užklausą, taip pat pasirodo ten, kai katalogas turi kainą.
Atsakymas
{
"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 }
}
| statusą | Kada |
|---|---|
400 | Nėra įvesties arba tuščios vienos; žetonų diapazonas (token_input_unsupporteddaugiau nei 100 įvesties (too_many_inputs); įvadas ilgesnis nei modelis imasi (input_too_long• dydis, kurį modelis negali pateikti (unsupported_dimensions). |
402 | Standartinis balansas yra per mažas. Įterpimai niekada nenaudoja Pro balanso. |
404 | Nėra modelio su tokiu pavadinimu. |
502 | Modelis nepavyko. nieko nėra apmokėta. |
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);