Lumaktaw sa nilalaman
Pagbalik sa Nymbot

Batayan ng kaalaman mga developer

Mga imahe, audio at mga embeddings

Ang mga generator mula sa app, at ang mga building blocks para sa paghahanap: pictures, video, speech, transcription at embeddings, ang bawat isa ay inilathala sa bawat paggamit mula sa iyong balance.

Paggawa ng Images

Makakakuha ng 1 hanggang 4 mga imahe mula sa isang prompt at i-return ang mga ito kapag ang mga ito ay ginawa. Ito ay ang parehong set ng generators tulad ng ?image sa pamamagitan ng app.

POST https://nymbot.ai/api/v1/images/generations — kailangan ng isang API key, o Pagbabayad ng Lightning sa pamamagitan ng request.

Ang mga ito ay mula sa GET /api/v1/models?type=imageAng mga generator, @cf/black-forest-labs/flux-1-schnell, ay nagkakahalaga ng isang flat 5 standard credits (50 sats) isang picture. Ang bawat iba pang generator ay gumagamit ng Pro credits sa kanyang sarili na presyo, na may karaniwang bayaran at margin, tulad ng ang app. n Bilang ng mga gastos n A field a generator does not take is dropped rather than rejected; ang standard generator ay gumagamit lamang ang prompt.

ang fieldTipongKailanganang description
modelang stringOoAng isang generator id, tulad ng nano-banana.
promptang stringOoAno ang upang i-draw? lamang ang unang 2,000 character ay ginagamit.
nang integerHindi1 sa 4.Default 1.Ako rin ay nakatuon bilang num_images.
sizeang stringHindiAng isang aspeto ratio ay tulad ng "16:9"o magkakaiba ng isang openAI size tulad ng "1792x1024", na kung saan ay mas malapit sa 1:1, 16:9, 9:16, 4:3, 3:4, 3:2, 2:3, 21:9, 5:4 at 4:5. "auto" Pumunta ito sa generator.
aspect_ratioang stringHindiAng parehong sizeKung ikaw ay nagkakahalaga, ikaw ay nagkakahalaga ng dalawang.
qualityang stringHindiAng mga generator, tulad ng "low", "medium" o sa "high".
negative_promptang stringHindiAno ang ibig sabihin sa out.
output_formatang stringHindi"png", "jpeg" o sa "webp".
response_formatang stringHindi"url" (Ang pagbabago) o "b64_json".
image_urlang stringHindiAng mga imahe ay nagsisimula sa: a https:// ang link ng higit sa 4,096 character na walang user name o password sa kanya, o isang data:image/…;base64 URL (PNG, JPEG, WebP o GIF; hindi SVG). Iba para sa mga generator na may editAng mga kailangan ng mga requires_image_url.

resolution hindi ginagamit: ang bawat generator ay gumagawa ng kanyang sarili. url, ang bawat imahe ay i-upload sa isang public Blossom host at makakuha ka ng kanyang link (ang ilang mga generator lamang nag-aalok ng isang link ng kanilang sarili, na ay inilathala). Ang mga taong may link ay maaaring i-open ito at ito ay hindi maaaring i-download din; tingnan ang Ano ang dapat makita ng Fireat sa b64_json ang larawan ay bumalik sa reaksyon at hindi mai-upload. Ang isang larawan ay ibinigay bilang isang data: ang url image_url Ito ay tinatanggap ng sama-sama na isang ang edit at i-upload sa Blossom na unang upang ang generator ay maaaring i-recover ito; ito ay i-delete din kung ang request ay hindi dischargeed.

Kung ang ilang mga n ang mga imahe ay batay, ikaw ay makakuha ng mga na nagtatrabaho, ay naka-charge lamang para sa mga (plus ang anumang provider na naka-charge maliban sa pag-aralan), at nymbot.failed Kung ang lahat ng mga ito ay hindi gumagamit, ang mga ito ay hindi gumagamit para sa pagbutihin. 502.

Reaksiyon

