Skip ad content
Reditus ad Nymbot

Scientia basis Developers

Imaginēs, auditus et embedding

Generatores ex applicatione, et elementa constructiva pro investigatione: imagines, video, loquela, transcriptio et embedding, singula ex saldo tuo secundum usum computantur.

Imaginum generatio

Unum ad quattuor imagines ex instructione facit et eas reddit cum finitae sint. Eadem est series generatorum quam ?image in applicatio.

POST https://nymbot.ai/api/v1/images/generations — claves API indiget, aut solutio Lightning per petitionem.

Ids procedunt ex GET /api/v1/models?type=image. Generator standardus, @cf/black-forest-labs/flux-1-schnell, constat quinque creditibus standardis (50 sats) unumquodque imaginem. Omnis alter generator creditibus Pro secum suo pretio expendit, cum praesidiario et margine usitata, sicut in applicatio. n pretia imaginum n multo amplius. Campus quem generator non capit non recusatur sed amittitur; generator communis tantum promptum utitur.

CampusTypusNecessariumDescriptio
modelfilumItaID generatoris, sicut nano-banana.
promptfilumItaQuid pingere. Solum primae duae milia litterarum utuntur.
nintegerNon1 ad 4. Default 1. Etiam accipitur ut num_images.
sizefilumNonRatiocinatio lateris sicut "16:9", vel magnitudo OpenAI sicut "1792x1024", quod proximum fit unius ad unum, sedecim ad novem, novem ad sedecim, quattuor ad tres, tres ad quattuor, tres ad duo, duo ad tres, viginti unum ad novem, quinque ad quattuor et quattuor ad quinque. "auto" generatori relinquit.
aspect_ratiofilumNonIdem ac size, et vincit si utrumque mittitur.
qualityfilumNonGeneratori-proprius, sicut "low", "medium" aut "high".
negative_promptfilumNonQuid omittendum
output_formatfilumNon"png", "jpeg" aut "webp".
response_formatfilumNon"url" (defaultum) an "b64_json".
image_urlfilumNonImago a qua incipere: una https:// nexus maximum quadringentis nonaginta sex decem litterarum sine nomine vel verbis sigilli in se continens, vel a data:image/…;base64 URL (PNG, JPEG, WebP aut GIF; non SVG). Solum pro generatoribus cum edit; a debet eis qui habent requires_image_url.

resolution non adhibetur: quisque generator propriam magnitudinem facit. Cum url, quaelibet imago in publicum Blossom hospitium uploadatur et vinculum eius accipis (pauca tantum generatores vinculum proprium reddunt, quod transmittitur). Quicumque vinculum habet aperire potest et ea iterum delevari non potest; vide quid API videre potest. Cum b64_json imago in responsione redit et numquam in rete transfertur. Imago missa ut data: URL in image_url similiterne probatur sicut unum? emende et primum in Blossom uploadatum ut generator id ferre possit; si postulatio sine computo deficit, iterum deletur.

Si aliquid ex n imago deficiunt, eas habes quae successerunt, tantum pro iis solvunt (praetermitius eas quas praebitor, quamvis defecerint, effecerit), et nymbot.failed dicit quot deferiant. Si omnia deficiunt, postulatio redit 502.

Responsio

{
  "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 }
}
StatusQuando
400Nullus stimulus; n extra 1 ad 4 (invalid_value); magnitudo mala (invalid_size) an imago (invalid_image, invalid_image_url); modulus qui existit sed non est generator imaginum (invalid_model); imago pro generatore qui editio non potest (edit_unsupported); nullum imaginem pro eo qui eam egere debet (image_required).
402Saldo omnia imagines petitas non potest capere.
404Nullus exemplar hoc nomine (model_not_found).
502Generator defecit (upstream_error). Nihil imponitur nisi praebeat pro conatu pecuniam; tunc error habet charged_sats.
503Imaginum hodie non possunt hospitari (media_hosting_unavailable). b64_json adhuc operatur.

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);

Imaginum edere

Imaginem quam imponis mutat, praecepto sequendo. Hoc est punctum editum OpenAI, itaque SDK OpenAI images.edit sicut est operatur. Solum generatores Pro cum edit in elenco modellorum accipe id.

POST https://nymbot.ai/api/v1/images/edits — claves API indiget, aut solutio Lightning per petitionem. Corpus est multipart/form-data, usque ad 32 MB.

CampusTypusNecessariumDescriptio
imagedocumentumItaImago ad editendam: PNG, JPEG, WebP vel GIF, usque ad 20 MB. Etiam accipitur ut image[]; primus adhibetur.
promptfilumItaQuid mutari debeat.
modelfilumItaGenerator cum edit.
nintegerNonI ad IV.
size
aspect_ratio
quality
negative_prompt
output_format
filumNonQuantum generationis.
response_formatfilumNon"b64_json" (hic praedeterminatum) vel "url".

