Tietopohja Kehittäjät
Kuvat, ääni ja upotukset
Sovelluksen generaattorit ja hakutulokset: kuvat, videot, puhe, transkripti ja upotukset, joista jokainen laskutetaan käytöstä taseestasi.
Tämä sivu on käännetty koneella käyttömukavuuden vuoksi. Englanninkielinen alkuperäinen versio on voimassa.
Kuvien luominen
Luo yhden tai neljä kuvaa esitteestä ja palauttaa ne, kun ne on tehty. ?image Tässä appissa
POST https://nymbot.ai/api/v1/images/generations - tarvitset API-avaimen tai Lightning-maksu pyynnöstä.
Idit tulevat GET /api/v1/models?type=imageSäännöllinen generaattori
@cf/black-forest-labs/flux-1-schnell, maksaa tasainen 5 standardikrediittiä (50 sats) kuva. Jokainen muu generaattori viettää Pro-luottoja omalla hinnallaan, tavanomaisella maksulla ja marginaalilla, kuten ja app. n Kuvat maksavat
n Kenttä, jota generaattori ei ota, hylätään sen sijaan, että sitä hylätään; vakiogeneraattori käyttää vain kehotusta.
| kenttä | Tyyppi | Vaadittu | Kuvaus |
|---|---|---|---|
model | Stringissä | Kyllä | Generator ID, kuten nano-banana. |
prompt | Stringissä | Kyllä | Vain ensimmäiset 2000 merkkiä käytetään. |
n | integroitua | Ei | 1 - 4. Oletusarvo 1. Hyväksytään myös num_images. |
size | Stringissä | Ei | Samankaltainen suhde kuin "16:9"tai avoimen kokoinen, kuten "1792x1024", josta tulee lähimpänä 1:1, 16:9, 9:16, 4:3, 3:4, 3:2, 2:3, 21:9, 5:4 ja 4:5. "auto" Jätä se generaattoriin. |
aspect_ratio | Stringissä | Ei | Sama kuin sizeJa voittaa, jos molemmat lähetetään. |
quality | Stringissä | Ei | Generator-erityisiä laitteita kuten "low", "medium" tai "high". |
negative_prompt | Stringissä | Ei | Mitä jättää pois. |
output_format | Stringissä | Ei | "png", "jpeg" tai "webp". |
response_format | Stringissä | Ei | "url" (Päätöksen mukaan) tai "b64_json". |
image_url | Stringissä | Ei | Kuvat alkavat tästä: A https:// linkki, joka on enintään 4 096 merkkiä ilman käyttäjänimeä tai salasanaa, tai data:image/…;base64 URL (PNG, JPEG, WebP tai GIF, ei SVG). Vain generaattoreille, joissa on editVaaditaan niitä, joilla requires_image_url. |
resolution ei käytetä: jokainen generaattori tekee oman koon. url, jokainen kuva ladataan julkiseen Blossom-isännöintiin ja saat sen linkin (muutama generaattori palauttaa vain oman linkin, joka välitetään). Mitä tulipalo voi nähdäkanssa
b64_json kuva palautuu vastauksessa, eikä sitä koskaan lähetetä. data: URL on image_url tarkastetaan samalla tavalla kuin
Edita ja ladataan Blossom ensin niin, että generaattori voi noutaa sen; se poistetaan uudelleen, jos pyyntö epäonnistuu.
Jos jotkut niistä n kuvat epäonnistuvat, saat ne, jotka toimivat, veloitetaan vain niistä (plus kaikki palveluntarjoaja laskutetaan epäonnistumisesta huolimatta), ja nymbot.failed osoittaa, kuinka monta puuttuu. Jos kaikki epäonnistuvat, pyyntö palauttaa 502.
Vastaus
{
"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 }
}
| Tilanne | Milloin |
|---|---|
400 | ei ole nopeaa; n 1 ja 4 välillä (invalid_value); huono koko (invalid_size) tai kuva (invalid_image, invalid_image_url); malli, joka on olemassa, mutta ei ole kuvan tuottaja (invalid_model); kuva generaattorille, joka ei voi muokata (edit_unsupported); ei kuvaa jollekin, joka tarvitsee sitä (image_required). |
402 | Tasapaino ei voi kattaa kaikkia pyydettyjä kuvia. |
404 | Ei ole mallia tällä nimellä (model_not_found). |
502 | Sähkönsiirto ei ole onnistunut (upstream_errorMitään ei veloiteta, ellei palveluntarjoaja ole veloittanut yrityksestä; sitten virhe on charged_sats. |
503 | Kuvia ei voi tällä hetkellä isännöidä (media_hosting_unavailable). b64_json Toimii vieläkin |
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);
Kuvien editointi
Muuttaa kuvaa, jonka lataat, seuraamalla kehotusta.Tämä on OpenAI: n muokkauspiste, joten OpenAI SDK: n images.edit toimii sellaisena kuin se on. Vain Pro-generaattorit edit malliluettelossa hyväksyä se.
POST https://nymbot.ai/api/v1/images/edits - tarvitset API-avaimen tai Lightning-maksu pyynnöstäRuumis on multipart/form-dataEnintään 32 MB.
| kenttä | Tyyppi | Vaadittu | Kuvaus |
|---|---|---|---|
image | Tiedosto | Kyllä | Muokattava kuva: PNG, JPEG, WebP tai GIF, enintään 20 Mt. Hyväksytään myös image[]Ensimmäistä on käytetty. |
prompt | Stringissä | Kyllä | Mitä muuttaa |
model | Stringissä | Kyllä | generaattorin kanssa edit. |
n | integroitua | Ei | 1 tai 4. |
sizeaspect_ratioqualitynegative_promptoutput_format | Stringissä | Ei | Mitä sukupolveen tulee. |
response_format | Stringissä | Ei | "b64_json" (Pääsääntö on tässä) tai "url". |
Lähettämäsi kuva tarkistetaan hyvin muotoiltuun PNG-, JPEG-, WebP- tai GIF-kuvaan, lähetetään sen todelliseksi tyypiksi ja asetetaan julkiseen Blossom-isännöintiin, koska generaattorit hakevat tietonsa linkin kautta. Käsittele sitä julkisena. Jos muokkaus epäonnistuu ja mitään ei veloiteta, isännöity kopio poistetaan uudelleen. Vastaus on samanlainen kuin sukupolven. Hinta on generaattorin hinta, joka joillekin generaattoreille sisältää maksun syöttökuvasta.
Vastaus
{
"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 }
}
| Tilanne | Milloin |
|---|---|
400 | Ei kuvaa tai viestiä, tiedosto, joka ei ole kuva (invalid_image), tai generaattori, joka ei voi muokata (edit_unsupported). |
413 | Kuva on yli 20 MB (file_too_large), tai koko pyyntö yli 32 MB. |
503 | Kuvaa ei voi tallentaa tällä hetkellä (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"));
Videoita
Video kestää minuutteja, joten se toimii taustalla. Lähetät sen, saat ID: n välittömästi ja pyydät ID: tä, kunnes se on valmis.
POST https://nymbot.ai/api/v1/videos - tarvitset API-avaimen tai Lightning-maksu pyynnöstäTakaisin 202.
| kenttä | Tyyppi | Vaadittu | Kuvaus |
|---|---|---|---|
model | Stringissä | Kyllä | Video-generaattorin ID GET /api/v1/models?type=videoSellaisia kuin veo. |
prompt | Stringissä | Kyllä | Mitä pitäisi tapahtua. |
duration | Numero tai string | Ei | Pituus sekunneissa, yli 0 ja jopa 60. Käytetään vain generaattoreilla, joiden avulla voit valita pituuden; toiset tekevät tavanomaisen pituutensa, mikä on mitä seconds Vastaus ja hinta seuraavat. |
aspect_ratio | Stringissä | Ei | Niin kuin "16:9" tai "9:16"Sellaisen koon kuin "1280x720" Siitä tulee lähimmät suhteet. |
resolutionquality | Stringissä | Ei | Yksi generaattoreista resolutions Esimerkiksi malliluettelossa, kuten "720p" tai "1080p"Se asettaa hinnan.Kaikki muu on kielletty unsupported_resolution. |
image_url | Stringissä | Ei | Kuvat alkavat tästä: A https:// linkki tai a data:image/… URL, joka ladataan ensin julkiseen Blossom-hostaaseen. requires_image_url. |
Hinta on kiinteä, kun lähetät, generaattorista, resoluutiosta ja pituudesta, joten se veloitetaan Pro-tasapainostasi heti, kun tarjoaja hyväksyy työn, ja näytetään
cost, estimated_cost ja nymbotJos palveluntarjoaja kieltäytyy työstä, mitään ei veloiteta.Jos suoritus epäonnistuu myöhemmin, tai valmiin videon tallentaminen ei onnistu ja palveluntarjoaja ei ole laskenut sitä, veloitus palautetaan kerran, automaattisesti.Työ, joka jatkuu vielä tunnin jälkeen, luovutetaan ja säilyttää maksunsa, koska palveluntarjoaja veloittaa suorituksen, kun se hyväksyy sen.Palautus palauttaa hyvitykset, mutta ei alenna avaimen kulutusta.
Vastaukset (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 Aloita kuin in_progresstai completed Videolla on jo data generaattori palautti sen välittömästi.
Tarkista videolla
GET https://nymbot.ai/api/v1/videos/{id} Tarvitset avaimen, joka kuuluu nimelle, joka lähetti sen. Avain, joka on saavuttanut kynnyksen, voi silti tarkistaa.
Se vastaa 202 Kun video on tehty ja 200 kun se on valmis tai on epäonnistunut. Kysy 5–10 sekunnin välein. Jokainen tarkistus kysyy tarjoajalta kerran ja vastaa kerralla; se ei koskaan odota videota.
GET /api/v1/videos luetteloi avaimen viimeiset 50 työpaikkaa
{"object": "list", "data": […]}.
Vastaukset (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 on in_progress, completed tai failedEpäonnistunut työpaikka kuljettaa error ({"code": "generation_failed", "message": …}Jos se on palautettu, cost on 0 ja nymbot Lisätään
refunded_credits ja refunded_satsLopullinen video on julkisella Blossom-hostilla, kuten luodut kuvat.
| Tilanne | Milloin |
|---|---|
400 | Ei kiire; kesto ulkopuolella 0 - 60 (invalid_value); päätöslauselma, jota generaattori ei tarjoa (unsupported_resolution); ei ole kuvaa generaattorille, joka tarvitsee yhden (image_required); malli, joka ei ole videon generaattori (invalid_model). |
402 | Pro-tasapaino ei voi kattaa videota. |
404 | Tällainen laite ei ole (model_not_found) tai ei työtä tuon id: n kanssa nymille, tai se on yli 24 tuntia vanha (video_not_found). |
429 | Sinun nymilläsi on jo 10 videota (video_jobs_limitTarkista ne ja lähetä lisää, kun yksi päättyy. |
502 | generaattori kieltäytyi työstä. mikään ei veloiteta, ellei palveluntarjoaja ole veloittanut siitä. |
503 | Videot eivät voi toimittaa tai tallentaa tällä hetkellä (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);
Teksti puheeseen
Lukee äänekkäästi tekstiä ja palauttaa itse äänitiedoston, ei linkkiä. audio.speech.create Avoimet SDK:t toimivat
POST https://nymbot.ai/api/v1/audio/speech - tarvitset API-avaimen tai Lightning-maksu pyynnöstä.
| kenttä | Tyyppi | Vaadittu | Kuvaus |
|---|---|---|---|
model | Stringissä | Ei | Puheenvuoron malli on Luettelo audiomalleistaOletusarvo: Standardi ääni @cf/myshell-ai/melotts. aura-2 Se on Deepgram Aura 2. |
input | Stringissä | Kyllä | Tekstin lukeminen: enintään 800 merkkiä vakiopuhelulle, 2000 merkkiä Aura 2:lle. |
voice | Stringissä | Ei | Ääni ID:stä Luettelo äänistäAura puhuja, kuten luna (tai aura-2-luna-en) tai MeloTTS-kieli (en, es, fr, zhOpenAI-äänenimiä kuten alloy ovat hyväksyttyjä ja antavat mallin oletusäänen. |
language | Stringissä | Ei | Kielikoodi, kuten esIlman ääntä se valitsee yhden kyseiselle kielelle. Ääni, joka puhuu toista kieltä, palauttaa 422 voice_language_mismatch, ja kieli, jolle mallilla ei ole ääntä 422 unsupported_language. |
response_format | Stringissä | Ei | Normaali ääni palaa mp3 Aura 2 palaa mp3 (Tämä on epäonnistumista opus, aac, flac, wav tai pcm. |
speed | Määrä | Ei | Hyväksytty ja sivuutettu. |
Vakiopuhelu maksaa tasaisen 3 vakiopistettä (30 sats) pyynnöstä, kuten sovelluksessa. Aura 2 on Pro, hinnoiteltu lähettämiesi merkkien mukaan. Vastauskappale on ääni, jossa on vastaava
Content-TypeKustannukset ovat tässä X-Nymbot-Cost-Sats Jos puheen malli epäonnistuu, mitään ei veloiteta.
Vastaus
HTTP/1.1 200 OK
Content-Type: audio/mpeg
X-Nymbot-Cost-Sats: 4.2
X-Nymbot-Balance-Sats: 41055.6
(audio bytes)
| Tilanne | Milloin |
|---|---|
400 | Ei sisällytystä; sisällytys ylittää mallin rajan (input_too_long); muoto, jota malli ei voi tuottaa (unsupported_response_format); tuntematon ääni (invalid_voice); malli, joka ei ole puhe malli (invalid_model). |
422 | Ääni ei puhu annettua kieltä, tai mallilla ei ole ääntä sille. |
502 | Puheen malli epäonnistui. mikään ei ole veloitettu. |
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()));
Audiomallit ja äänet
Kaksi julkista luetteloa valita puhe malli ja ääni, tai transkripti malli. on 41 Aura 2 Englanti puhujia ja neljä MeloTTS kieliä.
GET https://nymbot.ai/api/v1/audio/models Avainta ei tarvita.
GET https://nymbot.ai/api/v1/audio/voices?language=en Avainta ei tarvita.
| kenttä | Tyyppi | Vaadittu | Kuvaus |
|---|---|---|---|
language | Pyyntöjä (Query Strings) | Ei | Vain äänet tälle kielelle. |
model | Pyyntöjä (Query Strings) | Ei | Vain äänet tälle mallille. |
Vastaukset ( Äänet )
{
"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 }
]
}
Mallit listaavat vastaukset {"object": "list", "data": {"tts": […], "stt": […]}}Jokainen puhemalli antaa tasapainonsa, hinnan, max_input_chars,
response_formats, languages ja default_voiceTransaktiomalli antaa aliasinsa, max_file_bytes, max_seconds, muodot ja hinta minuutilta.
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);
Puhu tekstiin
Muuttaa tallennuksen tekstiin Whisperin avulla. Tämä on OpenAI:n transkription päätepiste.
audio.transcriptions.create Se toimii
POST https://nymbot.ai/api/v1/audio/transcriptions - tarvitset API-avaimen tai Lightning-maksu pyynnöstäRuumis on multipart/form-data.
| kenttä | Tyyppi | Vaadittu | Kuvaus |
|---|---|---|---|
file | Tiedosto | Kyllä | Tallennus, 256 baiteista 25 MB ja jopa 30 minuuttia: WAV, WebM, MP4 tai M4A, Ogg tai Opus, MP3 ja muut muodot Whisper lukee. |
model | Stringissä | Ei | puutteita whisperTämä on Whisper Large v3 Turbo. whisper-1, whisper-large-v3-turbo ja @cf/openai/whisper-large-v3-turbo tarkoittaa samaa. |
language | Stringissä | Ei | puhuttua kieltä, kuten enhavaittu, jos se jätetään pois. |
prompt | Stringissä | Ei | Odotettavissa olevat sanat tai kirjoitukset, kuten nimet. Käytetään vain ensimmäisiä 1000 merkkiä. |
response_format | Stringissä | Ei | json (Tämä on epäonnistumista text, srt, vtt tai verbose_json. |
WAV-, WebM-, MP4- ja Ogg-tiedostojen pituus luetaan tiedostosta ennen kuin jokin käynnistyy, joten yli 30 minuutin tallennus hylätään etukäteen (3 sekuntia). WAV-tiedoston pituus perustuu sen näytteenottoasteeseen, kanaviin ja näytteenottoon. Muiden tiedostomuotojen, kuten MP3: n, pituutta ei voi lukea etukäteen, joten ne ovat koon rajoittamia: alhaisimmassa bittimäärässä Nymbot olettaa, 8 kbps, 30 minuuttia on 1,8 MB, ja suurempi tiedosto tällaisessa muodossa hylätään 413
audio_too_long Lähetä pidempiä tallenteita kuten WAV, WebM, MP4 tai Ogg. Jos Whisper sitten raportoi yli 30 minuuttia joka tapauksessa, pyyntö hylätään
413 audio_too_long, ja koska Whisper juoksi, 30 minuuttia veloitetaan.
Maksat äänen pituudesta, pyöristettynä toiseen: pidempi pituus lukea tiedostosta, pituus Whisper raportoi, ja vähiten tiedoston koko sallii, Whisper minuutin hinta tavanomainen maksu ja marginaali, ja vähintään 0,05 luottoa pyyntö. 402 Antaa sen, mitä jokainen tasapaino tarvitsee. Sovelluksessa ääniviestin transkriptointi voi olla ilmaista; API:llä se veloitetaan aina.
Vastaus
{
"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 palauttaa selkeän tekstin, srt ja vtt palautettavat tekstit, ja
verbose_json lisätään kieli, kesto ja ajoitetut segmentit. Niiden kolmen osalta, jotka eivät ole JSON, kustannukset ovat otsikoissa.
| Tilanne | Milloin |
|---|---|
400 | Ei tiedostoa, tiedostoa, jossa ei ole käytettävissä olevaa ääntä (invalid_audio, tuntematon muoto tai malli, joka ei ole transkriptiomalli (invalid_model). |
402 | Tasa-arvo ei voi peittää sitä. |
413 | Tiedosto on yli 25 MB (file_too_large) tai yli 30 minuutin tallennus, tai muussa muodossa, jonka pituutta ei voi lukea etupuolella, yli 1,8 Mt (audio_too_long). |
502 | Huhu ei pystynyt käsittelemään ääntä. |
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);
Kääntäminen puhe englanniksi
POST https://nymbot.ai/api/v1/audio/translations - tarvitset API-avaimen tai Lightning-maksu pyynnöstäRuumis on multipart/form-data.
Sama kuin transkriptio, samoilla kentillä lukuun ottamatta language, rajoitukset ja hinta, mutta teksti tulee takaisin englanniksi riippumatta siitä, mitä kieltä puhuttiin. 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);
Sisäänrakennukset
Muuttaa tekstin vektoriksi hakuun, klusterointiin ja deduplointiin. Mallit toimivat Cloudflare-palvelussa ja käyttävät vakiotaseen.
POST https://nymbot.ai/api/v1/embeddings - tarvitset API-avaimen tai Lightning-maksu pyynnöstä.
| kenttä | Tyyppi | Vaadittu | Kuvaus |
|---|---|---|---|
model | Stringissä | Kyllä | Sisäänrakennettu malli, josta GET /api/v1/models?type=embedding. |
input | Array of Strings -sarja tai sarja | Kyllä | Tekstiä on upotettava, enintään 100 tyhjää merkkijonoa. Token-sarjat hylätään (token_input_unsupportedJokaisen syöttön on vastattava mallin context_length, laskettu noin neljään byteihin token. |
encoding_format | Stringissä | Ei | float (Päätöksen mukaan) tai base64 (Little-endian 32-bittinen purjehdus) |
dimensions | integroitua | Ei | mallin omasta koosta tai mallista, jossa on supported_dimensions yksi niistä; vektoria lyhennetään ja normalisoidaan. |
| malli | ulottuvuudet | kontekstiin |
|---|---|---|
@cf/baai/bge-m3 | 1024 monilla kielillä | 8,192 merkkiä |
@cf/qwen/qwen3-embedding-0.6b | 1024 monilla kielillä | 8,192 merkkiä |
@cf/baai/bge-large-en-v1.5 | 1024 Englanti | 512 pistettä |
@cf/baai/bge-base-en-v1.5 | 768, Englanti | 512 pistettä |
@cf/baai/bge-small-en-v1.5 | 384 Englanti | 512 pistettä |
Malliluettelo on totuuden lähde siitä, mitä ne ovat saatavilla ja mitä ne maksavat; Googlen EmbeddingGemma, jossa on lyhyemmät vektorit pyynnöstä, näkyy siellä myös silloin, kun luettelossa on hinta.
Vastaus
{
"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 }
}
| Tilanne | Milloin |
|---|---|
400 | Ei sisällön tai tyhjä yksi; token array (token_input_unsupported); yli 100 syöttöä (too_many_inputs); syöttö on pidempi kuin malli vie (input_too_long); koko, jota malli ei voi antaa (unsupported_dimensions). |
402 | Vakiotase on liian alhainen. Sisällöt eivät koskaan käytä Pro-tasapainoa. |
404 | Ei mitään mallia tuolla nimellä. |
502 | Malli epäonnistui. mikään ei ole veloitettu. |
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);