База знания Разработчиците
Снимки, аудио и вграждания
Генераторите от приложението и строителните блокове за търсене: снимки, видео, реч, транскрипция и вграждания, всеки от които се начислява на употреба от вашия баланс.
Тази страница е машинно преведена за удобство. Английският оригинал е версията, която се прилага.
генериране на изображения
Създава от една до четири снимки от известие и ги връща, когато са завършени. ?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. |
sizeaspect_ratioqualitynegative_promptoutput_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" Това е най-близкото съотношение. |
resolutionquality | Стрийт | не | Един от генераторите 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). |
402 | Pro балансът не може да покрие видеоклипа. |
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. |
input | string или array на string | да | Задължително е да се вземат под внимание следните фактори: несъвместимост, несъвместимост (token_input_unsupportedВсеки вход трябва да съответства на модела context_length, изчислени като около четири байта токен. |
encoding_format | Стрийт | не | float (в случай на неизпълнение) или base64 (Малки 32-битови плавателни съдове) |
dimensions | интегритет | не | собствения размер на модела, или за модел с supported_dimensions След това векторът се съкращава и нормализира.Всичко друго се отхвърля. |
| моделът | измерения | контекст |
|---|---|---|
@cf/baai/bge-m3 | 1024 на много езици | 8,192 токена |
@cf/qwen/qwen3-embedding-0.6b | 1024 на много езици | 8,192 токена |
@cf/baai/bge-large-en-v1.5 | 1024 Английски език | 512 токена |
@cf/baai/bge-base-en-v1.5 | 768, Английски език | 512 токена |
@cf/baai/bge-small-en-v1.5 | 384 Английски език | 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);