Imago quam transmittis probatur esse PNG, JPEG, WebP vel GIF recte formata, suo vero genere missa, et in publicum Blossom hospitium posita, quia generatores suam materiam per vinculum accipiunt. Eam ut publicam habe. Si emendatio deficit et nihil debetur, copia hospitata iterum deletur. Responsum eandem formam habet quam ad generationem. Pretium est pretium generatoris, quod apud quidam generatores etiam pretium pro imago praelata includit.

Responsio

{
  "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 }
}
StatusQuando
400Nec imago nec mandatum, ars quae non est pictura (invalid_image), aut generator qui mutare non potest (edit_unsupported).
413Imago super 20 MB est (file_too_large), aut tota postulatio super 32 MB.
503Imago nunc non potest hospitari (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"));

Video

Video minutis temporis consumit, itaque abdita procedit. Id mittis, statim numerum accipis, et de numero quaeris donec perficiatur. Omnis generator videolar saldo Pro absumit.

POST https://nymbot.ai/api/v1/videos — claves API indiget, aut solutio Lightning per petitionem. Reditus 202.

CampusTypusNecessariumDescriptio
modelfilumItaID generatoris pelliculae ex GET /api/v1/models?type=video, sicut veo.
promptfilumItaQuid accidere debet.
durationnumerus an textusNonLongitudo in secundis, amplius quam 0 et usque ad 60. Solum a generatoribus adhibetur qui longitudinem tibi eligere sinunt; alii longitudinem suam communem facient, quae est... seconds in responsione et pretium sequuntur.
aspect_ratiofilumNonSicut "16:9" aut "9:16"; magnitudo talis ut "1280x720" propeximus numerus rationis fit.
resolution
quality
filumNonUnus generantium resolutions in indice modorum, sicut "720p" aut "1080p"Pretium ipse constituit. Aliud quidvis recusatur. unsupported_resolution.
image_urlfilumNonImago a qua incipere: una https:// nexus aut a data:image/… URL, quod primum in publicum Blossom hospitium uploadatur. A generatoribus requiritur cum requires_image_url.

Pretium statum est cum submittis, ex generatore, resolutione, et longitudine, ita ut ex saldo tuo Pro statim tollatur cum praebitor munus accipit, et sic ostenditur cost, estimated_cost et nymbotSi praebitor laborem recusat, nihil imponitur. Si effectus postea deficit, vel clip finita conservari non potest et praebitor ei non billingit, pecunia restituit semel, automate. Effectus qui post horam adhuc procedit desistitur, et pretium retinet, quia praebitor effectum simul ac accipit billingit. Reditus creditum reddit sed numerum consumptionis clavis non minuit.

Responsum (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 incipit ut in_progress, aut completed cum pellicula iam intrā data Cum generator id statim reddidit.

Videon inspiciens

GET https://nymbot.ai/api/v1/videos/{id} — clavis necessaria est quae nomen subiecit ei pertinentes. Clavis quae finem attingit adhuc inspicere potest.

Respondet 202 dum video facitur et 200 cum aut perfectum sit aut defecit. Quoque 5 ad 10 secunda quaere. Unusquisque inspectio praebitorem semel interrogat et statim respondet; numquam pro pellicula exspectat. Munus post submissionem per 24 horas conservatur. GET /api/v1/videos indices quinque ultima opera clavis ut {"object": "list", "data": […]}.

Responsio (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 est in_progress, completed aut failed. A officium deficiente portat error ({"code": "generation_failed", "message": …}); si restitutum esset, cost estne 0 et nymbot addit refunded_credits et refunded_sats. Video perfectum in publico Blossom hospite est, sicut imagines generatae.

StatusQuando
400Nullum praeceptum; temporis duratio extra 0 ad 60 (invalid_value); resolutio quam generator non offert (unsupported_resolution); nullum imagines pro generatore qui eam requirit (image_required); exemplar quod non est generator pellicularum (invalid_model).
402Aequilibrium Proisitionis video tegere non potest.
404Nullus generator talis (model_not_found), aut nulla operatio per illud numerum pro nomine tuo, aut amplius quam XXIV horas antiquior est (video_not_found).
429Nomen tuum iam decem videos fingens habet (video_jobs_limit). Inspice eos et plura mitte cum unus finierit.
502Generator laborem recusavit. Nihil debitum est nisi praebitor id emerserit.
503Vidia nunc non possunt tradere aut servare (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);

Vox ad verba conversio

Textum voce clamat et ipsum fasciculum audibile reddit, non vinculum. Est punctum loquendi OpenAI, itaque audio.speech.create in OpenAI SDKs operatur.

POST https://nymbot.ai/api/v1/audio/speech — claves API indiget, aut solutio Lightning per petitionem.

CampusTypusNecessariumDescriptio
modelfilumNonModelus loquendi ex index modellorum audientium. Default: vox consueta, @cf/myshell-ai/melotts. aura-2 estne Deepgram Aura 2.
inputfilumItaTextus legendus: usque ad 800 caracteres pro voce communi, 2,000 pro Aura 2.
voicefilumNonVox identificatio ex index vocum: instrumentum sonorum Aura sicut luna (vel aura-2-luna-en), aut lingua MeloTTS (en, es, fr, zh). Nomina vocum OpenAI sicut alloy acceptantur et vocem default modellorum dant.
languagefilumNonCodex linguae sicut es. Sine voce, illī linguae unam eligit. Vox quae alteram linguam loquitur redit. 422 voice_language_mismatch, et lingua cui cuius modello vox non est 422 unsupported_language.
response_formatfilumNonVox communis redit mp3 solum. Aura 2 redit mp3 (defaultum), opus, aac, flac, wav aut pcm.
speednumerusNonAcceptum et neglectum.

Vox communis tribus creditibus communibus fixis (30 sats) per petitionem constat, sicut in applicatione. Aura 2 est Pro, pretium secundum litteras quas mittis habens. Corpus responsionis est audio, cum adaequante Content-Type; pretium est in X-Nymbot-Cost-Sats caput. Si modulus loquendi deficit, nihil debitur.

Responsio

HTTP/1.1 200 OK
Content-Type: audio/mpeg
X-Nymbot-Cost-Sats: 4.2
X-Nymbot-Balance-Sats: 41055.6

(audio bytes)
StatusQuando
400Nullus inputus; inputus super limites moduli est (input_too_long); forma quam exemplar non potest producere (unsupported_response_format); vox ignota (invalid_voice); exemplar quod non est exemplar loquendi (invalid_model).
422Vox linguam datoram non loquitur, aut exemplar ei vocem non habet.
502Model loquendi defecit. Nihil debitum est.

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()));

Modelli soni et voces

Duae indices publici ad eligendum specimen loquendi et vocem, aut ad specimen transcriptionis. Sunt 41 loquentes Aura 2 Angli et quattuor linguae MeloTTS.

GET https://nymbot.ai/api/v1/audio/models — clavis non opus est.

GET https://nymbot.ai/api/v1/audio/voices?language=en — clavis non opus est.

CampusTypusNecessariumDescriptio
languagefilum (quaestio)NonSolum voces pro hac lingua.
modelfilum (quaestio)NonSolum voces huiusmodi.

Responsio (voces)

{
  "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 }
  ]
}