{
  "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 ngkapag
400Huwag mag-alala; n 1 sa 4 (invalid_valueMaaring gumawa ng anotasyon (invalid_sizeMaaring gumawa ng anotasyon (invalid_image, invalid_image_url); isang modelo na ginagamit ngunit hindi isang generator ng imahe (invalid_model); isang larawan para sa isang generator na hindi maaaring i-edit (edit_unsupported(Hindi ko alam kung ano ang kailangan ko)image_required).
402Ang balanse ay hindi makukuha ng lahat ng mga larawan na kinakailangan.
404Walang modelo sa pangalan na ito (model_not_found).
502nagtatapos sa tuldok (upstream_errorWalang pag-aalala kung hindi na-aalala ang mga taong nag-aalala; pagkatapos ay mag-aalala ang error. charged_sats.
503Ang mga imahe ay hindi maaaring mag-host sa ngayon (media_hosting_unavailable). b64_json Ngayon ay gumagana.

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

Pag-edit ng Images

Ibalik ang isang imahe na i-upload mo, sumunod sa isang prompt. Ito ay ang edit endpoint ng OpenAI, kaya ang OpenAI SDKs' images.edit Ang mga generator na ito ay may mga generator na edit sa listahan ng modelo ay tumatanggap ito.

POST https://nymbot.ai/api/v1/images/edits — kailangan ng isang API key, o Pagbabayad ng Lightning sa pamamagitan ng requestAng katawan ay multipart/form-dataSa loob ng 32 MB.

ang fieldTipongKailanganang description
imageang fileOoAng imahe upang i-edit: PNG, JPEG, WebP o GIF, hanggang sa 20 MB. image[]Ang unang ito ay ginagamit.
promptang stringOoAno ang changing.
modelang stringOoAng isang generator ay edit.
nang integerHindi1 sa 4
size
aspect_ratio
quality
negative_prompt
output_format
ang stringHindisa pamamagitan ng Generation.
response_formatang stringHindi"b64_json" (Ang default dito) o "url".

Ang imahe na i-upload mo ay i-check na ito ay isang well-formed PNG, JPEG, WebP o GIF, i-send sa bilang ang kanyang tunay na uri, at i-send sa isang public Blossom host, dahil ang mga generator i-pick ang kanilang input sa pamamagitan ng link. I-treat ito bilang public. Kung ang pag-edit ay nangangailangan at walang pag-charge, ang hosted copy ay i-delete din. Ang pag-response ay may parehong shape na para sa generator. Ang presyo ay ang presyo ng generator, na para sa ilang generators ay naglalaman ng isang bayad para sa input picture.

Reaksiyon

{
  "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 ngkapag
400Walang imahe o prompt, isang file na hindi isang imahe (invalid_image), o isang generator na hindi maaaring edit (edit_unsupported).
413Ang larawan ay higit sa 20 MB (file_too_large), o ang buong request ng higit sa 32 MB.
503Huwag kang gagaw ng pasiya na nagmamadali (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"));

ang video

Ang isang video ay nangangailangan ng ilang minuto, kaya ito ay gumagana sa background. I-submit ito, makakuha ng isang id ngayong araw, at magtanong tungkol sa id hanggang ito ay dumating.

POST https://nymbot.ai/api/v1/videos — kailangan ng isang API key, o Pagbabayad ng Lightning sa pamamagitan ng requestPagbalik 202.

ang fieldTipongKailanganang description
modelang stringOoAng isang video generator id mula sa GET /api/v1/models?type=video, tulad ng veo.
promptang stringOoAno ang dapat gawin.
durationMga numero o stringHindiPanatilihin ang pagpapatala para sa isang minimum na dalawang magkasunod na semestre. seconds sa reaksyon at ang presyo ay sumusunod.
aspect_ratioang stringHinditulad ng "16:9" o sa "9:16"Ang isang size ay tulad ng "1280x720" Ito ay ang pinakamataas na ratio.
resolution
quality
ang stringHindiAng isang generator ay resolutions sa listahan ng mga modelo, tulad ng "720p" o sa "1080p"Ito ay nagtatag ng presyo. Ang lahat ng iba ay inihayag sa unsupported_resolution.
image_urlang stringHindiAng mga imahe ay nagsisimula sa: a https:// ang link na a data:image/… URL, na inilabas sa isang public Blossom host unang. Kailangan ng mga generator na may requires_image_url.

Ang presyo ay matatagpuan kapag inilathala mo, mula sa generator, resolusyon at length, kaya ito ay inirerekomenda mula sa iyong Pro balance kapag ang provider ay sumali ng trabaho, at inihayag bilang cost, estimated_cost at nymbotKung ang provider ay humihingi ng trabaho, walang karagdagang karagdagang. Kung ang rendering pagkatapos ay humihingi, o ang nakalipas na clip ay hindi maaaring i-save at ang provider ay hindi na-faktura para sa kanya, ang karagdagang ay i-reimbursado ng isang beses, automatically. Ang isang rendering na ay patuloy pagkatapos ng isang oras ay inihahanda, at matatagpuan ang kanyang karagdagang, dahil ang provider ay inihayag ng isang render kapag ito ay nakuha ito. Ang isang refund ay i-returns ang mga credits ngunit ay hindi humihingi ng key's spending count.

Mga pahinang tumuturo (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 Nagsimula ang in_progresso sa completed Sa video na ngayon ay data Kapag bumalik na ang generator, ipatupad ito.

Tingnan ang isang video

GET https://nymbot.ai/api/v1/videos/{id} - kailangan ng isang key na may pangyayari sa nym na inilathala ito. Ang isang key na nakukuha ng kanyang cap ay maaaring mag-check.

Ang mga response 202 Kapag ang video ay ginawa at 200 kapag ito ay dumating o ay nangangailangan. Ask every 5 to 10 seconds. Each check asks the provider once and answers at pagkatapos; it never waits for the video. A job is kept for 24 hours after it was submitted. GET /api/v1/videos I-list ang last 50 jobs ng key bilang {"object": "list", "data": […]}.

ang napili ng mga taga-hanga:

{
  "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 ay in_progress, completed o sa failedAng isang failed job carries error ({"code": "generation_failed", "message": …}Kapag bumalik na siya, cost ang 0 at nymbot ang adds refunded_credits at refunded_satsAng nakalipas na video ay sa isang public Blossom host, tulad ng mga imahe.

Status ngkapag
400Walang prompt; isang durasyon sa loob ng 0 hanggang 60 (invalid_value); isang resolution na ang generator ay hindi nag-aalok (unsupported_resolution); walang larawan para sa isang generator na kinakailangan ng isang (image_required); isang modelo na hindi isang video generator (invalid_model).
402Ang Pro balance ay hindi makukuha ng video.
404Huwag dry sa banyo (model_not_found), o walang trabaho sa pamamagitan ng id na ito para sa iyong nym, o ito ay higit sa 24 oras na (video_not_found).
429Ang iyong nym na ngayon ay may 10 mga video rendering (video_jobs_limitTingnan ang mga ito at i-submit ang higit sa isang beses sa isang taon.
502Ang generator ay nangangahulugang ang trabaho. Walang karagdagang karagdagang kung ang provider ay naka-charge para sa ito.
503Ang mga imahe kasama sa loob ng file (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);

Text sa pamamagitan ng speech

I-read text at i-return ang audio file na ito, hindi isang link. Ito ay ang OpenAI's speech endpoint, kaya audio.speech.create sa mga OpenAI SDKs ay gumagana.

POST https://nymbot.ai/api/v1/audio/speech — kailangan ng isang API key, o Pagbabayad ng Lightning sa pamamagitan ng request.

ang fieldTipongKailanganang description
modelang stringHindiAng isang speech model mula sa Listahan ng mga Audio ModelAng default ay ang standard voice. @cf/myshell-ai/melotts. aura-2 Ipinanganak ang Deepgram Aura 2.
inputang stringOoAng teksto na ibinigay: hanggang sa 800 character para sa standard voice, 2,000 para sa Aura 2.
voiceang stringHindiisang voice id mula sa ang listahan ng voices: isang Aura speaker tulad ng luna (Ang aura-2-luna-enMga pahinang tumuturo (en, es, fr, zhOpenAI voice names tulad ng alloy ang mga ito at magbibigay ng default voice ng modelo.
languageang stringHindiAng isang language code ay esKung walang isang salita, ito ay piliin ang isa para sa anumang wika. Ang isang salita na nagsasalita ng isang iba pang wika ay bumalik 422 voice_language_mismatch, at isang wika na ang modelo ay walang balita para sa 422 unsupported_language.
response_formatang stringHindiIbalik ang Standard Voice mp3 Aura 2 ay bumalik mp3 (Ang mga sumusunod ay opus, aac, flac, wav o sa pcm.
speedang numberHindiNakalimutan at ignorado ang

Ang standard voice ay nagkakahalaga ng isang flat 3 standard credits (30 sats) isang request, tulad ng sa app. Aura 2 ay Pro, na-priced sa pamamagitan ng mga character na ibinigay mo. Content-TypeAng gastos ay sa X-Nymbot-Cost-Sats If the speech model fails, walang charge.

Reaksiyon

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

(audio bytes)
Status ngkapag
400Walang input; input sa ibabaw ng limitasyon ng modelo (input_too_long); isang format na ang modelo ay hindi maaaring lumikha (unsupported_response_formatang napili ng mga taga-hanga: Unknown (invalid_voiceAng mga ito ay hindi tulad ng isang model (invalid_model).
422Ang salita ay hindi nagsasalita ang wika na ibinigay, o ang modelo ay walang salita para sa kanya.
502Ang modelo ng pag-uusap ay nangangahulugan. walang karapatan.

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 mga modelo at mga voices

Dalawang public na mga listahan para sa pagpilit ng isang modelo ng salita at mga salita, o isang transcription model. Mayroong 41 Aura 2 English speakers at 4 MeloTTS languages.

GET https://nymbot.ai/api/v1/audio/models Hindi kailangan ng key.

GET https://nymbot.ai/api/v1/audio/voices?language=en Hindi kailangan ng key.

ang fieldTipongKailanganang description
languageMga Tiket sa Paglipad (HindiAng mga sumusunod lamang para sa mga ito.
modelMga Tiket sa Paglipad (HindiAng mga ito lamang para sa modelo.

nagtatapos sa tuldok (

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

Mga modelo sa listahan ng mga solusyon {"object": "list", "data": {"tts": […], "stt": […]}}Ang bawat modelo ng pag-uusap ay nagbibigay ng kanyang balanse, presyo, max_input_chars, response_formats, languages at default_voice· ang transcription model ay nagbibigay ng mga aliases, max_file_bytes, max_seconds, format at presyo sa bawat minuto.

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

Tungkol sa Text

Ibalik ang isang pag-record sa teksto gamit ang Whisper. Ito ang transcription endpoint ng OpenAI, kaya audio.transcriptions.create ang trabaho.

POST https://nymbot.ai/api/v1/audio/transcriptions — kailangan ng isang API key, o Pagbabayad ng Lightning sa pamamagitan ng requestAng katawan ay multipart/form-data.

ang fieldTipongKailanganang description
fileang fileOoAng pag-record, mula sa 256 bytes sa 25 MB at hanggang sa 30 minuto: WAV, WebM, MP4 o M4A, Ogg o Opus, MP3 at ang iba pang mga format Whisper reads.
modelang stringHindiang defect whisperAng mga ito ay ang Whisper Large v3 Turbo. whisper-1, whisper-large-v3-turbo at @cf/openai/whisper-large-v3-turbo Siguro ang parehong.
languageang stringHindiAng mga wika, tulad ng enMag-detect kung ikaw ay out.
promptang stringHindiAng mga salita o spelling ay dapat mong mag-atubiling, tulad ng mga pangalan. Ang mga unang 1,000 character lamang ay ginagamit.
response_formatang stringHindijson (Ang mga sumusunod ay text, srt, vtt o sa verbose_json.

Para sa WAV, WebM, MP4 at Ogg file ang length ay inilathala mula sa file bago ang anumang ginagawa, kaya ang isang pag-record ng higit sa 30 minuto ay inilathala up front (sa 3 segundo' grace). Ang length ng isang WAV file ay dumating mula sa kanyang sample rate, mga channel at sample size. Ang length ng iba pang mga format, tulad ng MP3, ay hindi maaaring inilathala up front, kaya sila ay limitado sa size: sa mas mababang bitrate Nymbot ay sumulat, 8 kbps, 30 minuto ay 1.8 MB, at isang mas mataas na file sa format na ito ay inilathala sa 413 audio_too_long Magpadala ng mas mahabang mga recordings tulad ng WAV, WebM, MP4 o Ogg. Kung ang Whisper pagkatapos ay nag-report ng higit sa 30 minuto kahit na, ang request ay inihayag sa pamamagitan ng 413 audio_too_long, at dahil ang Whisper ay dumating, 30 minuto ay naka-charge.

Maaari mong bayaran para sa length ng audio, rounded up to the second: ang pinakamalaking ng length read mula sa file, ang length Whisper reports, at ang pinakamalaking size ng file ay nagbibigay-daan, sa Whisper's per-minute na presyo na may ang karaniwang fee at margin, at hindi bababa sa 0.05 credit a request. It's paid from the standard balance when that can cover the hold, and from Pro otherwise; 402 Nagbibigay ang kung ano ang kailangan ng bawat balanse. Sa app, ang pag-transcript ng isang voice message ay maaaring libre; sa API ito ay karaniwang na-charge. Kung ang Whisper ay hindi kailangang, walang pag-charge.

Reaksiyon

{
  "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 Ibalik ang mga teksto, srt at vtt Ibalik ang mga subtitles, at verbose_json Ipasok ang language, duration at timed segments. Para sa tatlong na hindi JSON, ang gastos ay sa mga headers.

Status ngkapag
400Walang file, isang file na walang usable audio (invalid_audioAng maliliit na negosyo sa mga sumusunod na sektor ay kinakailangan (invalid_model).
402Walang balanse ay maaaring mapupunta ito.
413Ang file ay higit sa 25 MB (file_too_largeAng mga sumusunod na mga sumusunod na mga sumusunod na mga sumusunod na mga sumusunod na mga sumusunod na mga sumusunod na mga sumusunod na mga sumusunod na mga sumusunod na mga sumusunod na mga sumusunod na mga sumusunod na mga sumusunod na mga sumusunod na mga sumusunod na mga sumusunod na mga sumusunod na mga sumusunod na mga sumusunod na mga sumusunod na mga sumusunod na mga sumusunod na mga sumusunod na mga sumusunod na mga sumusunod na mga sumusunod na mga sumusunod na mga sumusunod na mga sumusunod na mga sumusunod na mga sumusunod (audio_too_long).
502Hindi ko alam kung ano ang dapat gawin ng audio, hindi ko alam.

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

Translated sa English

POST https://nymbot.ai/api/v1/audio/translations — kailangan ng isang API key, o Pagbabayad ng Lightning sa pamamagitan ng requestAng katawan ay multipart/form-data.

Samakatuwid na ang transcription, na may parehong mga fields sa pagitan ng language, limitasyon at presyo, ngunit ang teksto ay bumalik sa Ingles kung saan ang wika ay nagsasalita. 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);

Mga Embedded

I-convert text sa vectors para sa paghahanap, clustering at deduplication. Ang mga modelo ay gumagana sa Cloudflare at gumagamit ang standard balance.

POST https://nymbot.ai/api/v1/embeddings — kailangan ng isang API key, o Pagbabayad ng Lightning sa pamamagitan ng request.

ang fieldTipongKailanganang description
modelang stringOoAng isang model na mula sa GET /api/v1/models?type=embedding.
inputang string o array ng stringsOoPumili ng kategorya, gaya ng mga gasolinahan o grocery store, o maghanap ng partikular na uri ng lugar. (token_input_unsupportedAng bawat input ay dapat matugunan sa modelo context_lengthAng mga ito ay tungkol sa 4 bytes ng isang token.
encoding_formatang stringHindifloat (Ang pagbabago) o base64 (Ang iba pang 32-bit floats)
dimensionsang integerHindiAng modelo ng sarili, o para sa isang modelo na may supported_dimensions Ang mga ito ay nagtatagumpay at normalized, at ang lahat ng bagay ay hindi.
ang modelMga Dimensyonang konteksto
@cf/baai/bge-m31024, maraming mga wika8,192 mga token
@cf/qwen/qwen3-embedding-0.6b1024, maraming mga wika8,192 mga token
@cf/baai/bge-large-en-v1.51024 sa English512 Mga pahinang
@cf/baai/bge-base-en-v1.5788 sa English512 Mga pahinang
@cf/baai/bge-small-en-v1.5384 sa English512 Mga pahinang

Ang listahan ng mga modelo ay ang kilala ng katotohanan para sa kung ano ang magagamit at kung ano ang mga ito ay nagkakahalaga; ang EmbeddingGemma ng Google, na may mas mababang vector sa pag-aari, ay matatagpuan dito din kapag ang catalog ay may isang presyo para sa kanya.

Reaksiyon

{
  "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 ngkapag
400Huwag kang gagaw ng pasiya na nagmamadali. ipatupad ito at ipatupad ito.token_input_unsupported(Pero sa loob ng isang taon na ang nakalipas)too_many_inputs); ang input ay higit sa ang modelo ay gumagamit (input_too_long(Hindi ko alam kung ano ang ibig sabihin ng modelo)unsupported_dimensions).
402Ang standard balance ay mas mababang. Ang mga embeddings ay hindi gumagamit ng Pro balance.
404Walang model sa pangalan na ito.
502Ang modelo ay nangangahulugang. walang charge.

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