База знань розробників
Зображення, аудіо та вбудовані матеріали
Генератори з додатка, а також будівельні блоки для пошуку: зображення, відео, мова, транскрипція та вбудовані матеріали, кожна з яких обліковується за використання з вашого балансу.
Для зручності цю сторінку перекладено машинним способом. Застосовується англійський оригінал.
Генерація зображень
Створює від одного до чотирьох зображень з прохання і повертає їх, коли вони виконані. ?image В рамках app.
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) зображення. Кожен інший генератор витрачає Про кредити за власною ціною, з звичайною платою і маржі, як в Апп. n Фотографії коштують
n Поле, яке генератор не приймає, відкидається, а не відмовляється; стандартний генератор використовує тільки промпт.
| Поле | Тип | Необхідні | Опис |
|---|---|---|---|
model | Стринг | так | ІД генератора, наприклад nano-banana. |
prompt | Стринг | так | Використовується тільки перші 2000 символів. |
n | Інтеграція | Ні | 1 до 4.Помилка 1.Також прийнято як num_images. |
size | Стринг | Ні | аспектів, таких як "16:9"або відкритого розміру, як "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 | Стринг | Ні | Зображення починається з: а https:// посилання не більше 4096 символів без імені користувача або пароля в ньому, або data:image/…;base64 URL (PNG, JPEG, WebP або GIF; не SVG). editнеобхідних для тих, хто requires_image_url. |
resolution не використовується: кожен генератор робить свій власний розмір. url, кожне зображення завантажується на публічний хостинг Blossom і ви отримуєте його посилання (декілька генераторів повертають лише власний посилання, яке передається). Що бачить вогоньЗ
b64_json зображення повертається у відповідь і ніколи не завантажується. data: URL в image_url Вони перевіряються так само, як і
Edit і завантажується в 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, тому OpenAI SDK's' images.edit функціонує так, як є. тільки Pro генератори з edit У списку моделей це прийнято.
POST https://nymbot.ai/api/v1/images/edits — потрібен ключ API, або Оплата Lightning за запитомТіло є multipart/form-dataдо 32 Мб.
| Поле | Тип | Необхідні | Опис |
|---|---|---|---|
image | Файл | так | Зображення для редагування: PNG, JPEG, WebP або GIF, до 20 МБ. 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 Мб (file_too_large), або весь запит більше 32 Мб. |
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 | Номер або строка | Ні | Довжина в секунди, більше 0 і до 60. Використовується тільки генераторами, які дозволяють вибирати довжину; інші роблять свою звичайну довжину, що seconds У відповідь і ціна. |
aspect_ratio | Стринг | Ні | Такі як "16:9" або "9:16"Такий розмір, як "1280x720" Це найближче співвідношення |
resolutionquality | Стринг | Ні | Один з генераторів resolutions У списку таких моделей, як "720p" або "1080p"Вона встановлює ціну. Все інше відмовляється з unsupported_resolution. |
image_url | Стринг | Ні | Зображення починається з: а 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 секунд. Кожен чек запитує провайдера один раз і відповідає відразу; він ніколи не чекає на відео. Робота зберігається протягом 24 годин після її подання.
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 Відкриті SDK функціонують.
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 | Стринг | Ні | голосовий ID від Список голосівАура розмовника, як 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 | Стрічка (англ. string) для запиту | Ні | Тільки голоси для цієї мови. |
model | Стрічка (англ. string) для запиту | Ні | Тільки голоси для цієї моделі. |
Реакція (відповідь на голоси)
{
"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 МБ і до 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 МБ, а більший файл в такому форматі відмовляється з 413
audio_too_long Надіслати довші записи як WAV, WebM, MP4 або Ogg. Якщо Whisper потім повідомляє більше 30 хвилин в будь-якому випадку, запит відмовляється
413 audio_too_long, і оскільки Шпигун пройшов, 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 Мб (file_too_large(або в форматі, довжина якого не може бути прочитана напередодні, більше 1,8 Мб)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 | так | Залишається не менше 100 осіб, які не мають дозвіл на проживання (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);