Index modellorum responsa dat {"object": "list", "data": {"tts": […], "stt": […]}}. Omnis exemplar loquendi suum aequilibrium, pretium dat, max_input_chars, response_formats, languages et default_voice; exemplar transcriptionis alias dat, max_file_bytes, max_seconds, formae et pretium per minutam.

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);

Vox in scriptum

Confectionem in textum cum Whisper convertit. Hoc est punctum transcriptionis OpenAI, ergo audio.transcriptions.create operatur.

POST https://nymbot.ai/api/v1/audio/transcriptions — claves API indiget, aut solutio Lightning per petitionem. Corpus est multipart/form-data.

CampusTypusNecessariumDescriptio
filedocumentumItaRegistratio, a 256 bytebus ad 25 MB et usque ad 30 minuta: WAV, WebM, MP4 aut M4A, Ogg aut Opus, MP3 et aliae formae quas Whisper legit. MP3 et aliae formae cuius longitudo ante legi non potest ad 1.8 MB limitantur.
modelfilumNonDefinitio whisper, quod est Whisper Large v3 Turbo. whisper-1, whisper-large-v3-turbo et @cf/openai/whisper-large-v3-turbo idem significare.
languagefilumNonLingua loquens, sicut enSi relinquitur, invenitur.
promptfilumNonVerba aut orthographiae quae expectare possis, sicut nomina. Solum primus mille litterae utuntur.
response_formatfilumNonjson (defaultum), text, srt, vtt aut verbose_json.

