Kennisbasis De ûntwikkelers
Foto's, audio en embeddings
De generators út 'e app, en de boubljes foar ûndersyk: foto's, fideo, speech, transkripsje en ynbeddings, elk fakturearre per gebrûk út jo balans.
Dizze side is masine-oerset foar it gemak. It Ingelske orizjineel is de ferzje dy't jildt.
Ynstruksje Images
It giet om it meitsjen fan 1 oant 4 foto's fan in prompt en returns them as they are done. ?image Yn de app.
POST https://nymbot.ai/api/v1/images/generations - in API-sleutel is nedich, of In Lightning betelling op fraach.
De IDF komt út GET /api/v1/models?type=imageDe standert generator.
@cf/black-forest-labs/flux-1-schnell, kostet in flat 5 standert credits (50 sats) in ôfbylding. Elke oare generator spilet Pro credits oan syn eigen priis, mei de gewoane fee en marge, as yn De app. n Foto kostet
n In fjild dat in generator net yntrodusearret wurdt gean ynstee as weigerd; de standert generator brûkt allinnich de prompt.
| De fjild | De type | Neffens | Beskriuwing |
|---|---|---|---|
model | Strjitte | Ja | In generator id, lykas nano-banana. |
prompt | Strjitte | Ja | Wat te rjochtsjen. Allinne de earste 2000 karakters wurde brûkt. |
n | Yntegraasje | No yn | 1 oant 4. Default 1. ek akseptearre as num_images. |
size | Strjitte | No yn | Yn de aspekten lykas "16:9"Of as it yn 'e hûs wie. "1792x1024", dy't de tichtste fan 1:1, 16:9, 9:16, 4:3, 3:4, 3:2, 2:3, 21:9, 5:4 en 4:5 wurdt. "auto" It giet om de generator. |
aspect_ratio | Strjitte | No yn | Itselde as sizeYn beide gefallen is de winner. |
quality | Strjitte | No yn | Generator-specifike, lykas "low", "medium" Of "high". |
negative_prompt | Strjitte | No yn | Wat om út te lieden. |
output_format | Strjitte | No yn | "png", "jpeg" Of "webp". |
response_format | Strjitte | No yn | "url" (De foarbyld) of "b64_json". |
image_url | Strjitte | No yn | It earste krantsje kaam út yn: A https:// link fan maksimaal 4,096 karakters mei gjin brûkersnaam of wachtwoord yn it, of in data:image/…;base64 URL (PNG, JPEG, WebP of GIF; net SVG). editYn it ferbân mei de requires_image_url. |
resolution is net brûkt: elke generator makket syn eigen grutte. url, elke ôfbylding wurdt uploade nei in iepenbiere Blossom-host en jo krije de link (e guon generators geane net in link werom fan har eigen, dy't wurdt oerbrocht). Wat de fire kin sjenYn
b64_json De foto komt werom yn it antwurd en wurdt nooit uploaden. data: URL yn image_url It wurdt ek kontrolearre as in
Edit yn En opladen nei Blossom earst sa'n generator kin helle it; it wurdt ferwiderje as de fraach mislitte de billing.
As wat fan de n foto's feroarjen, jo krije de dy't wurke, wurde berekend allinich foar dy't (plus alle de provider billed neffens feroarjen), en nymbot.failed It giet om it ûntdekken fan alle soargen. as alle soargen falen, komt de fraach werom. 502.
Antwurd
{
"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 fan | As |
|---|---|
400 | It is no hast. n Oer klasseboek en aktiviteiteplan, observaasje yn 'e basisskoalle by Theun Meestringa(invalid_valueIt earste krantsje kaam út yn april (invalid_sizeIt earste krantsje kaam út yn april (invalid_image, invalid_image_urlIt earste krantsje kaam út yn april Nadere informatie (invalid_modelIt earste krantsje kaam út yn april Nadere informatie (edit_unsupportedIt earste krantsje kaam út yn april Nadere informatie (image_required). |
402 | De balans kin net alle foto's dy't ferwachte wurde. |
404 | It earste krantsje kaam út yn april (model_not_found). |
502 | It earste krantsje kaam út yn april (upstream_errorIt is noch net goedkard, mar it is net goedkard, mar it is net goedkard. charged_sats. |
503 | It earste krantsje kaam út yn april (media_hosting_unavailable). b64_json Ek noch wurkje. |
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);
Editearje foto's
Dit is it edit-endpunt fan OpenAI, dus de OpenAI SDK's' images.edit Dêrom is de generaasje mei de edit Yn de modellijst akseptearje jo it.
POST https://nymbot.ai/api/v1/images/edits - in API-sleutel is nedich, of In Lightning betelling op fraachIt lichem is multipart/form-dataYn totaal binne der 32 MB.
| De fjild | De type | Neffens | Beskriuwing |
|---|---|---|---|
image | Filter | Ja | De ôfbylding om te bewarjen: PNG, JPEG, WebP of GIF, oant 20 MB. Ek akseptearre as image[]De earste is yn gebrûk. |
prompt | Strjitte | Ja | Wat te feroarjen. |
model | Strjitte | Ja | Yn de generaasje mei edit. |
n | Yntegraasje | No yn | 1 oant 4. |
sizeaspect_ratioqualitynegative_promptoutput_format | Strjitte | No yn | Yn de generaasje. |
response_format | Strjitte | No yn | "b64_json" (de default hjir) of "url". |
De ôfbylding dy't jo uploadsje wurdt kontrolearre om in goed foarme PNG, JPEG, WebP of GIF te wêzen, as syn echte type, en set op in iepenbiere Blossom-host, omdat de generators har yntrodusearje troch link. Treat it as iepenbiere. As it editearjen mislearre en niks is oplaad, wurdt de hûsde kopie opnommen. De antwurd hat itselde foarm as foar generaasje. Priis is de priis fan de generator, dy't foar guon generators ynklusyf in kosten foar de yntrodusearre ôfbylding.
Antwurd
{
"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 fan | As |
|---|---|
400 | Oer klasseboek en aktiviteplan, observaasje en registraasje yn 'e basisskoalle by Theun Meestringa(invalid_imageOer klasseboek en aktiviteplan, observaasje en registraasje yn 'e basisskoalle by Theun Meestringa(edit_unsupported). |
413 | It earste krantsje kaam út yn april Nadere informatie (file_too_large), of de hiele fraach oer 32 MB. |
503 | It earste krantsje kaam út yn april (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"));
De video
In fideo duorret minuten, dus it rûn yn 'e achtergrûn. Jo submit it, krije in id onmiddellik, en frage oer de id oant it is makke. Elke fideo generator spile de Pro saldo.
POST https://nymbot.ai/api/v1/videos - in API-sleutel is nedich, of In Lightning betelling op fraachYnterview 202.
| De fjild | De type | Neffens | Beskriuwing |
|---|---|---|---|
model | Strjitte | Ja | In video generator id fan GET /api/v1/models?type=videoYn de veo. |
prompt | Strjitte | Ja | Wat moat gebeure. |
duration | Nummers of string | No yn | Lengte yn sekonden, mear as 0 en oant 60. brûkt allinich troch generators dy't kinne jo selektearje de lengte; de oare meitsje har gewoane lengte, dat is wat seconds Yn de reaksje en de priis folgje. |
aspect_ratio | Strjitte | No yn | As wie "16:9" Of "9:16"Yn de grootte fan "1280x720" It is de meast ferneamde ferheging. |
resolutionquality | Strjitte | No yn | De generaasje fan resolutions Yn de modellijst, lykas "720p" Of "1080p"It set de priis. Ien ding is weigere mei unsupported_resolution. |
image_url | Strjitte | No yn | It earste krantsje kaam út yn: A https:// Link en A data:image/… URL, dy't opnommen wurdt nei in iepenbiere Blossom-host earst. requires_image_url. |
De priis is fêste doe't jo oanmelde, út de generator, resolúsje en lengte, dus it wurdt belutsen út jo Pro saldo as de provider aksepteart de taak, en fûn as
cost, estimated_cost en nymbotIf the provider refuses the job, nothing is charged. If the render later fails, or the finished clip cannot be stored and the provider did not bill for it, the charge is refunded once, automatically. A render that is still going after an hour is given up, and keeps its charge, because the provider bills a render once it accepts it. A refund returns the credits but does not lower the key's spending count.
Yn Ljouwert (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 Begjin as in_progressYn completed De video is al yn data As de generaasje it weromfûn.
Kontrolearje op in video
GET https://nymbot.ai/api/v1/videos/{id} In sleutel dy't syn cap hat, kin noch kontrolearje.
It antwurd 202 As de video wurdt makke en 200 as it is voltooid of hat mislearre. Befoarderje elke 5 oant 10 sekonden. Elke check freegje de provider ien kear en antwurde op 'e oere; it wacht nooit foar de fideo. In baan wurdt hâlden foar 24 oeren nei it wurde ynsteld.
GET /api/v1/videos List de lêste 50 jobs fan de sleutel as
{"object": "list", "data": […]}.
Yn Ljouwert (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 Yn in_progress, completed Of failedIn mislearre baan fersoarge error ({"code": "generation_failed", "message": …}En as it net ferbûn is. cost Yn 0 en nymbot Hjoed
refunded_credits en refunded_satsDe fergeande video is op in iepenbiere Blossom-host, lykas generearre foto's.
| Status fan | As |
|---|---|
400 | Oer klasseboek en aktiviteiteplan, observaasje en registraasje yn 'e basisskoalle by Theun Meestringa(invalid_valueIt earste krantsje kaam út yn april Nadere informatie (unsupported_resolutionIt earste krantsje kaam út yn april Nadere informatie (image_requiredIt earste krantsje kaam út yn april Nadere informatie (invalid_model). |
402 | De Pro-balans kin de video net dekken. |
404 | It earste krantsje kaam út yn april (model_not_foundOer klasseboek en aktiviteiteplan, observaasje en registraasje yn 'e basisskoalle by Theun Meestringa(video_not_found). |
429 | It earste krantsje kaam út yn april (video_jobs_limitKontrolearje op harren en submit mear as ien finishes. |
502 | De generator weigerde de taak. Niets wurdt belêst as de provider ferbûn foar it. |
503 | Oer klasseboek en aktiviteiteplan, observaasje en registraasje yn 'e basisskoalle by Theun Meestringa(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);
Tekst foar speech
Lês tekst hûndert en keart it audio-bestân sels, net in link. audio.speech.create Yn de OpenAI SDKs wurket.
POST https://nymbot.ai/api/v1/audio/speech - in API-sleutel is nedich, of In Lightning betelling op fraach.
| De fjild | De type | Neffens | Beskriuwing |
|---|---|---|---|
model | Strjitte | No yn | Yn de speech fan De list fan audio modellenDe standert stem, de standert stem. @cf/myshell-ai/melotts. aura-2 Yn dy tiid is de Aura 2. |
input | Strjitte | Ja | De tekst om te lêzen: oant 800 karakters foar de standert stem, 2000 foar Aura 2. |
voice | Strjitte | No yn | In voice id fan De list fan stemmenYn de Aura sprekers wie luna (Of aura-2-luna-enOer klasseboek en aktiviteiteplan, observaasje yn 'e basisskoalle by Theun Meestringa(en, es, fr, zhOpenAI stemnamen lykas alloy It is goedkeapje en gean de standert stem fan it model. |
language | Strjitte | No yn | In taalkoade lykas esAs der gjin stem is, selektearret it ien foar dat taal. 422 voice_language_mismatchEn in taal dat it model gjin stem foar hat. 422 unsupported_language. |
response_format | Strjitte | No yn | De standert stem komt werom mp3 De Aura 2 komt werom. mp3 Yn de ûndersteande opus, aac, flac, wav Of pcm. |
speed | Nûmer | No yn | It is akseptearre en negearre. |
De standert stem kostet in flat 3 standert credits (30 sats) in fraach, lykas yn 'e app. Aura 2 is Pro, priis troch de karakters dy't jo stjoere.
Content-TypeDe kosten binne yn de X-Nymbot-Cost-Sats If the speech model fails, nothing is charged.
Antwurd
HTTP/1.1 200 OK
Content-Type: audio/mpeg
X-Nymbot-Cost-Sats: 4.2
X-Nymbot-Balance-Sats: 41055.6
(audio bytes)
| Status fan | As |
|---|---|
400 | It earste krantsje kaam út yn april Nadere informatie (input_too_longIt earste krantsje kaam út yn april Nadere informatie (unsupported_response_formatIt earste krantsje kaam út yn april (invalid_voiceIt earste krantsje kaam út yn april Nadere informatie (invalid_model). |
422 | De stem sprekt net de taal dy't jûn is, of it model hat gjin stem foar it. |
502 | It model fan de speech mislearre. |
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 modellen en stimmen
Dy iepenbiere listen foar selektearjen fan in speechmodel en stem, of in transkripsje model.
GET https://nymbot.ai/api/v1/audio/models De sleutel is net nedich.
GET https://nymbot.ai/api/v1/audio/voices?language=en De sleutel is net nedich.
| De fjild | De type | Neffens | Beskriuwing |
|---|---|---|---|
language | Ynstruksje foar Query | No yn | Alleen stemmen foar dizze taal. |
model | Ynstruksje foar Query | No yn | Alleen stimmen foar dit model. |
Reagearje op (rjochtsjes)
{
"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 }
]
}
De list fan antwurders {"object": "list", "data": {"tts": […], "stt": […]}}Elke speechmodel jout syn balans, priis, max_input_chars,
response_formats, languages en default_voiceDe transkripsje model jout syn aliases, max_file_bytes, max_seconds, formaten en priis per minuut.
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);
Yn de tekst
It giet om in skriuwer yn tekst mei Whisper. Dit is it transkripsje-endpunt fan OpenAI, dus
audio.transcriptions.create Hy wurket.
POST https://nymbot.ai/api/v1/audio/transcriptions - in API-sleutel is nedich, of In Lightning betelling op fraachIt lichem is multipart/form-data.
| De fjild | De type | Neffens | Beskriuwing |
|---|---|---|---|
file | Filter | Ja | De opname, fan 256 bytes oant 25 MB en oant 30 minuten: WAV, WebM, MP4 of M4A, Ogg of Opus, MP3 en de oare formaten Whisper lêst. |
model | Strjitte | No yn | Default whisperIt giet om de Whisper Large v3. whisper-1, whisper-large-v3-turbo en @cf/openai/whisper-large-v3-turbo Dat betsjut itselde. |
language | Strjitte | No yn | De talen, lykas de enIt is ûntdekt as er útkomt. |
prompt | Strjitte | No yn | Words of spelling te ferwachtsjen, lykas namen. Alleen de earste 1000 karakters wurde brûkt. |
response_format | Strjitte | No yn | json Yn de ûndersteande text, srt, vtt Of verbose_json. |
Foar WAV, WebM, MP4 en Ogg-bestannen wurdt de lengte learde út it lêst foardat alles rûn, dus in opnaming oer 30 minuten wurdt weigeret foarôf (mei 3 sekonden' grace). De lengte fan in WAV-bestân komt út syn sampling rate, kanalen en samplingsgrutte. De lengte fan oare formaten, lykas MP3, kin net oplitte foarôf, dus se binne begrensd troch grutte: by de minste bitrate Nymbot ôfhinkliket, 8 kbps, 30 minuten is 1,8 MB, en in gruttere lêst yn sa'n formaat wurdt weigeret mei 413
audio_too_long Skriuw dy yn foar langer opnammen as WAV, WebM, MP4 of Ogg. As Whisper dan rapportearret mear as 30 minuten hoe't, de fraach wurdt feroare mei
413 audio_too_long, en sûnt Whisper rûn, 30 minuten wurde laden.
Jo betelje foar de lengte fan it audio, rûn oan de sekonde: de langste fan de lengte learde út it lêst, de lengte Whisper rapporten, en de minste de grutte fan it lêst makket, oan Whisper's per-minute priis mei de gewoane fee en marge, en op syn minst 0.05 krediet in fraach. 402 Yn de app, de transkripsje fan in spraakbericht kin wêze frije; op de API is it altyd laden. As Whisper mislitte, wurdt niks laden.
Antwurd
{
"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 Skriuw dy yn foar tekst, srt en vtt Yn de ûnderhâlden, en
verbose_json It giet om taal, lengte en timed segments. foar de trije dy't net JSON binne, de kosten binne yn de headsets.
| Status fan | As |
|---|---|
400 | Oer klasseboek en aktiviteplan, observaasje en registraasje yn 'e basisskoalle by Theun Meestringa(invalid_audioOer klasseboek en aktiviteiteplan, observaasje en registraasje yn 'e basisskoalle by Theun Meestringa(invalid_model). |
402 | De balans is noch net te dwaan. |
413 | It earste krantsje kaam út yn april Nadere informatie (file_too_largeOer klasseboek en aktiviteiteplan, observaasje en registraasje yn 'e basisskoalle by Theun Meestringa(audio_too_long). |
502 | Sjoernal wurdt de audio net ferwurke. |
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);
Translating speech yn it Ingelsk
POST https://nymbot.ai/api/v1/audio/translations - in API-sleutel is nedich, of In Lightning betelling op fraachIt lichem is multipart/form-data.
Dat wie ek yn de transkripsje, mei deselde fjilden bûten language, limieten en priis, mar de tekst komt werom yn it Ingelsk wat taal is sprekke. De OpenAI SDKs neame it mei 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);
Ynbrekken
Konvertearret tekst yn vektoren foar ûndersyk, clustering en deduplication. De modellen rjochtsje op Cloudflare en spylje de standert saldo.
POST https://nymbot.ai/api/v1/embeddings - in API-sleutel is nedich, of In Lightning betelling op fraach.
| De fjild | De type | Neffens | Beskriuwing |
|---|---|---|---|
model | Strjitte | Ja | In model fan GET /api/v1/models?type=embedding. |
input | String of array fan strings | Ja | Oer klasseboek en aktiviteiteplan, observaasje en registraasje yn 'e basisskoalle by Theun Meestringa(token_input_unsupportedElke ynlieding hat te passen mei de model's context_lengthYn de fjouwer stêden is it ûnbekend. |
encoding_format | Strjitte | No yn | float (De foarbyld) of base64 (Little-endian 32-bits floats wurde ek brûkt). |
dimensions | Yntegraasje | No yn | De eigen grutte fan it model, of foar in model mei supported_dimensions It is in foarbyld dat de wektor wurdt ferkortearre en normalisearre. |
| Yn model | De dimensies | De kontekst |
|---|---|---|
@cf/baai/bge-m3 | 1024 in protte talen | 8,192 tokens |
@cf/qwen/qwen3-embedding-0.6b | 1024 in protte talen | 8,192 tokens |
@cf/baai/bge-large-en-v1.5 | 1024 yn Ingelân | 512 foarbylden |
@cf/baai/bge-base-en-v1.5 | 768, Ingelsk | 512 foarbylden |
@cf/baai/bge-small-en-v1.5 | 384 Ingelsk | 512 foarbylden |
De list fan modellen is de bron fan waarheid foar dy't beskikber binne en wat se kosten; Google's EmbeddingGemma, mei kortere vektoren op fraach, ferskynt der ek doe't de katalogus hat in priis foar it. Embeddings wurde metered per input token, en it 0.05-kredytminimum sil gelde foar elke fraach, net foar elke fraach, dus batching in protte teksten yn ien fraach is much cheaper than sending them one at a time.
Antwurd
{
"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 fan | As |
|---|---|
400 | Oer klasseboek en aktiviteiteplan, observaasje en registraasje yn 'e basisskoalle by Theun Meestringa(token_input_unsupportedIt earste krantsje kaam út yn april (too_many_inputsIt earste krantsje kaam út yn april Nadere informatie (input_too_longIt earste krantsje kaam út yn april Nadere informatie (unsupported_dimensions). |
402 | De standert saldo is te low. Embeddings brûke nooit de Pro saldo. |
404 | No ynsteld model mei dy namme. |
502 | It model mislearre. Er is niks opladen. |
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);