Holo i ka ʻike
Hoʻi i Nymbot

kahua ʻike Nā mea kūkulu polokalamu

Nā kiʻi, leo, a me nā embedding

Nā mea hana mea kūkulu mai ka polokalamu, a me nā mea kūkulu no ke ʻimi ʻana: nā kiʻi, video, ʻōlelo, ka hāʻawi ʻana i ka huaʻōlelo, a me nā embeddings, ʻo ia a pau ka uku ʻana i kēlā me kēia hoʻohana mai kou pūnaewele loauna.

Ke hana ʻana i nā kiʻi

He mau kiʻi he ʻelua a he ʻena ka mea hana mai kahi ʻōlelo a ka mea hana e hoʻihoʻi mai i ia lā i ka pau ʻana. He pūʻolo hana pū kekahi mai ?image i loko o ka polokalamu.

POST https://nymbot.ai/api/v1/images/generations — pono i kahi API key, a i ʻole he kālā Lightning ma kēlā me kēia petuke.

Mai nā mea e hiki mai ai nā ID GET /api/v1/models?type=imageʻO ka mea hana maʻamau, @cf/black-forest-labs/flux-1-schnell, kūpono 5 mau kumu waiwai standard (50 sats) no kahi kiʻi. Kūkiʻi ʻia kēlā me kēia mea hana ma o nā kumu waiwai Pro ma ko lākou kumu ponoʻī, me ka uku maʻamau me ka pae kumu, eia pēlā i ka polokalamu. n keakahia o nā kiʻi n nuʻi i ka nui iho. He papa i ʻole i ka hana ʻana o ka hoʻonānoho ʻana, ua nalo ia ma mua o ka ʻole e ʻae; he mea hoʻohana wale i ka hoʻōmolomolo ka hoʻonānoho maʻamau.

MāheleʻOleloPonoKāʻano
modelleleʻAeHe ʻilese hana, eia pēlā me nano-banana.
promptleleʻAeHe aha e papaia ai. ʻO ka 2,000 mua wale nō o nā huaʻōlelo e hoʻohana ʻia.
nhelu pololeiʻAʻole1 a 4. Kumu 1. Hiki nō ke ʻae pū ʻia ma ke ʻano he num_images.
sizeleleʻAʻoleHe kumu palapala pēlena e like me "16:9", a iole OpenAI loaʻa e like me "1792x1024", e lilo ana i ka mea hiki loa o 1:1, 16:9, 9:16, 4:3, 3:4, 3:2, 2:3, 21:9, 5:4 a me 4:5. "auto" hoʻolele iā ka mea hana.
aspect_ratioleleʻAʻoleMe he size, a e lanakila inā i hoʻouna ʻia ʻelua.
qualityleleʻAʻoleKūpono i ka mea hana, e like me "low", "medium" aʻole "high".
negative_promptleleʻAʻoleHe aha e haʻalele ai.
output_formatleleʻAʻole"png", "jpeg" aʻole "webp".
response_formatleleʻAʻole"url" (ka mea kapa ʻia ʻia) a "b64_json".
image_urlleleʻAʻoleHe kiʻi e hoʻomaka ai: he https:// ala o ka wiki o ka ʻana i ka nui ʻole o nā helu 4,096 me ka ʻole o kekahi inoa mea hoʻohana a me kekahi ʻōlelo hūnā i loko, a i ʻole kekahi data:image/…;base64 URL (PNG, JPEG, WebP a i GIF; ʻaʻole SVG). No nā mea hana wale nō me ka edit; pono kēia e nā poʻe i loaʻa requires_image_url.

resolution ʻaʻole i hoʻohana ʻia: ʻo kēlā me kēia mea hana e hana ana i kona nui ponoʻī. Me url, ʻo ia kēlā kiʻi a pau i hoʻouna ʻia i kahi Blossom host pololei a loaʻa ʻoe i kona lālā (he mau mea hana wale nō i hoʻolele i ka lālā pono ʻana, i manaʻo ʻia he lālā o ia)? ʻO ka mea loaʻa kēlā me kēia i ka lālā hiki ke wehe iā ia a ʻaʻole hiki ke wehe ʻia hou; e nānā ka mea i hiki ai i ka API ke ʻikeMe b64_json ʻO ka kiʻi e hoʻi mai nei i ka pane a ʻole e hoʻouna ʻia mai. He kiʻi i hoʻouna ʻia ma ke ʻano he data: URL i loko image_url heia ʻia paha e like me kekahi an hoʻoponopono a me uka ʻia i Blossom mua i mea e loaʻa ai e ka mea hana; mea ʻole ʻo ia inā lilo ka uka me ka ʻole o ka uku.

