Преминете към съдържанието
Обратно към Nymbot

База знания Разработчиците

Снимки, аудио и вграждания

Генераторите от приложението и строителните блокове за търсене: снимки, видео, реч, транскрипция и вграждания, всеки от които се начислява на употреба от вашия баланс.

генериране на изображения

Създава от една до четири снимки от известие и ги връща, когато са завършени. ?image в приложението .

POST https://nymbot.ai/api/v1/images/generations — се нуждае от API ключ, или Плащане на Lightning по заявка.

Идът идва от GET /api/v1/models?type=imageСтандартният генератор @cf/black-forest-labs/flux-1-schnell, струва плосък 5 стандартни кредити (50 sats) на снимка. Всеки друг генератор харчи Pro кредити на своя цена, с обичайната такса и марж, както в Приложението. n Снимките струват n Полето, което генераторът не взема, е отпуснато, а не отхвърлено; стандартният генератор използва само поканата.

полетоТипНеобходимиОписание на
modelСтрийтдаИД генератор, като например nano-banana.
promptСтрийтдаИзползвайте само първите 2000 символа.
nинтегритетне1 до 4. по подразбиране 1. Също така се приема като num_images.
sizeСтрийтнеЕдна част от съотношението като "16:9", или размер на OpenAI като "1792x1024", което става най-близкото от 1:1, 16:9, 9:16, 4:3, 3:4, 3:2, 2:3, 21:9, 5:4 и 4:5. "auto" Оставете го на генератора.
aspect_ratioСтрийтнеСъщото като sizeи печели, ако и двамата са изпратени.
qualityСтрийтнеСпецифични генератори, като "low", "medium" или "high".
negative_promptСтрийтнеКакво да оставим.
output_formatСтрийтне"png", "jpeg" или "webp".
response_formatСтрийтне"url" (в случай на неизпълнение) или "b64_json".
image_urlСтрийтнеСнимка, която да започне от: A https:// връзка с най-много 4 096 символа без потребителско име или парола в нея, или data:image/…;base64 URL (PNG, JPEG, WebP или GIF; не SVG). editИзисквания към тези, които имат requires_image_url.

resolution не се използва: всеки генератор прави свой собствен размер. url, всяко изображение се качва на публичен Blossom хост и получавате връзката (някои генератори връщат само собствената си връзка, която се предава). Какво може да види огънятс b64_json изображението се връща в отговора и никога не се качва. data: URL в image_url Проверява се по същия начин като Еди и се качва на Blossom първо, така че генераторът да може да го вземе; той се изтрива отново, ако искането не се отчита.

Ако някои от n снимките се провалят, получавате тези, които работят, се таксуват само за тези (плюс всички доставчици, таксувани въпреки провала), и nymbot.failed показва колко липсват. Ако всички не успеят, заявката се връща 502.

Отговор

