Siirry sisältöön
Palaa sivulle Nymbot

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.

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äTyyppiVaadittuKuvaus
modelStringissäKylläGenerator ID, kuten nano-banana.
promptStringissäKylläVain ensimmäiset 2000 merkkiä käytetään.
nintegroituaEi1 - 4. Oletusarvo 1. Hyväksytään myös num_images.
sizeStringissäEiSamankaltainen 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_ratioStringissäEiSama kuin sizeJa voittaa, jos molemmat lähetetään.
qualityStringissäEiGenerator-erityisiä laitteita kuten "low", "medium" tai "high".
negative_promptStringissäEiMitä jättää pois.
output_formatStringissäEi"png", "jpeg" tai "webp".
response_formatStringissäEi"url" (Päätöksen mukaan) tai "b64_json".
image_urlStringissäEiKuvat 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 }
}
TilanneMilloin
400ei 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).
402Tasapaino ei voi kattaa kaikkia pyydettyjä kuvia.
404Ei ole mallia tällä nimellä (model_not_found).
502Sähkönsiirto ei ole onnistunut (upstream_errorMitään ei veloiteta, ellei palveluntarjoaja ole veloittanut yrityksestä; sitten virhe on charged_sats.
503Kuvia 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äTyyppiVaadittuKuvaus
imageTiedostoKylläMuokattava kuva: PNG, JPEG, WebP tai GIF, enintään 20 Mt. Hyväksytään myös image[]Ensimmäistä on käytetty.
promptStringissäKylläMitä muuttaa
modelStringissäKyllägeneraattorin kanssa edit.
nintegroituaEi1 tai 4.
size
aspect_ratio
quality
negative_prompt
output_format
StringissäEiMitä sukupolveen tulee.
response_formatStringissä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 }
}
TilanneMilloin
400Ei kuvaa tai viestiä, tiedosto, joka ei ole kuva (invalid_image), tai generaattori, joka ei voi muokata (edit_unsupported).
413Kuva on yli 20 MB (file_too_large), tai koko pyyntö yli 32 MB.
503Kuvaa 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äTyyppiVaadittuKuvaus
modelStringissäKylläVideo-generaattorin ID GET /api/v1/models?type=videoSellaisia kuin veo.
promptStringissäKylläMitä pitäisi tapahtua.
durationNumero tai stringEiPituus 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_ratioStringissäEiNiin kuin "16:9" tai "9:16"Sellaisen koon kuin "1280x720" Siitä tulee lähimmät suhteet.
resolution
quality
StringissäEiYksi generaattoreista resolutions Esimerkiksi malliluettelossa, kuten "720p" tai "1080p"Se asettaa hinnan.Kaikki muu on kielletty unsupported_resolution.
image_urlStringissäEiKuvat 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.

TilanneMilloin
400Ei 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).
402Pro-tasapaino ei voi kattaa videota.
404Tä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).
429Sinun nymilläsi on jo 10 videota (video_jobs_limitTarkista ne ja lähetä lisää, kun yksi päättyy.
502generaattori kieltäytyi työstä. mikään ei veloiteta, ellei palveluntarjoaja ole veloittanut siitä.
503Videot 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äTyyppiVaadittuKuvaus
modelStringissäEiPuheenvuoron malli on Luettelo audiomalleistaOletusarvo: Standardi ääni @cf/myshell-ai/melotts. aura-2 Se on Deepgram Aura 2.
inputStringissäKylläTekstin lukeminen: enintään 800 merkkiä vakiopuhelulle, 2000 merkkiä Aura 2:lle.
voiceStringissä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.
languageStringissäEiKielikoodi, 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_formatStringissäEiNormaali ääni palaa mp3 Aura 2 palaa mp3 (Tämä on epäonnistumista opus, aac, flac, wav tai pcm.
speedMääräEiHyvä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)
TilanneMilloin
400Ei 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.
502Puheen 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äTyyppiVaadittuKuvaus
languagePyyntöjä (Query Strings)EiVain äänet tälle kielelle.
modelPyyntöjä (Query Strings)EiVain ää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äTyyppiVaadittuKuvaus
fileTiedostoKylläTallennus, 256 baiteista 25 MB ja jopa 30 minuuttia: WAV, WebM, MP4 tai M4A, Ogg tai Opus, MP3 ja muut muodot Whisper lukee.
modelStringissäEipuutteita whisperTämä on Whisper Large v3 Turbo. whisper-1, whisper-large-v3-turbo ja @cf/openai/whisper-large-v3-turbo tarkoittaa samaa.
languageStringissäEipuhuttua kieltä, kuten enhavaittu, jos se jätetään pois.
promptStringissäEiOdotettavissa olevat sanat tai kirjoitukset, kuten nimet. Käytetään vain ensimmäisiä 1000 merkkiä.
response_formatStringissäEijson (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.

TilanneMilloin
400Ei tiedostoa, tiedostoa, jossa ei ole käytettävissä olevaa ääntä (invalid_audio, tuntematon muoto tai malli, joka ei ole transkriptiomalli (invalid_model).
402Tasa-arvo ei voi peittää sitä.
413Tiedosto 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).
502Huhu 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äTyyppiVaadittuKuvaus
modelStringissäKylläSisäänrakennettu malli, josta GET /api/v1/models?type=embedding.
inputArray of Strings -sarja tai sarjaKyllä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_formatStringissäEifloat (Päätöksen mukaan) tai base64 (Little-endian 32-bittinen purjehdus)
dimensionsintegroituaEimallin omasta koosta tai mallista, jossa on supported_dimensions yksi niistä; vektoria lyhennetään ja normalisoidaan.
malliulottuvuudetkontekstiin
@cf/baai/bge-m31024 monilla kielillä8,192 merkkiä
@cf/qwen/qwen3-embedding-0.6b1024 monilla kielillä8,192 merkkiä
@cf/baai/bge-large-en-v1.51024 Englanti512 pistettä
@cf/baai/bge-base-en-v1.5768, Englanti512 pistettä
@cf/baai/bge-small-en-v1.5384 Englanti512 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 }
}
TilanneMilloin
400Ei 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).
402Vakiotase on liian alhainen. Sisällöt eivät koskaan käytä Pro-tasapainoa.
404Ei mitään mallia tuolla nimellä.
502Malli 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);