Pro chartis WAV, WebM, MP4 et Ogg, longitudo ex chartā antequam quidquam agatur legitur, itaque conscriptio super triginta minuta antequam incipiat recusatur (cum tribus secundis indulgentia). Longitudo chartae WAV ex frequentia exemplorum, canalibus, et magnitudine exempli venit. Longitudo aliorum formatarum, sicut MP3, non potest ante legi, itaque magnitudine limitantur: ad minimum debitatem quam Nymbot suspicatur, 8 kbps, triginta minuta sunt 1.8 MB, et charta maior in talem formam recusatur cum 413 audio_too_long antequam quidquam exeat. Missa longiora monumenta ut WAV, WebM, MP4 vel Ogg. Si Whisper tamen plus quam triginta minuta refert, postulatum recusatur cum 413 audio_too_long, et cum Whisper perfectum esset, triginta minuta imputantur.

Pro longitudine audii solvisti, in secundam partem elevata: maximum inter longitudinem ex archivo lectam, longitudinem quam Whisper nuntiat, et minimum quod magnitudo archivi permittit, pretio per minutam Whispercum cum pecunia consueta et margini addita, et saltem 0.05 creditum per petitionem. Ex saldo consueto solvitur cum id pretium tegere possit, aliter autem ex Pro; a 402 redit quidquid unumquodque saldo opus sit. In applicatione, nuntium vocale transcribere gratis esse potest; in API semper emolumentum imponitur. Si Whisper deficit, nihil imponitur.

Responsio

{
  "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 textum simplicem reddit, srt et vtt subtitula redde, et verbose_json Addit linguam, durationem, et segmenta temporis. Pro tribus quae non sunt JSON, sumptus in capitimis est.

StatusQuando
400Nullum documentum, documentum sine auditu utilis (invalid_audio), formatum incognitum, aut modellum quod non est modellum transcriptionis (invalid_model).
402Nec ambo computi id tegere possunt.
413Facies est ultra 25 MB (file_too_large) an registrazione per excessum triginta minuta, vel, in forma cuius longitudo antea legi non potest, per excessum 1.8 MB (audio_too_long).
502Whisper audionum processere non potuit. Nihil debitum est.

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);

Verba ad Anglicum convertere

POST https://nymbot.ai/api/v1/audio/translations — claves API indiget, aut solutio Lightning per petitionem. Corpus est multipart/form-data.

Eodem modo sicut transcriptio, eundem campos habens praeter language, limites et pretium, sed textus Anglice redit quicquid lingua dictum sit. OpenAI SDKs eum vocant cum 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);

Intextūs

Textum in vectores ad quaerendum, ad aggregationem et ad deduplicationem convertit. Modelli in Cloudflare fiunt et ex saldo consueto consumunt.

POST https://nymbot.ai/api/v1/embeddings — claves API indiget, aut solutio Lightning per petitionem.

CampusTypusNecessariumDescriptio
modelfilumItaModus inclusio ex GET /api/v1/models?type=embedding.
inputseries vel series stringarumItaTextus ad inserendum, usque ad 100 stringas non vacuus. Series tokenum recusantur (token_input_unsupported). Unumquodque input consistere debet cum exemplar. context_length, quasi quattuor bytes per verbum computatur.
encoding_formatfilumNonfloat (defaultum) an base64 (flotationes 32-bitae parvum-endianae).
dimensionsintegerNonMagnitudo ipsius modelli, an pro modello cum supported_dimensions unum ex illis; vector tum brevatur et normalizatur. Aliud quidvis recusatur.
ModellusDimensionesContextus
@cf/baai/bge-m31024, multae linguae8,192 verba
@cf/qwen/qwen3-embedding-0.6b1024, multae linguae8,192 verba
@cf/baai/bge-large-en-v1.5Millesimus vigentesimus quadragesimus quartus, Anglica512 verba
@cf/baai/bge-base-en-v1.5Septingenti sexaginta octo, Anglica512 verba
@cf/baai/bge-small-en-v1.5CCCLXXXIV, Anglice512 verba

Index modellorum est fons veritatis pro iis quae adsunt et quae sint pretia; Google's EmbeddingGemma, cum vectoribus brevioribus si petatur, ibi apparet cum catalogus pretium ei habeat. Embedding per token inputum metuntur, et minimum 0.05-creditum ad singulam petitionem spectat, non ad singulos inputos, itaque multos textus in unam petitionem aggregare multo tutius est quam eos singulatim mittere.

Responsio

{
  "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 }
}
StatusQuando
400Nullus inputus aut vacuum; series tokenum (token_input_unsupported); plus quam 100 input (too_many_inputs); input longius quam exemplar capit (input_too_long); magnitudo quam exemplar dare non potest (unsupported_dimensions).
402Aequilibrum communis nimis parvus est. Embedding nunquam aequilibrium Pro utuntur.
404Nullum exemplar embedding hoc nomine.
502Modulus defecit. Nihil debitum est.

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);