Inā heke wai o ka n hōʻike ʻole nā kiʻi, loaʻa iā ʻoe wale nō nā i kūpono, e uku ʻia ʻoe no helu wale ʻia kēlā (me nā mea i kōkua ai ka mea loaʻa ʻia ʻole), a me nymbot.failed e ʻōlelo he aha ka nui o ka mea i nele nei. Inā hela a pau, e hoʻi mai ka ulu ʻōlelo 502.

A'ohe mea pane

{
  "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 }
}
KāleleʻAeʻe?
400ʻAʻole he kukuke; n waho mai 1 a me 4 (invalid_value); he nui loa a he iti loa (invalid_size) a kiʻi (invalid_image, invalid_image_url); he maukiʻi e loaʻa ana akā ʻaʻole he mea hana kiʻi (invalid_model); he kiʻi no he mea hana i hiki ʻole ke hoʻololi (edit_unsupported); ʻaʻohe kiʻi no kekahi i makemake ʻia (image_required).
402ʻAʻole hiki i ka pūlua ke kākoho i kēlā me kēia kiʻi i noi ʻia.
404ʻAʻole he moʻielele kēlā inoa (model_not_found).
502Ua hāʻule ka mea hana ʻelā (upstream_error). ʻAʻohe mea e lawe aku ʻia inā ʻaʻole ua kākoʻo ka mea ʻenaʻe i ka hoʻāʻo; i mea ʻo ia, ua loaʻa ka hewa charged_sats.
503ʻAʻole hiki ke hoʻokhala i nā kiʻi i kēia manawa (media_hosting_unavailable). b64_json e hala wale nei.

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

Hoʻololi i nā kiʻi

Hoʻololi i ke kiʻi i hōʻouna ʻia nei, ma muli o ka ʻōlelo hoʻāla. ʻO kēia ka wahi hoʻololi o OpenAI, no laila nā OpenAI SDKs'... images.edit hana ana i kēlā me kēia. He mea hana Pro wale nō me... edit i loko o ka papa inoa modele e loaʻa ai ia.

POST https://nymbot.ai/api/v1/images/edits — pono i kahi API key, a i ʻole he kālā Lightning ma kēlā me kēia petukeʻO ka kino ʻo multipart/form-data, hiki i ka 32 MB.

MāheleʻOleloPonoKāʻano
imagepapa ʻikeʻAeKa kiʻi e hoʻololi ai: PNG, JPEG, WebP a i ʻole GIF, hiki i ka 20 MB. Paʻa pū ʻia pēlā ma image[]; ʻo ka mea mua ka mea i hoʻohana ʻia.
promptleleʻAeHe aha ka mea e hoʻololi ai.
modelleleʻAeHe mea hana mea hana me edit.
nhelu pololeiʻAʻole1 a 4.
size
aspect_ratio
quality
negative_prompt
output_format
leleʻAʻoleNo ka hana ʻana.
response_formatleleʻAʻole"b64_json" (ka mea kumu ma kēia) a i ʻole "url".

E nānā ʻia ka kiʻi i hōʻoia ʻia he PNG, JPEG, WebP a i ʻole GIF kūpono, i hoʻouna ʻia ma kona ʻano maoli, a i ka mea e hoʻokohina ʻia ana ma kahi Blossom hou kēlā me kēia, no ka mea, e loaʻa ana ka mea hoʻomaka ma o ka lālā. E manaʻo he mea kōpala ia. Inā lopsia ka hoʻololi a ʻaʻole lawa ka uku, e wehe ʻia hou ka kākoʻo i hoʻokohina ʻia. He like ke ʻano o ka pane me ka hana hoʻomaka ʻana. ʻO ke kumuhana o ke uku ka uku o ka mea hoʻomaka, ʻo ia paha e pili ana i ka uku no ka kiʻi i hoʻohana ʻia no kekahi mau mea hoʻomaka.

A'ohe mea pane

