Kalo te përmbajtja
Kthehu në Nymbot

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.

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ëLlojiTë nevojshmePërshkrimi
modelStringëpoNjë gjenerator ID, si nano-banana.
promptStringëpoÇfarë të vizatoni: Përdorni vetëm 2000 karakteret e para.
nIntegralejo1 deri në 4.Default 1.Të pranuara gjithashtu si num_images.
sizeStringëjoNjë 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_ratioStringëjoE njëjta si sizedhe fiton nëse të dyja dërgohen.
qualityStringëjogjeneratorët, të tilla si "low", "medium" ose "high".
negative_promptStringëjoÇfarë të lëmë jashtë
output_formatStringëjo"png", "jpeg" ose "webp".
response_formatStringëjo"url" (Për shkak të defektit) ose "b64_json".
image_urlStringëjoNjë 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 }
}
StatusitKur
400jo 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).
402Bilanci nuk mund të mbulojë çdo foto të kërkuar.
404Asnjë model me këtë emër (model_not_found).
502Sistemi nuk ka funksionuar (upstream_errorAsgjë nuk ngarkohet përveç nëse ofruesi ka faturuar për përpjekjen; atëherë gabimi ka charged_sats.
503Fotot 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ëLlojiTë nevojshmePërshkrimi
imageArkivëpoImazhi për të redaktuar: PNG, JPEG, WebP ose GIF, deri në 20 MB. image[]E para është përdorur.
promptStringëpoÇfarë të ndryshojë.
modelStringëpoNjë gjenerator me edit.
nIntegralejo1 në 4.
size
aspect_ratio
quality
negative_prompt
output_format
StringëjoPër gjeneratën
response_formatStringë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 }
}
StatusitKur
400Asnjë imazh ose nxitje, një skedar që nuk është imazh (invalid_image, ose një gjenerator që nuk mund të redaktojë (edit_unsupported).
413Fotografia është më e madhe se 20 MB (file_too_large), ose të gjithë kërkesën mbi 32 MB.
503Fotografia 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ëLlojiTë nevojshmePërshkrimi
modelStringëpoNjë video gjenerator ID nga GET /api/v1/models?type=videoAshtu si veo.
promptStringëpoÇfarë duhet të ndodhë.
durationNumri ose stringjoGjatë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_ratioStringëjoAshtu si "16:9" ose "9:16"një madhësi të tillë si "1280x720" bëhet më e afërt.
resolution
quality
StringëjoNjë 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_urlStringëjoNjë 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.

StatusitKur
400Pë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).
402Pro balancimi nuk mund të mbulojë videon.
404Nuk 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).
429Shkrimi i mëposhtëmTë dhënat tuaja (Video)video_jobs_limitKontrolloni mbi to dhe dërgoni më shumë një herë një përfundon.
502Gjeneratori refuzoi punën. asgjë nuk ngarkohet përveç nëse ofruesi ka faturuar për të.
503Video 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ëLlojiTë nevojshmePërshkrimi
modelStringëjoNjë 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
inputStringëpoTeksti për të lexuar: deri në 800 karaktere për zërin standard, 2,000 për Aura 2.
voiceStringëjoNjë 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.
languageStringëjoKodi 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_formatStringëjoZëri i rregullt kthehet mp3 Aura 2 rikthehet mp3 (Për shkak të defektit) opus, aac, flac, wav ose pcm.
speedNumërjopranuar 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)
StatusitKur
400Nuk 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).
422Zëri nuk flet gjuhën e dhënë, ose modeli nuk ka zë për të.
502Modeli 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ëLlojiTë nevojshmePërshkrimi
languageKërkesë (Query)joVetëm zëra për këtë gjuhë.
modelKërkesë (Query)joVetë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ëLlojiTë nevojshmePërshkrimi
fileArkivëpoRegjistrimi, 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.
modelStringëjodefektë 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ë.
languageStringëjoGjuha e folur, si enzbuluar nëse është lënë jashtë.
promptStringëjoFjalët ose shkronjat për të pritur, të tilla si emrat. përdoret vetëm 1000 karaktere të para.
response_formatStringëjojson (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.

StatusitKur
400Asnjë 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).
402As ekuilibri nuk mund ta mbulojë atë.
413Pë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).
502Thasper 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ëLlojiTë nevojshmePërshkrimi
modelStringëpoNjë model i ndërtuar nga GET /api/v1/models?type=embedding.
inputString ose array i stringpoPë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_formatStringëjofloat (Për shkak të defektit) ose base64 (Little-endian 32-bit fluturues në dispozicion)
dimensionsIntegralejomadhësinë e modelit, ose për një model me supported_dimensions një prej tyre; vektor është shkurtuar dhe normalizuar.
ModelëDimensionetKonteksti
@cf/baai/bge-m31024, shumë gjuhë8,192 tokenë
@cf/qwen/qwen3-embedding-0.6b1024, shumë gjuhë8,192 tokenë
@cf/baai/bge-large-en-v1.51024 në anglisht512 Tifozë
@cf/baai/bge-base-en-v1.5768 në anglisht512 Tifozë
@cf/baai/bge-small-en-v1.5384 në anglisht512 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 }
}
StatusitKur
400Nuk 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).
402Balanca standarde është shumë e ulët. Embeddings kurrë nuk përdorin balancën Pro.
404Asnjë model me këtë emër.
502Modeli 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);