{
  "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 }
}
статутКога
400не бърза; n от 1 до 4 (invalid_valueНедостатъчен размер (invalid_size) или снимка (invalid_image, invalid_image_url); модел, който съществува, но не е генератор на изображения (invalid_model); изображение за генератор, който не може да редактира (edit_unsupported); няма снимка за един, който се нуждае от него (image_required).
402Балансът не може да покрие всяка поискана снимка.
404Няма модел с това име (model_not_found).
502Електрическият двигател се проваля (upstream_errorНищо не се таксува, освен ако доставчикът не е таксувал за опита; тогава грешката е charged_sats.
503Снимките не могат да бъдат хоствани в момента (media_hosting_unavailable). b64_json Все още работи.

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

Редактиране на изображения

Променя изображението, което качвате, след предупреждение.Това е крайната точка за редактиране на OpenAI, така че SDK на OpenAI images.edit работи, както е. Само Pro генератори с edit в списъка на моделите го приемете.

POST https://nymbot.ai/api/v1/images/edits — се нуждае от API ключ, или Плащане на Lightning по заявкаТялото е multipart/form-dataДо 32 MB.

полетоТипНеобходимиОписание на
imageФайлътдаСнимката за редактиране: PNG, JPEG, WebP или GIF, до 20 MB. image[]Първият се използва.
promptСтрийтдаКакво да се промени.
modelСтрийтдаГенератор с edit.
nинтегритетне1 от 4.
size
aspect_ratio
quality
negative_prompt
output_format
СтрийтнеПо отношение на поколенията.
response_formatСтрийтне"b64_json" (по подразбиране тук) или "url".

Снимката, която качвате, се проверява, че е добре оформена PNG, JPEG, WebP или GIF, изпраща се като истински тип и се поставя на публичен Blossom хост, защото генераторите събират входа си чрез връзка. Третирайте го като публичен. Ако редактирането се провали и нищо не се зарежда, хостваното копие се изтрива отново. Отговорът има същата форма като за генериране. Цената е цената на генератора, която за някои генератори включва такса за входящото изображение.

Отговор

{
  "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 }
}
статутКога
400Няма изображение или известие, файл, който не е изображение (invalid_image) или генератор, който не може да редактира (edit_unsupported).
413Изображението е над 20 MB (file_too_large), или цялата заявка над 32 MB.
503Снимката не може да бъде хоствана в момента (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"));

Видеото

Видеото отнема минути, така че работи на заден план. Вие го изпращате, получавате идентификационен номер веднага и питате за идентификационния номер, докато не приключи.

POST https://nymbot.ai/api/v1/videos — се нуждае от API ключ, или Плащане на Lightning по заявкаВръщане 202.

полетоТипНеобходимиОписание на
modelСтрийтдаИД на видео генератор от GET /api/v1/models?type=video, като например veo.
promptСтрийтдаКакво трябва да се случи.
durationБрой или stringнеДължина в секунди, повече от 0 и до 60. Използва се само от генератори, които ви позволяват да изберете дължината; другите правят обичайната си дължина, което е seconds Отговорът и цената следват.
aspect_ratioСтрийтнеТакава като "16:9" или "9:16"Размерът като "1280x720" Това е най-близкото съотношение.
resolution
quality
СтрийтнеЕдин от генераторите resolutions В списъка на моделите, като "720p" или "1080p"Той определя цената.Всичко друго се отказва с unsupported_resolution.
image_urlСтрийтнеСнимка, която да започне от: A https:// Линк или А data:image/… URL адрес, който първо се качва на публичен Blossom хост. requires_image_url.

Цената е фиксирана, когато подадете, от генератора, резолюция и дължина, така че се таксува от вашия Pro баланс веднага щом доставчикът приеме работата и се показва като cost, estimated_cost и nymbotАко доставчикът откаже работата, нищо не се таксува.Ако рендирането не успее по-късно, или завършеният клип не може да се съхранява и доставчикът не е направил фактура за него, таксата се възстановява веднъж, автоматично.Рендирането, което все още се случва след един час, се отказва и запазва таксата си, защото доставчикът таксува рендиране, след като го приеме.Рендирането връща кредитите, но не намалява разходите на ключа.

Отговор на въпроса (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 Започва като in_progressили completed Видеото вече е в data Генераторът веднага го върна.

Проверка на видео

GET https://nymbot.ai/api/v1/videos/{id} — се нуждае от ключ, принадлежащ на нима, който го е подал.

Тя отговаря 202 Видеото се прави и 200 веднъж завършен или е неуспешен. Попитайте на всеки 5 до 10 секунди. Всеки чек пита доставчика веднъж и отговаря наведнъж; той никога не чака за видеото. GET /api/v1/videos изброява последните 50 работни места на ключа като {"object": "list", "data": […]}.

Отговор на въпроса (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 е in_progress, completed или failedНеуспешната работа носи error ({"code": "generation_failed", "message": …}Ако е възстановено, cost 0 и nymbot Добавяне refunded_credits и refunded_satsЗавършеното видео е на публичен Blossom хост, като генерирани снимки.

статутКога
400Няма бърз; продължителност извън 0 до 60 (invalid_value); резолюция, която генераторът не предлага (unsupported_resolution); няма снимка за генератор, който се нуждае от един (image_required); модел, който не е видео генератор (invalid_model).
402Pro балансът не може да покрие видеоклипа.
404Няма такъв генератор (model_not_found), или няма работа по този идентификатор за вашия ним, или е на повече от 24 часа (video_not_found).
429Вашият ним вече има 10 видео рендериране (video_jobs_limitПроверете ги и изпратете още веднъж един завършва.
502Генераторът отказал работата.Нищо не се таксува, освен ако доставчикът не е таксувал за това.
503Видеоклиповете не могат да се доставят или съхраняват в момента (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);

Текст на речта

Чете текст на глас и връща самия аудио файл, а не връзка. audio.speech.create В рамките на OpenAI SDKs работи.

POST https://nymbot.ai/api/v1/audio/speech — се нуждае от API ключ, или Плащане на Lightning по заявка.

полетоТипНеобходимиОписание на
modelСтрийтнеМоделът на речта от Списък на аудио моделитеПо подразбиране: стандартният глас, @cf/myshell-ai/melotts. aura-2 Това е Deepgram Aura 2.
inputСтрийтдаТекстът за четене: до 800 символа за стандартния глас, 2000 за Aura 2.
voiceСтрийтнеГласов идентификатор от Списък на гласовете: Аура говорител като luna (или aura-2-luna-en, или на език MeloTTS (en, es, fr, zhOpenAI гласови имена като alloy се приемат и дават по подразбиране гласа на модела.
languageСтрийтнеЕзиков код като esБез глас, той избира един за този език. 422 voice_language_mismatch, и език, за който моделът няма глас 422 unsupported_language.
response_formatСтрийтнеСтандартният глас се връща mp3 Aura 2 се завръща mp3 (В случай на неизпълнение на задължението), opus, aac, flac, wav или pcm.
speedбройнеПриети и игнорирани.

Стандартният глас струва плосък 3 стандартни кредита (30 sats) на заявка, както в приложението. Aura 2 е Pro, ценен по знаците, които изпращате. Content-TypeРазходите са в X-Nymbot-Cost-Sats Ако моделът на речта се провали, нищо не се таксува.

Отговор

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

(audio bytes)
статутКога
400Няма вход; вход над лимита на модела (input_too_long); формат, който моделът не може да произведе (unsupported_response_formatНеизвестен глас (invalid_voice); модел, който не е модел на речта (invalid_model).
422Гласът не говори дадения език, или моделът няма глас за него.
502Моделът на речта се провали.Нищо не се таксува.

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

Аудио модели и гласове

Два обществени списъка за избор на модел на речта и глас, или модел на транскрипция.Има 41 Aura 2 английски говорители и четири езика MeloTTS.

GET https://nymbot.ai/api/v1/audio/models Няма нужда от ключ.

GET https://nymbot.ai/api/v1/audio/voices?language=en Няма нужда от ключ.

полетоТипНеобходимиОписание на
languageСтрийт (поискане на търсене)неСамо гласове за този език.
modelСтрийт (поискане на търсене)неСамо гласове за този модел.

Реакции (на гласовете)

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

Модели Списък отговори {"object": "list", "data": {"tts": […], "stt": […]}}Всеки модел на речта дава своя баланс, цена, max_input_chars, response_formats, languages и default_voice; транскрипционният модел дава своите псевдоними, max_file_bytes, max_seconds, формати и цена на минута.

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

Реч към текст

Превръща запис в текст с Whisper. Това е крайната точка за транскрипция на OpenAI, така че audio.transcriptions.create Работи се.

POST https://nymbot.ai/api/v1/audio/transcriptions — се нуждае от API ключ, или Плащане на Lightning по заявкаТялото е multipart/form-data.

полетоТипНеобходимиОписание на
fileФайлътдаЗаписването, от 256 байта до 25 MB и до 30 минути: WAV, WebM, MP4 или M4A, Ogg или Opus, MP3 и другите формати Whisper чете.
modelСтрийтнедефект whisper, който е Whisper Large v3 Turbo. whisper-1, whisper-large-v3-turbo и @cf/openai/whisper-large-v3-turbo Означава същото.
languageСтрийтнеГоворещият език, като enОткрит е, ако е оставен.
promptСтрийтнеДуми или правописа, които да очаквате, като например имена. Само първите 1000 знака се използват.
response_formatСтрийтнеjson (В случай на неизпълнение на задължението), text, srt, vtt или verbose_json.

За WAV, WebM, MP4 и Ogg файлове дължината се чете от файла, преди да се изпълни нещо, така че запис над 30 минути се отказва напред (с 3 секунди). дължината на WAV файл идва от неговата скорост на проба, канали и размер на проба. дължината на други формати, като MP3, не може да се чете напред, така че те са ограничени по размер: при най-ниската скорост на битовете Nymbot приема, 8 kbps, 30 минути е 1.8 MB, и по-голям файл в такъв формат се отказва с 413 audio_too_long Изпратете по-дълги записи като WAV, WebM, MP4 или Ogg. Ако Whisper след това докладва повече от 30 минути, искането се отхвърля с 413 audio_too_long, и тъй като Whisper работи, 30 минути се зареждат.

Вие плащате за дължината на аудиото, закръглено до втората: най-дългата дължина, прочетена от файла, дължината, отчитана от Whisper, и най-малкото, което размерът на файла позволява, на цената на минута на Whisper с обичайната такса и марж и най-малко 0.05 кредита за искане. 402 В приложението транскрипцията на гласово съобщение може да бъде безплатна; на API тя винаги се зарежда.

Отговор

{
  "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 връща ясен текст, srt и vtt връщане на субтитрите и verbose_json добавя езика, продължителността и навременните сегменти. За трите, които не са JSON, цената е в заглавията.

статутКога
400Няма файл, файл без използван аудио (invalid_audio, неизвестен формат, или модел, който не е транскрипционен модел (invalid_model).
402Нито равновесието може да го покрие.
413Файлът е по-голям от 25 MB (file_too_largeЗаглавието не може да бъде прочетено по-дълго, отколкото е описано по-долу, или по-дълго, отколкото е описано по-долу, или по-дълго, отколкото е описано по-долу (audio_too_long).
502Шпионът не може да обработи аудиото.

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

Превод на речта на английски

POST https://nymbot.ai/api/v1/audio/translations — се нуждае от API ключ, или Плащане на Lightning по заявкаТялото е multipart/form-data.

Същото като транскрипция, със същите полета освен language, ограничения и цена, но текстът се връща на английски, независимо от езика, на който се говори. 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);

Вмъкване

Преобразува текст в вектори за търсене, групиране и дедупликация.Моделите работят на Cloudflare и харчат стандартния баланс.

POST https://nymbot.ai/api/v1/embeddings — се нуждае от API ключ, или Плащане на Lightning по заявка.

полетоТипНеобходимиОписание на
modelСтрийтдаВграден модел от GET /api/v1/models?type=embedding.
inputstring или array на stringдаЗадължително е да се вземат под внимание следните фактори: несъвместимост, несъвместимост (token_input_unsupportedВсеки вход трябва да съответства на модела context_length, изчислени като около четири байта токен.
encoding_formatСтрийтнеfloat (в случай на неизпълнение) или base64 (Малки 32-битови плавателни съдове)
dimensionsинтегритетнесобствения размер на модела, или за модел с supported_dimensions След това векторът се съкращава и нормализира.Всичко друго се отхвърля.
моделътизмеренияконтекст
@cf/baai/bge-m31024 на много езици8,192 токена
@cf/qwen/qwen3-embedding-0.6b1024 на много езици8,192 токена
@cf/baai/bge-large-en-v1.51024 Английски език512 токена
@cf/baai/bge-base-en-v1.5768, Английски език512 токена
@cf/baai/bge-small-en-v1.5384 Английски език512 токена

Списъкът с модели е източникът на истината за кои са налични и колко струват; Google EmbeddingGemma, с по-къси вектори по заявка, се появява там също, когато каталогът има цена за него.

Отговор

{
  "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 }
}
статутКога
400Нито един вход, нито един празен; токен масиви (token_input_unsupported); повече от 100 входа (too_many_inputs); входът е по-дълъг, отколкото моделът отнема (input_too_long); размерът, който моделът не може да даде (unsupported_dimensions).
402Стандартният баланс е твърде нисък. Вгражданията никога не използват баланса на Pro.
404Нито един модел с такова име.
502Моделът се провали.Нищо не се таксува.

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