{
  "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 }
}
KāleleʻAeʻe?
400ʻAʻole mau nā kiʻi a i ʻole nā ʻōlelo hoʻohāpana, he faila ʻole he kiʻi (invalid_image), a mea hana ʻai ʻole e hiki ai ke hoʻololi (edit_unsupported).
413He nui aʻe ka kiʻi ma mua o ka 20 MB (file_too_large), a i ʻole ka mea i ʻoi aku ma mua o 32 MB ka nui o ka noi ʻia ʻia nei.
503ʻAʻole hiki ke hoʻokipa ʻia ka kiʻi i kēia manawa (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"));

Wikihoʻihoʻike 🎥

He minaka ka wikiō, no laila e hana ana ia ma hope. Hoʻouna ʻia ia, loaʻa koke kekahi id, a nānā i kēlā id a hiki i ka pau ʻana. Hoʻohana i ka pūʻulu Pro nā mea hana wikiō kēlā me kēia.

POST https://nymbot.ai/api/v1/videos — pono i kahi API key, a i ʻole he kālā Lightning ma kēlā me kēia petuke. Nā mea e hoʻi mai nei 202.

MāheleʻOleloPonoKāʻano
modelleleʻAeHe ʻoluʻolu hana wikiō ʻia mai naʻe GET /api/v1/models?type=video, eia nā laʻau, e like me veo.
promptleleʻAeHe aha kā laila e pono ai.
durationhelu a i ʻole lālāleleʻAʻoleKa lōʻihi ma nā sekelyia, he nui aʻe i ka 0 a hiki i ka 60. Hoʻohana ʻia e nā mea hana wale i hiki iā ʻoe ke koho i ka lōʻihi; ʻo nā mea ʻē aʻe, ke hana nei lākou i kā lākou lōʻihi noʻeau, ʻo ia paha ka mea ʻo ia seconds i loko o ka pane a me ke kumuhana e hiki mai ana.
aspect_ratioleleʻAʻoleEia nā laʻana e like me "16:9" aʻole "9:16"; he nui e like me "1280x720" lilo i ka palapala helu hiki loa.
resolution
quality
leleʻAʻoleʻEkahi o ka mea hana ʻelekino resolutions i ka papa inoa moʻielele, e like me "720p" aʻole "1080p". He ia ka mea e hoʻohana ai i ke kumu kūʻai. He mea ʻē aʻe kēlā me kēia i kūʻai ʻia me unsupported_resolution.
image_urlleleʻAʻoleHe kiʻi e hoʻomaka ai: he https:// pūnaewae a i ʻole a data:image/… URL, i mea e hoʻouna ʻia ai i kahi Blossom host mea loaia mua loa. Pono ʻia e nā mea hana me requires_image_url.

He kumu kūpaʻa ka nui i ka wā e hoʻouna ai ʻoe, ma muli o ka mea hana, ka resolution, a me ka lōʻihi, no laila e hoʻonui ʻia ʻia mai kou pūnaewele Pro i kēlā manawa hoʻi i loaʻa ai ka hana i ka mea hana, a hōʻike ʻia ʻia pēlā. cost, estimated_cost a nymbotInā kūʻole ka mea hana i ka hana, ʻaʻole e uku ʻia kekahi mea. Inā hapawe ka hāʻawi ʻana i ka pūnaewele, a ʻaʻole hiki ke hoʻapena ka ʻeleʻele i ka hope loa, a ʻaʻole i uku ka mea hana, e hoʻiʻou ʻia ka uku lilo i lilo ʻole, ma o ka hana pololei. ʻO ka render i loaʻa ʻole i loko o ka hola ʻekahi, e lawe ʻia ia, a e mālama ʻia nō kona uku, no ka mea e uku ka mea hana i ka render بمana ia loaʻa ka ʻae. ʻO ka hoʻiʻou ʻana i ka uku, e hoʻihoʻi ana i nā koke (credits) akā ʻaʻole e hoʻonui i ka nui o ka loaʻa o ka kī.

Kālia (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 hoʻomaka ʻia ʻo in_progress, a completed me ke wikio aia i loko data i ka manawa i hoʻi mai ai ka mea hana mea hauʻoli i kēlā auʻi loa.

E nānā ana i kekahi wikiō

GET https://nymbot.ai/api/v1/videos/{id} — pono he pohaku e like me ka inoa i hoʻouna ʻia iā ia. He pohaku i hiki i kona nui ke nānā pēlā.

He pane ia ia 202 i ka wā e hana ʻia ana ka wikiō a 200 inā ua pana ʻia a i ʻole ua hāʻule. Nānā i kēlā me kēia 5 a i nā 10 sekia. ʻO kēlā me kēia nānā e nānā ana i ka mea ʻikepili he una nō a pane nō i kēlā manawa; ʻaʻole ia e kali i ka wikiō. Ke mālama ʻia kahi hana no nā 24 hola ma hope o kona hoʻouna ʻana. GET /api/v1/videos ʻO nā hana 50 hope o ka mea kī ma ke ʻano he {"object": "list", "data": […]}.

Ka pane (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 he in_progress, completed aʻole failed. A he hana i hāʻule e lawe mai ana error ({"code": "generation_failed", "message": …}); inā ua hoʻi mai ʻia, cost he 0 a me nymbot hoʻohui refunded_credits a refunded_satsUa loaʻa ka wikiō i loaʻa i ka hope ma luna o kahi Blossom host pololei, e like me nā kiʻi i hana ʻia.

KāleleʻAeʻe?
400ʻAʻole he ʻōlelo; he manawa ma waho o 0 a me 60 (invalid_value); he manaʻo ʻole ʻia e ka mea hana resolution (unsupported_resolution); ʻaʻole he kiʻi no ka mea hana mea hana e pono ai kekahi (image_required); he māhele ʻole he mea hana wikiō i ka māhele (invalid_model).
402ʻAʻole hiki i ka pūʻolo Pro ke huli i ka wikiō.
404ʻAʻole he mea hana pēlā (model_not_found), a ʻole he hana ʻole ma kēlā inoa no kou inoa, a ʻo ia kekahi mea i unuhi ʻia ma mua o nā hola 24 (video_not_found).
429Ua loaʻa iā ʻoe nā wikiō 10 e hana ʻia nei i kēia manawa (video_jobs_limit). E nānā iā lākou a hoʻouna mai i kekahi ʻē a hiki i kekahi i pau ai.
502Ua kūʻolelo ka mea hana i ka hana. ʻAʻole e lawe i ka uku he aha lā, inā ʻaʻole ka mea lawelawe i uku iā ia.
503Nā wikiō ʻaʻole hiki ke hoʻouna ʻia a i ʻole e waiho ʻia i kēia manawa (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);

Leo i ka ʻōlelo ʻono

Hoʻonanea i ka leka me ka leo a e hoʻi mai ai ka faila leo ponoʻī, ʻaʻole he pūlinki. He OpenAI speech endpoint kēia, no audio.speech.create e hana ana i loko o nā OpenAI SDKs.

POST https://nymbot.ai/api/v1/audio/speech — pono i kahi API key, a i ʻole he kālā Lightning ma kēlā me kēia petuke.

MāheleʻOleloPonoKāʻano
modelleleʻAʻoleHe ʻōlelo ma hope o ka papa inoa o nā māhele leo. Ka mea kumu: ka leo kūpono, @cf/myshell-ai/melotts. aura-2 He Deepgram Aura 2.
inputleleʻAeKa leo maʻamau, hiki i nā helu 800 i luna, no Aura 2, hiki i nā helu 2,000 i luna.
voiceleleʻAʻoleHe hōʻike leo mai ka papa inoa o nā leo: he ʻeu leo Aura pēlā e luna (a ʻo aura-2-luna-en), a MeloTTS ʻōlelo (en, es, fr, zh). Nā inoa leo OpenAI e like me alloy e loaʻa nei a hāʻawi i ka leo kumu o ka māhele.
languageleleʻAʻoleHe kumu ʻōlelo pēlā me es. ʻOle i keke leo, ke koho nei ia i keke leo no ia ʻōlelo. He leo e ʻōlelo ana i kekahi ʻōlelo ʻē aia e hoʻi mai ana 422 voice_language_mismatch, a me he ʻōlelo ʻaʻole loa ia ʻole ka leo o ka mōʻahuahu 422 unsupported_language.
response_formatleleʻAʻoleUlu mai ka leo kumu mp3 ‘O ia pālā. He mea e ho‘i mai nei ka Aura 2 mp3 (ka mea kumu), opus, aac, flac, wav aʻole pcm.
speedheluʻAʻoleA ʻae ʻia a ʻole i mālama ʻia.

He kumuwaiwai ka leo maʻamau, he 3 kumuwaiwai maʻamau (30 sats) kēlā me kēia wikiʻō, e like me ka polokalamu. ʻO Aura 2 he Pro, ke kumu kūʻai ʻia nei ma o nā helu ʻōlelo ʻia ʻia. ʻO ka kumu o ka pane ʻia, ʻo ka leo, me ka maikaʻi e like pū ana Content-Type; ke kumuhana nei i ka X-Nymbot-Cost-Sats kumuhoʻomao. Inā hōʻolele ʻole ka ʻōlelo kahu, ʻaʻole he uku ʻia kekahi mea.

A'ohe mea pane

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

(audio bytes)
KāleleʻAeʻe?
400ʻAʻole i hea ka hāʻawi ʻike; ua ʻoi aku ka hāʻawi ʻike ma mua o ka pākela o ka kumu iʻano (input_too_long); he ʻano kālaiho ʻaʻole hiki i ka ʻano kōkua ke hana i (unsupported_response_format); he leo ʻole ʻia (invalid_voice); he kumu hana ʻole he kumu hana ʻōlelo (invalid_model).
422ʻAʻole ʻōlelo ka leo i ka ʻōlelo i hāʻawi ʻia, a i ʻole ʻaʻole loa ia ʻole ka mōʻelelo i ka leo no ia.
502Ua hāʻule ka ʻōlelo polokalamu. ʻAʻole i uku ʻia he mea.

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

Nā mōʻielele leo a me nā leo

Lua ʻe mau papa inoa hoʻolaha no ka hoʻopili ʻana i kahi ʻano ʻōlelo a me kahi leo, a i ʻole kahi ʻano heluhelu ʻōlelo. He 41 ka mea ʻōlelo Aura 2 ʻōlelo Pelekia a ʻehā MeloTTS ʻōlelo.

GET https://nymbot.ai/api/v1/audio/models — ʻaʻole pono he pohiʻena.

GET https://nymbot.ai/api/v1/audio/voices?language=en — ʻaʻole pono he pohiʻena.

MāheleʻOleloPonoKāʻano
languagelālā (nānā)ʻAʻoleNā leo wale no no kēia ʻōlelo.
modellālā (nānā)ʻAʻoleNā leo wale no no kēia māhele.

Kāpileina (leo)

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

Ke papa inoa o nā mōhele ka pane {"object": "list", "data": {"tts": […], "stt": […]}}ʻO kēlā me kēia māhele ʻōlelo e hāʻawi ana i kona kākoʻohaʻa, ke kumukūʻana, max_input_chars, response_formats, languages a default_voice; ka ʻano hana heluhelu ʻana i hāʻawi i nā inoa like, max_file_bytes, max_seconds, nā ʻano a me ke kumukūʻai i ka minaka.

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

Ka ʻōlelo i ka helu ʻōlelo ʻia

Loli i ka hoʻopaʻa leo i ka leka ma o ka Whisper. He kēia ka wahi hope no ka hōʻoia ʻōlelo o OpenAI, no laila audio.transcriptions.create hana loa.

POST https://nymbot.ai/api/v1/audio/transcriptions — pono i kahi API key, a i ʻole he kālā Lightning ma kēlā me kēia petukeʻO ka kino ʻo multipart/form-data.

MāheleʻOleloPonoKāʻano
filepapa ʻikeʻAeKa hoʻihoʻi ʻana, mai 256 bytes a hiki i 25 MB a hiki i 30 minaka: WAV, WebM, MP4 a i ʻole M4A, Ogg a i ʻole Opus, MP3 a me nā ʻano ʻē aʻe i heluhelia e Whisper. He loea 1.8 MB nā MP3 a me nā ʻano ʻē aʻe i ʻole hiki ke heluhelia ka lōʻihi ma mua o ka hoʻomaka ʻana.
modelleleʻAʻoleKa mea i hoʻonohonoho ʻia whisper, ʻo Whisper Large v3 Turbo. whisper-1, whisper-large-v3-turbo a @cf/openai/whisper-large-v3-turbo pilikia he mau mea like ʻole.
languageleleʻAʻoleʻO ka ʻōlelo ʻana, e like me enʻAe, ʻike ʻia inā haʻalele ʻia.
promptleleʻAʻoleNā huaʻōlelo a i ʻole nā ʻele ʻण kapa e laho ana, e like me nā inoa. ʻO ka 1,000 o ka mua wale nō o nā helu ʻana e hoʻohana ʻia.
response_formatleleʻAʻolejson (ka mea kumu), text, srt, vtt aʻole verbose_json.

No nā faila WAV, WebM, MP4 a me Ogg, heleia ka lōʻihi mai ka faila ma mua o ka hoʻomaka ʻana i kekahi mea, no laila ʻaʻole loaʻa ka hoʻopaʻa ʻana ma mua o nā minuke 30 (me 3 sekole ke kūpono). ʻO ka lōʻihi o ka faila WAV, he mea ia e lawe ʻia mai ana mai ka pūʻolo lōʻihi, nā lālā, a me ka nui o ka pūʻolo. ʻAʻole hiki ke heleia ka lōʻihi o nā ʻano ʻē aʻe, e like me ka MP3, ma mua o ka hoʻomaka ʻana, no laila ʻo ka nui ka mea e hāʻawi i ka pōʻole: ma ka bitrate i lalo loa i manaʻo ʻia e Nymbot, 8 kbps, ʻo nā minuke 30 ʻo ia ʻaʻole mai 1.8 MB, a ʻaʻole loaʻa ka faila nui aʻe i kēlā ʻano faila me 413 audio_too_long aʻo ka hoʻomaka ʻana i kēlā me kēia mea. Hoʻouna i nā hoʻopaʻa lōʻihi ma ke ʻano he WAV, WebM, MP4 a i ʻole Ogg. Inā ʻoi aku ma mua o ka 30 minaka kā laila ka hōʻike ʻana a Whisper, e lawe ʻia i ka ʻole ʻia o ka ulu ʻana me 413 audio_too_long, a i mea no, mai ka neʻe ʻana ʻana o Whisper, 30 mau minaka e hoʻopuka ʻia nei.

Ke kākoʻo ʻia ke kākoʻo ʻia ʻia ka hola o ka leo, e hoʻonui ʻia i ka sekia: ka hola lōʻihi loa o ka hola i helu ʻia mai ka faila, ka hola i hōʻike ʻia e Whisper, a me ka hola i loaʻa maikaʻi ʻia e ka nui o ka faila, ma ke kumuhana o Whisper no ka minaka me ka uku maʻamau a me ka pūlea, a me ka ʻana i kēlā ʻaoʻao ʻana i ka 0.05 credit no ka ʻimi ʻana ʻana. He kākoʻo ʻia ia mai ka pūʻolo maʻamau inā hiki i kēlā ke kākoʻo i ka hoʻomau ʻana, a mai Pro inā ʻaʻole; a 402 e hāʻawi ana i ka mea pono ʻia o kēlā me kēia ola. Ma ka polokalamu, hiki ke ʻole ka uku o ka unuhi ʻana i kekahi leo; ma ka API, e uku kēlā me kēia manawa. Inā hāʻule ʻaʻole Whisper, ʻaʻohe mea e uku ʻia.

A'ohe mea pane

{
  "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 hoʻi mai i ka leo maʻalahi, srt a vtt hoʻihoʻi i nā pākuʻikui ʻōlelo, a me verbose_json hoʻemi i ka ʻōlelo, ke wā, a me nā ʻāpana i hoʻonohonoho ʻia i ka manawa. No ka ʻelua i ʻole he JSON, ke kaiāulu nei ke kumuhana i nā ʻulawe.

KāleleʻAeʻe?
400ʻAʻole he faila, he faila me ka leo ʻole e loaʻa ana (invalid_audio), he mau papa ʻano ʻole ʻia, a he kahu ʻole ia e he nui i ka hoʻololi ʻōlelo (invalid_model).
402ʻAʻole hiki i kekahi mea loaʻa i ka loaʻa e cover i kēia.
413ʻO ka faila he nui aʻe ma mua o 25 MB (file_too_large) a i ka hoʻiʻolu ʻana ma luna o nā minute 30, a i ʻole, i kahi ʻano kākoʻo ʻole e hiki ai ke heluhelu ʻia ka lōʻihi ma mua, ma luna o 1.8 MB (audio_too_long).
502ʻAʻole hiki iā Whisper ke hoʻonāwai i ka leo. ʻAʻole i uku ʻia.

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

Hoʻololi ʻana i ka ʻōlelo i ka ʻōlelo Pelekānia

POST https://nymbot.ai/api/v1/audio/translations — pono i kahi API key, a i ʻole he kālā Lightning ma kēlā me kēia petukeʻO ka kino ʻo multipart/form-data.

E like pū me ke kākau ʻana, me nā kiʻekiʻe pū ke like me nā mea ʻē aʻe ma mea ʻole language, nā palena me ka kelea, akā e hoʻi mai ana ka lehua ma ka ʻōlelo Pelekane, regardless poa ka ʻōlelo i ʻōlelo ʻia. ʻO ka ʻōlelo ʻana o nā OpenAI SDKs ʻo ia me 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);

Nā mea i hoʻokona ʻia

Hoʻololi i ka ʻōlelo i nā vector no ke ʻimi ʻana, ke hui ʻana me ke ʻano like, a me ka hoʻopau ʻana i ka ʻaoʻao like. E neʻe ana nā māhele ma luna o Cloudflare a e hoʻohana i ka loaʻa maʻamau.

POST https://nymbot.ai/api/v1/embeddings — pono i kahi API key, a i ʻole he kālā Lightning ma kēlā me kēia petuke.

MāheleʻOleloPonoKāʻano
modelleleʻAeHe māhele kumu mai nā GET /api/v1/models?type=embedding.
inputlele ʻana a i ʻole papa lele ʻana o nā leleʻAeKa ʻōlelo e hoʻokemena ai, hiki i nā huaʻōlelo ʻole ka ʻole o ka 100. ʻAʻole loaʻa nā papa token (token_input_unsupported). Pāpā kikoʻio ʻoia a pau e kūpono ai i ka māhele o ka>: context_length, helu ʻia e like me nā ʻehā byte he ʻehā i kēlā ʻemi hōʻike.
encoding_formatleleʻAʻolefloat (ka mea kapa ʻia ʻia) a base64 (nā pūlea 32-bit little-endian).
dimensionshelu pololeiʻAʻoleKa nui o ke model ponoʻī, a i ʻole no kahi model me supported_dimensions ʻole kekahi o ia; ua pōkole ʻia a ʻo ia pū hou ʻia ka vector. ʻAʻole ʻia kekahi mea ʻē aʻe.
Mẫu kailāNā Waiwai NuiKa Papaʻohona
@cf/baai/bge-m31024, nā ʻōlelo he nui8,192 mau ʻōlelo hōʻike
@cf/qwen/qwen3-embedding-0.6b1024, nā ʻōlelo he nui8,192 mau ʻōlelo hōʻike
@cf/baai/bge-large-en-v1.51024, ʻEoʻeolelo512 mau ʻōlelo
@cf/baai/bge-base-en-v1.5768, ʻŌlelo Pelekane512 mau ʻōlelo
@cf/baai/bge-small-en-v1.5384, ʻŌlelo Pelekāne512 mau ʻōlelo

ʻO ka papa inoa o nā kumu hoʻohālikelike ka puna puna o ka ʻike no ka mea i loaʻa ana a me kā lākou kumuhana; ʻo Google's EmbeddingGemma, me nā vektora pōkole inā ʻia, he mea e hōʻike ʻia ana ma ia lā pū ʻia inā loaʻa ka kumuhana ma ka puke inoa. Ke nānā ʻia nā embeddings ma o nā token i hōʻea ʻia, a ʻo ka nui ʻana o 0.05-credit ka mea e kū nei no kēlāme kēia kōkua, ʻae, ʻaʻole no kēlāmeia mea i hōʻea ʻia, no laila ʻo ka hui ʻana i nā leo he nui i loko o ka mea hoʻohana ʻekahi ka mea i uʻi loa ma mua o ka hoʻouna ʻana iā lākou i kēlāmeia kōkua.

A'ohe mea pane

{
  "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 }
}
KāleleʻAeʻe?
400ʻAʻole he mea hoʻokomo a he mea ʻole; nā papa token (token_input_unsupported); nui aʻe i ka 100 mau mea hoʻokomo (too_many_inputs); he mea hoʻolele lōʻihi ma mua o ka mea e loaʻa ana i ke kumu hoʻohana (input_too_long); he nui a i ʻole hiki ke hāʻawi ʻia e ka mōʻkā (unsupported_dimensions).
402Heiaia ka loaʻa i ka mea maʻamau he haʻahaʻa loa. ʻAʻole mau hoʻohana ʻia e nā embedding ka loaʻa Pro.
404ʻAʻole ia ʻano ʻelele embedding.
502Ua hāʻule ka māhele. ʻAʻole i uku ʻia kekahi mea.

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