Baza e njohurive Zhvilluesit
Imazhe, audio dhe embeddings
Gjeneratorët nga aplikacioni, dhe blloqet e ndërtimit për kërkim: imazhe, video, fjalim, transkriptim dhe embeddings, secili faturuar për përdorim nga bilanci juaj.
Kjo faqe është përkthyer me makinë për lehtësi. Origjinali në anglisht është versioni që zbatohet.
Krijimi i imazheve
Bëhet një deri në katër imazhe nga një thirrje dhe i kthen ato kur ato janë bërë. ?image Në aplikacionin
POST https://nymbot.ai/api/v1/images/generations - ka nevojë për një çelës API, ose Pagesa Lightning sipas kërkesës.
ids vijnë nga GET /api/v1/models?type=imagePër gjeneratorin e përgjithshëm,
@cf/black-forest-labs/flux-1-schnell, kushton një flat 5 kredite standarde (50 sats) një foto. Çdo gjenerator tjetër shpenzon kredite Pro në çmimin e vet, me tarifën e zakonshme dhe marzhin, si në Aplikacioni. n Fotografia kushton
n Një fushë që një gjenerator nuk merr bie në vend që të refuzohet; gjeneratori standard përdor vetëm këshillën.
| fushë | Lloji | Të nevojshme | Përshkrimi |
|---|---|---|---|
model | Stringë | po | Një gjenerator ID, si nano-banana. |
prompt | Stringë | po | Çfarë të vizatoni: Përdorni vetëm 2000 karakteret e para. |
n | Integrale | jo | 1 deri në 4.Default 1.Të pranuara gjithashtu si num_images. |
size | Stringë | jo | Një raport i tillë si "16:9"ose një hapësirë të tillë si "1792x1024", e cila bëhet më e afërt me 1:1, 16:9, 9:16, 4:3, 3:4, 3:2, 2:3, 21:9, 5:4 dhe 4:5. "auto" Lëreni atë në gjenerator. |
aspect_ratio | Stringë | jo | E njëjta si sizedhe fiton nëse të dyja dërgohen. |
quality | Stringë | jo | gjeneratorët, të tilla si "low", "medium" ose "high". |
negative_prompt | Stringë | jo | Çfarë të lëmë jashtë |
output_format | Stringë | jo | "png", "jpeg" ose "webp". |
response_format | Stringë | jo | "url" (Për shkak të defektit) ose "b64_json". |
image_url | Stringë | jo | Një fotografi për të filluar nga: një https:// një lidhje me më shumë se 4096 karaktere pa asnjë emër përdoruesi ose fjalëkalim në të, ose një data:image/…;base64 URL (PNG, JPEG, WebP ose GIF; jo SVG). Vetëm për gjeneratorët me editKërkohet nga ata që requires_image_url. |
resolution nuk përdoret: secili gjenerator bën madhësinë e vet. url, çdo foto është ngarkuar në një Blossom host publik dhe ju merrni lidhjen e saj (disa gjeneratorë vetëm dorëzojnë një lidhje të tyre, e cila është transmetuar). Çfarë mund të shohë zjarriMe
b64_json imazhi kthehet në përgjigje dhe nuk ngarkohet kurrë. data: URL në image_url kontrollohet në të njëjtën mënyrë si një
Editë dhe ngarkuar në Blossom së pari në mënyrë që gjeneratori mund të marrë atë; ajo fshihet përsëri në qoftë se kërkesa dështon pa faturim.
Nëse disa nga n fotot dështojnë, ju merrni ato që punuan, janë të ngarkuara vetëm për ato (plus çdo ofruesi faturuar pavarësisht dështimit), dhe nymbot.failed tregon se sa janë të humbur.Nëse të gjithë dështojnë, kërkesa kthehet 502.
Përgjigje
{
"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 }
}
| Statusit | Kur |
|---|---|
400 | jo të shpejtë; n nga 1 deri në 4 (invalid_value(Për shkak të madhësisë së dobët)invalid_size) ose imazhi (invalid_image, invalid_image_url(Një model që ekziston, por nuk është një gjenerator i imazhit)invalid_model); një imazh për një gjenerator që nuk mund të redaktojë (edit_unsupported(Nuk ka foto për atë që ka nevojë për të)image_required). |
402 | Bilanci nuk mund të mbulojë çdo foto të kërkuar. |
404 | Asnjë model me këtë emër (model_not_found). |
502 | Sistemi nuk ka funksionuar (upstream_errorAsgjë nuk ngarkohet përveç nëse ofruesi ka faturuar për përpjekjen; atëherë gabimi ka charged_sats. |
503 | Fotot nuk mund të strehohen në këtë moment (media_hosting_unavailable). b64_json akoma funksionon |
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);
Redaktimi i imazheve
Ndryshon një imazh që ngarkoni, duke ndjekur një këshillë.Kjo është pika e fundit e redaktimit të OpenAI, kështu që OpenAI SDK's' images.edit funksionon siç është. vetëm gjeneratorët Pro me edit në listën e modeleve të pranojë atë.
POST https://nymbot.ai/api/v1/images/edits - ka nevojë për një çelës API, ose Pagesa Lightning sipas kërkesësTrupi është multipart/form-dataDeri në 32 MB
| fushë | Lloji | Të nevojshme | Përshkrimi |
|---|---|---|---|
image | Arkivë | po | Imazhi për të redaktuar: PNG, JPEG, WebP ose GIF, deri në 20 MB. image[]E para është përdorur. |
prompt | Stringë | po | Çfarë të ndryshojë. |
model | Stringë | po | Një gjenerator me edit. |
n | Integrale | jo | 1 në 4. |
sizeaspect_ratioqualitynegative_promptoutput_format | Stringë | jo | Për gjeneratën |
response_format | Stringë | jo | "b64_json" (Për shembull këtu) ose "url". |
Imazhi që ngarkoni kontrollohet për të qenë një PNG, JPEG, WebP ose GIF i formuar mirë, i dërguar si lloji i tij i vërtetë, dhe i vendosur në një bllokues publik, sepse gjeneratorët marrin hyrjen e tyre me lidhje. Trajtojeni atë si publik. Nëse redaktimi dështon dhe asgjë nuk ngarkohet, kopja e hostuar fshihet përsëri. Përgjigja ka të njëjtën formë si për gjenerimin. Çmimi është çmimi i gjeneratorit, i cili për disa gjeneratorë përfshin një tarifë për imazhin e hyrjes.
Përgjigje
{
"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 }
}
| Statusit | Kur |
|---|---|
400 | Asnjë imazh ose nxitje, një skedar që nuk është imazh (invalid_image, ose një gjenerator që nuk mund të redaktojë (edit_unsupported). |
413 | Fotografia është më e madhe se 20 MB (file_too_large), ose të gjithë kërkesën mbi 32 MB. |
503 | Fotografia nuk mund të strehohet në këtë moment (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 të
Një video merr minuta, kështu që ajo shkon në sfond. ju paraqisni atë, merrni një id menjëherë, dhe pyesni për id derisa të bëhet. çdo gjenerator video shpenzon bilancin Pro.
POST https://nymbot.ai/api/v1/videos - ka nevojë për një çelës API, ose Pagesa Lightning sipas kërkesësKthim 202.
| fushë | Lloji | Të nevojshme | Përshkrimi |
|---|---|---|---|
model | Stringë | po | Një video gjenerator ID nga GET /api/v1/models?type=videoAshtu si veo. |
prompt | Stringë | po | Çfarë duhet të ndodhë. |
duration | Numri ose string | jo | Gjatësia në sekonda, më shumë se 0 dhe deri në 60. Përdoret vetëm nga gjeneratorët që ju lejojnë të zgjidhni gjatësinë; të tjerët bëjnë gjatësinë e tyre të zakonshme, e cila është ajo që seconds Në përgjigje dhe çmimi ndjek. |
aspect_ratio | Stringë | jo | Ashtu si "16:9" ose "9:16"një madhësi të tillë si "1280x720" bëhet më e afërt. |
resolutionquality | Stringë | jo | Një nga gjeneratorët resolutions Në listën e modeleve, si "720p" ose "1080p"Ajo përcakton çmimin.Çdo gjë tjetër është refuzuar me unsupported_resolution. |
image_url | Stringë | jo | Një fotografi për të filluar nga: një https:// Lidhje ose a data:image/… URL, e cila ngarkohet në një host publik Blossom së pari. requires_image_url. |
Çmimi është i fiksuar kur ju dërgoni, nga gjeneratori, rezolucioni dhe gjatësia, kështu që ajo ngarkohet nga bilanci juaj Pro sapo ofruesi pranon punën, dhe tregohet si
cost, estimated_cost dhe nymbotNëse ofruesi refuzon punën, asgjë nuk ngarkohet.Nëse renditja më vonë dështon, ose klipi i përfunduar nuk mund të ruhet dhe ofruesi nuk ka faturuar për të, tarifa rimbursohet një herë, automatikisht.Një renditje që është ende duke shkuar pas një ore heq dorë, dhe mban tarifën e saj, sepse ofruesi faturon një renditje sapo e pranon atë.Një rimbursim kthen kreditet, por nuk ul numrin e shpenzimeve të çelësit.
Përgjigje (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 fillon si in_progressose completed Videoja tashmë në data kur gjeneratori e ktheu atë menjëherë.
Kontrolloni në një video
GET https://nymbot.ai/api/v1/videos/{id} - ka nevojë për një çelës që i përket nym që e ka dorëzuar atë.
Përgjigjet 202 Ndërsa videoja është duke u realizuar dhe 200 kur ajo është e përfunduar ose ka dështuar. Pyetni çdo 5 deri në 10 sekonda. Çdo kontroll pyet ofruesin një herë dhe përgjigjet në të njëjtën kohë; ajo kurrë nuk pret për video. Një punë mbahet për 24 orë pasi është dorëzuar.
GET /api/v1/videos liston 50 punët e fundit të çelësit si
{"object": "list", "data": […]}.
Përgjigje (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 është in_progress, completed ose failedNjë punë e dështuar sjell error ({"code": "generation_failed", "message": …}Në qoftë se është kthyer, cost 0 dhe nymbot shtesë
refunded_credits dhe refunded_satsVideoja e përfunduar është në një host publik Blossom, si fotot e gjeneruara.
| Statusit | Kur |
|---|---|
400 | Përgjigje: Përgjigje: Përgjigje: Përgjigje: Përgjigje: Përgjigje: Përgjigje: Përgjigje: Përgjigje: Përgjigje: Përgjigje: Përgjigje: Përgjigje: Përgjigje: Përgjigje: Përgjigje: Përgjigje: Përgjigje: Përgjigje: Përgjigje: Përgjigje: Përgjigje:invalid_value); një rezolucion që gjeneratori nuk ofron (unsupported_resolution); nuk ka foto për një gjenerator që ka nevojë për një (image_required(Për shembull, një video që nuk është një video gjenerator)invalid_model). |
402 | Pro balancimi nuk mund të mbulojë videon. |
404 | Nuk ka gjenerator të tillë (model_not_found, ose nuk ka punë nga ajo id për nym tuaj, ose ajo është më shumë se 24 orë e vjetër (video_not_found). |
429 | Shkrimi i mëposhtëmTë dhënat tuaja (Video)video_jobs_limitKontrolloni mbi to dhe dërgoni më shumë një herë një përfundon. |
502 | Gjeneratori refuzoi punën. asgjë nuk ngarkohet përveç nëse ofruesi ka faturuar për të. |
503 | Video nuk mund të dorëzohen ose të ruhen në këtë moment (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 në fjalim
Lexon tekstin me zë të lartë dhe kthen vetë skedarin audio, jo një lidhje. audio.speech.create në OpenAI SDKs punon.
POST https://nymbot.ai/api/v1/audio/speech - ka nevojë për një çelës API, ose Pagesa Lightning sipas kërkesës.
| fushë | Lloji | Të nevojshme | Përshkrimi |
|---|---|---|---|
model | Stringë | jo | Një model i fjalimit nga Lista e modeleve audioFjalë kyçe: Zëri standard @cf/myshell-ai/melotts. aura-2 Përshkrimi lojë Deepgram Aura 2 |
input | Stringë | po | Teksti për të lexuar: deri në 800 karaktere për zërin standard, 2,000 për Aura 2. |
voice | Stringë | jo | Një id zëri nga Lista e votave: një folës Aura të tillë si luna ose aura-2-luna-en, ose një gjuhë MeloTTS (en, es, fr, zh.OpenAI emrat e zërit si alloy janë pranuar dhe japin zërin default të modelit. |
language | Stringë | jo | Kodi i gjuhës si esPa një zë, ai zgjedh një për atë gjuhë. Një zë që flet një gjuhë tjetër kthehet 422 voice_language_mismatchdhe një gjuhë për të cilën modeli nuk ka zë 422 unsupported_language. |
response_format | Stringë | jo | Zëri i rregullt kthehet mp3 Aura 2 rikthehet mp3 (Për shkak të defektit) opus, aac, flac, wav ose pcm. |
speed | Numër | jo | pranuar dhe injoruar. |
Zëri standard kushton një 3 kredite standarde standarde (30 sats) një kërkesë, si në aplikacion. Aura 2 është Pro, çmimi sipas karaktereve që ju dërgoni. Trupi i përgjigjes është audio, me një përputhen
Content-TypeÇmimi është në X-Nymbot-Cost-Sats Nëse modeli i fjalës dështon, asgjë nuk ngarkohet.
Përgjigje
HTTP/1.1 200 OK
Content-Type: audio/mpeg
X-Nymbot-Cost-Sats: 4.2
X-Nymbot-Balance-Sats: 41055.6
(audio bytes)
| Statusit | Kur |
|---|---|
400 | Nuk ka hyrje; hyrja mbi kufirin e modelit (input_too_long); një format që modeli nuk mund të prodhojë (unsupported_response_formatNjë zë i panjohur (invalid_voice(Një model që nuk është një model i fjalës)invalid_model). |
422 | Zëri nuk flet gjuhën e dhënë, ose modeli nuk ka zë për të. |
502 | Modeli i fjalës dështoi. asgjë nuk ngarkohet. |
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()));
Modelet audio dhe zërat
Dy listat publike për të zgjedhur një model të fjalës dhe zërin, ose një model transkripti.Ka 41 folës Aura 2 anglisht dhe katër gjuhë MeloTTS.
GET https://nymbot.ai/api/v1/audio/models Nuk ka çelës të nevojshëm
GET https://nymbot.ai/api/v1/audio/voices?language=en Nuk ka çelës të nevojshëm
| fushë | Lloji | Të nevojshme | Përshkrimi |
|---|---|---|---|
language | Kërkesë (Query) | jo | Vetëm zëra për këtë gjuhë. |
model | Kërkesë (Query) | jo | Vetëm zëra për këtë model. |
Përgjigje (zëri i tyre)
{
"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 }
]
}
Lista e modeleve përgjigjet {"object": "list", "data": {"tts": […], "stt": […]}}Çdo model i fjalës jep ekuilibrin e vet, çmimin, max_input_chars,
response_formats, languages dhe default_voiceModeli i transkriptimit jep pseudonimet e tij, max_file_bytes, max_seconds, formatet dhe çmimi për minutë.
cURL
curl https://nymbot.ai/api/v1/audio/models
curl "https://nymbot.ai/api/v1/audio/voices?language=en"
Python
import requests
print(requests.get("https://nymbot.ai/api/v1/audio/models").json())
for voice in requests.get("https://nymbot.ai/api/v1/audio/voices", params={"language": "en"}).json()["data"]:
print(voice["id"], voice["model_id"])
JavaScript
console.log(await (await fetch("https://nymbot.ai/api/v1/audio/models")).json());
const voices = await (await fetch("https://nymbot.ai/api/v1/audio/voices?language=en")).json();
for (const v of voices.data) console.log(v.id, v.model_id);
Fjalimi në tekst
Shndërron një regjistrim në tekst me Whisper.Kjo është pika e fundit e transkriptimit të OpenAI, kështu që
audio.transcriptions.create Punë
POST https://nymbot.ai/api/v1/audio/transcriptions - ka nevojë për një çelës API, ose Pagesa Lightning sipas kërkesësTrupi është multipart/form-data.
| fushë | Lloji | Të nevojshme | Përshkrimi |
|---|---|---|---|
file | Arkivë | po | Regjistrimi, nga 256 bytes në 25 MB dhe deri në 30 minuta: WAV, WebM, MP4 ose M4A, Ogg ose Opus, MP3 dhe formatet e tjera Whisper lexon. |
model | Stringë | jo | defektë whisperPërshkrimi lojë Whisper Large v3 Turbo. whisper-1, whisper-large-v3-turbo dhe @cf/openai/whisper-large-v3-turbo Domethënë të njëjtën gjë. |
language | Stringë | jo | Gjuha e folur, si enzbuluar nëse është lënë jashtë. |
prompt | Stringë | jo | Fjalët ose shkronjat për të pritur, të tilla si emrat. përdoret vetëm 1000 karaktere të para. |
response_format | Stringë | jo | json (Për shkak të defektit) text, srt, vtt ose verbose_json. |
Për WAV, WebM, MP4 dhe skedarët Ogg gjatësia lexohet nga skedari para se çdo gjë të kandidojë, kështu që një regjistrim mbi 30 minuta është refuzuar përpara (me 3 sekonda). Gjatësia e një skedari WAV vjen nga shkalla e mostrës së saj, kanalet dhe madhësia e mostrës. Gjatësia e formateve të tjera, të tilla si MP3, nuk mund të lexohet përpara, kështu që ato janë të kufizuara nga madhësia: në shkallën më të ulët bit Nymbot supozon, 8 kbps, 30 minuta është 1.8 MB, dhe një skedar më i madh në një format të tillë është refuzuar me 413
audio_too_long Dërgoni regjistrime më të gjata si WAV, WebM, MP4 ose Ogg. Nëse Whisper pastaj raporton më shumë se 30 minuta gjithsesi, kërkesa refuzohet me
413 audio_too_long, dhe pasi Whisper ka shkuar, 30 minuta janë ngarkuar.
Ju paguani për gjatësinë e audios, të rrumbullakosur deri në sekondë: gjatësia më e gjatë e lexuar nga skedari, gjatësia e raportit Whisper, dhe më pak madhësia e skedarit lejon, në çmimin për minutë të Whisper me tarifën e zakonshme dhe marzhin, dhe të paktën 0.05 kredi një kërkesë. 402 Në aplikacion, transkriptimi i një mesazhi zë mund të jetë i lirë; në API ajo është gjithmonë e ngarkuar.
Përgjigje
{
"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 kthen tekstin e qartë, srt dhe vtt Kthimi i nëntitujve dhe
verbose_json shton gjuhën, kohëzgjatjen dhe segmentet e kohëzgjatura. Për tre që nuk janë JSON, kostoja është në krye.
| Statusit | Kur |
|---|---|
400 | Asnjë skedar, një skedar pa audio të përdorshme (invalid_audio, një format i panjohur, ose një model që nuk është një model transkripti (invalid_model). |
402 | As ekuilibri nuk mund ta mbulojë atë. |
413 | Përmbledhja është më e madhe se 25 MB (file_too_large(Për shembull, në qoftë se numri i të dhënave është më i madh se 1 MB, atëherë numri i të dhënave është më i madh se 1 MB)audio_too_long). |
502 | Thasper nuk mund të përpunojë audio. asgjë nuk është ngarkuar. |
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);
Përkthimi i fjalimit në anglisht
POST https://nymbot.ai/api/v1/audio/translations - ka nevojë për një çelës API, ose Pagesa Lightning sipas kërkesësTrupi është multipart/form-data.
E njëjta si transkripti, me të njëjtat fusha përveç language, kufijtë dhe çmimi, por teksti kthehet në anglisht pavarësisht nga gjuha e folur. 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);
Embeddings
Shndërron tekstin në vektorë për kërkim, grumbullim dhe deduplikim.Modelet drejtohen në Cloudflare dhe shpenzojnë bilancin standarde.
POST https://nymbot.ai/api/v1/embeddings - ka nevojë për një çelës API, ose Pagesa Lightning sipas kërkesës.
| fushë | Lloji | Të nevojshme | Përshkrimi |
|---|---|---|---|
model | Stringë | po | Një model i ndërtuar nga GET /api/v1/models?type=embedding. |
input | String ose array i string | po | Përgjigje: Përgjigje: Përgjigje: Përgjigje: Përgjigje: Përgjigje: Përgjigje: Përgjigje: Përgjigje: Përgjigje: Përgjigje: Përgjigje: Përgjigje: Përgjigje: Përgjigje: Përgjigje: Përgjigje: Përgjigje: Përgjigje: Përgjigje: Përgjigje: Përgjigje: Përgjigje: Përgjigje: Përgjigje: Përgjigje: Përgjigje: Përgjigje:token_input_unsupportedÇdo hyrje duhet të përputhet me modelin context_length, llogaritur si rreth katër bytes një token. |
encoding_format | Stringë | jo | float (Për shkak të defektit) ose base64 (Little-endian 32-bit fluturues në dispozicion) |
dimensions | Integrale | jo | madhësinë e modelit, ose për një model me supported_dimensions një prej tyre; vektor është shkurtuar dhe normalizuar. |
| Modelë | Dimensionet | Konteksti |
|---|---|---|
@cf/baai/bge-m3 | 1024, shumë gjuhë | 8,192 tokenë |
@cf/qwen/qwen3-embedding-0.6b | 1024, shumë gjuhë | 8,192 tokenë |
@cf/baai/bge-large-en-v1.5 | 1024 në anglisht | 512 Tifozë |
@cf/baai/bge-base-en-v1.5 | 768 në anglisht | 512 Tifozë |
@cf/baai/bge-small-en-v1.5 | 384 në anglisht | 512 Tifozë |
Lista e modeleve është burimi i së vërtetës për të cilat janë në dispozicion dhe çfarë kushton; EmbeddingGemma e Google, me vektorë më të shkurtër në kërkesë, shfaqet atje edhe kur katalogu ka një çmim për të.
Përgjigje
{
"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 }
}
| Statusit | Kur |
|---|---|
400 | Nuk ka asnjë hyrje ose një të zbrazët; token array (token_input_unsupported(Për më shumë se 100 pjesëmarrës)too_many_inputs); një hyrje më e gjatë se modeli merr (input_too_long); një madhësi që modeli nuk mund të japë (unsupported_dimensions). |
402 | Balanca standarde është shumë e ulët. Embeddings kurrë nuk përdorin balancën Pro. |
404 | Asnjë model me këtë emër. |
502 | Modeli dështoi. asgjë nuk është ngarkuar. |
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);