Перейти до вмісту
Повернутись до Nymbot

База знань розробників

Пожежа Огляд

Моделі, генератори та баланси, які ви використовуєте в програмі, з вашого власного коду. API розмовляє у форматі OpenAI і Anthropic, тому більшість інструментів і SDK працюють, змінюючи базовий URL і ключ.

Що таке API

За допомогою HTTP API nymbot.ai що відповідає на ті ж запити, які вже надсилає клієнт OpenAI або Anthropic. Ви отримуєте:

Вони платять за ті ж дві Баланс Немає підписки і немає безкоштовних пільг на API: кожен запит оплачується з кредитів, які ви купили.

Ваші повідомлення йдуть до моделі, як ви їх відправили: немає Nymbot системного прохання, немає пам'яті, немає дати або мови підказок.

База URL

ВикористовуйтеБазова URL
OpenAI SDK і OpenAI-сумісні інструментиhttps://nymbot.ai/api/v1
Антропологічні SDK і Клод Кодhttps://nymbot.ai/api SDK додає /v1/messages самої себе)

Кожна кінцева точка живе під /api/v1/Невідомий шлях повертається 404 і відомий шлях, названий з неправильним методом, повертається 405Як і JSON.

API відповідає на перехресні запити з будь-якого сайту, так що сторінка браузера може зателефонувати. Все, що ви відправляєте в браузер, може бути прочитано тим, хто його відкриває, однак, тому робіть це тільки з ключем, який має невеликий ГлаваКінцеві пункти, підписані з вашим німом (ключі, резюме облікового запису, автозавантаження NWC та викуп коштів) є винятком: в браузері вони відповідають тільки на власні сайти Nymbot. Підписання запитів на рахунок.

Надіслати будь-яке тіло JSON з Content-Type: application/jsonБудь-який інший тип відмовляється від 415Наприклад, форма HTML або text/plain запит з іншого сайту не може дістатися до API. -H "Content-Type: application/json" Разом з -d.

Пожежний ключ

Ключі створюються в додатку.Відкритий Пожежа у бічній панелі веб-додатка, або в меню на Android і iOS, і натисніть Створити ключДайте йому назву і, якщо хочете, кап і дату закінчення терміну дії.

Копіюйте його в безпечному місці, перш ніж закрити аркуш: Nymbot зберігає лише відбиток пальця, тому він не може показати його вам знову.

Ключ виглядає як sk-nymbot- За ними слідують 43 літери, цифри, даші та підрахунки.Апликація перераховує кожен ключ своїм ім'ям і коротким натяком, таким як: sk-nymbot-Qm7x…c2Lw.

  • Ключ належить вашому німу. Він витрачає ваш баланс, і тільки ваш нім може зробити, змінити або скасувати його.
  • Капелюхи є в ставці. Ключ може мати витратну вартість, а вартість може бути відновлена щодня, щотижня (понеділок) або щомісяця (перший), о 00:00 UTC. Вона обчислює обидва баланси, стандартний кредит як 10 sats і Pro кредит як 100, так що це означає те ж саме, який баланс запит витрачає. 403 key_limit_reached, навіть якщо відповідь потрапила б під кап; помилка говорить, скільки залишилося і коли кап відновлюється. max_tokens Запит стягується за те, що він насправді коштує, і це рахується проти межі, так що якщо провайдер повідомляє більше токенів, ніж були поставлені осторонь, останній запит, який підходить, може взяти ключ трохи за межі його межі; наступний потім відмовляється.
  • Витрачений капітал тільки зупиняє витрати. Ключ на його капітальні все ще може перевірити баланс, прочитати його історію, перерахувати моделі, рахувати токени, завантажити і перевірити відео, яке він вже розпочав.
  • Ексклюзив є факультативним. Після дати, яку ви встановили, ключ перестає працювати.
  • Відкликання є негайним і остаточним. Відкликаний ключ не виконує свого наступного запиту. він залишається в списку, позначений відкликаним, тому його історія витрат все ще має сенс.
  • Ви можете мати до 25 активних ключів, кожен з яких має свою назву. Зміна періоду перезавантаження ключа починає новий період з нуля.

Цей же аркуш показує витрати кожного ключа протягом цього періоду і в цілому, коли він був використаний востаннє, як ваші баланси, так і ваші нещодавні запити API. Управління ключами.

Автентифікація запиту

Надішліть ключ в будь-якому з цих заголовків. Вони є еквівалентними, тому використовуйте те, що ваш клієнт надсилає за замовчуванням:

Headerвідправити
Authorization: Bearer sk-nymbot-…OpenAI SDK, більшість інструментів, Claude Code з ANTHROPIC_AUTH_TOKEN
x-api-key: sk-nymbot-…Антропологічні SDK
api-key: sk-nymbot-…Azure-стиль клієнтів

відсутні, невідомі, скасовані або закінчені ключі 401З кодом missing_api_key, invalid_api_key, revoked_api_key або expired_api_keyСписок моделей, аудіо моделей і голосів, а також способи оплати не потребує ключа.

Фотографії, відео, промови, транскрипції та вбудовування також можуть бути оплачені за один запит за один раз через Lightning без будь-якого ключа: відправити запит без одного і сплатити рахунок в 402 Відповідь - дивіться Оплата за запитом без ключа.

Управління ключами, резюме облікового запису та автоматичні оновлення є винятком: вони беруть підпис від вашого німа замість ключа, тому вилучений ключ не може зробити більше ключів. Підписання запитів на рахунок.

Ваша перша прохання

Покладіть ключ у змінну середовища, а потім запитайте модель про щось. NYMBOT_API_KEY.

cURL

export NYMBOT_API_KEY="sk-nymbot-..."

curl https://nymbot.ai/api/v1/chat/completions \
  -H "Authorization: Bearer $NYMBOT_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "nymbot/auto",
    "messages": [{"role": "user", "content": "What is a Lightning invoice?"}]
  }'

Python

import os
from openai import OpenAI

client = OpenAI(
    base_url="https://nymbot.ai/api/v1",
    api_key=os.environ["NYMBOT_API_KEY"],
)

reply = client.chat.completions.create(
    model="nymbot/auto",
    messages=[{"role": "user", "content": "What is a Lightning invoice?"}],
)
print(reply.choices[0].message.content)

JavaScript

import OpenAI from "openai";

const client = new OpenAI({
  baseURL: "https://nymbot.ai/api/v1",
  apiKey: process.env.NYMBOT_API_KEY,
});

const reply = await client.chat.completions.create({
  model: "nymbot/auto",
  messages: [{ role: "user", content: "What is a Lightning invoice?" }],
});
console.log(reply.choices[0].message.content);

nymbot/auto є власним маршрутизацією Nymbot, сплаченим зі стандартного балансу. Вставте там ідентифікатор моделі каталогу, наприклад: anthropic/claude-sonnet-5, щоб використовувати цю модель з Pro балансу. Список моделей Подавати кожну ідентифікацію.

Скільки коштує заявка

API обліковує саме так, як це робить додаток.

  • Який баланс nymbot/auto Витрати на Стандарт баланс (10 sats a credit). Кожна інша модель чату витрачає Про баланс (100 sats a credit). Стандартний генератор зображень і стандартний голос витрачають стандартні кредити; кожен інший генератор витрачає Pro. Вбудовані витрачають стандартні кредити. Транскрипція витрачає стандартні кредити, коли стандартний баланс може покрити його, і Pro кредити інакше. Список моделей говорить, який баланс витрачає кожна модель.
  • А скільки Запит на чат вимірюється на токенах, які модель насправді читає і пише, за опублікованими тарифами провайдера. Ця ціна має 5% внесок і потім помножується на 1,5, тому ви платите 1575 разів ціною списку провайдера. Вона перетворюється на внески за ціною біткоїну в прямому ефірі і стягується в тисячоліттях кредиту. Про зображення, відео та мовлення цінуються за покоління, за секунду або за символ, і транскрипція за секунду аудіо, з однаковою платою та маржі. Стандартна картина є плоскою 5 стандартних кредитів і стандартний голос плоскою 3.
  • Це мінімум Кожен вимірюваний запит, який працює, коштує принаймні 0,05 кредиту: половина сиділа на стандартному балансі, 5 ставки на Pro. Фракції кредиту переносяться, а не закруглюються кожен раз.
  • Залишайтеся, а потім сідайте Перш ніж запит запускається, найбільше, що може коштувати, зберігається з вашого балансу, залежно від того, що ви відправили, і найбільше токенів, які він може написати. Текст поза простою ASCII розміром з його UTF-8 байтів, а цифри ASCII і пунктування рахуються як токен кожен, так що текст в будь-якому скрипті, коді та номерах зберігаються в повному обсязі. Утримується в цілих кредитах, принаймні один, так що будь-яке запит потребує принаймні 10 ставок безкоштовно на стандартному балансі або 100 ставок на Pro, щоб почати. Лише фактична вартість стягується; решта випускається, коли вона закінчується. Довгий запит зберігає своє утримання до тих пі 402 insufficient_balance У разі, якщо сума податку на прибуток перевищує суму податку на прибуток, то сума податку на прибуток перевищує суму податку на прибуток (owed_sats У nymbot об'єкт, і негативний баланс). Що виплачується, спочатку виплачується з наступних кредитів, які досягають цього балансу. Доки він не виплачується, нічого на цей баланс не можна витратити: не API, відповіді в додатку, трансфер або подарунок.
  • Кредитів недостатньо Якщо баланс не може покрити утримання, запит відмовляється з 402 Помилка говорить, який баланс короткий, скільки sats запиту потрібно і скільки безкоштовно. max_tokens Це означає меншу тривалість.
  • Невдачі Запит, який провалився, не коштує нічого, якщо провайдер не стягнув рахунок за роботу, яку він зробив до провалу, або веб-пошук або nymbot/auto Перевірка завдань вже була виконана; тоді це те, що ви платите, принаймні 0,05 кредиту. Потік, який ви відрізаєте, стягується за токени, які повідомляє провайдер: Nymbot продовжує читати потік провайдера до 25 секунд після того, як ви залишите, щоб отримати цей рахунок.
  • WEB Пошук коштує $ 0,008 пошук, конвертований в sats, кожен раз, коли пошук був запущений, незалежно від того, чи відповідає модель тоді або не вдається.

Кожна відповідь говорить, скільки вона коштує. відповіді JSON несуть nymbot об'єкт з балансом, з якого він був сплачений, заборгованість в кредитах і ставки, і що залишилося:

Об'єкт витрат

"nymbot": {
  "balance": "pro",
  "charged_credits": 0.162,
  "charged_sats": 16.2,
  "balance_credits": 412.425,
  "balance_sats": 41242.5
}

Оплачені відповіді також несуть ці заголовки, де слід шукати вартість відповіді, яка не є JSON, наприклад, мовлення:

HeaderЗначення
X-Nymbot-Cost-SatsСкільки коштує ця заявка, в ставки.
X-Nymbot-Balance-SatsЩо залишилося на балансі, з якого було виплачено, в ставки.
X-Request-IdІдентифікатор запиту, на кожній відповіді. Цитувати його, якщо ви зв'язуєтеся з підтримкою.

Ставки на мільйон токенів, вже включаючи плату і маржу, знаходяться в Список моделей в доларах і ставках, і на Ціновий листЯкщо ціну Bitcoin неможливо прочитати, платні запити повертаються. 503 price_unavailable з Retry-After: 60 Замість того, щоб гадати

Помилки

Кожна помилка має таку саму форму, яку клієнти OpenAI вже розуміють. code є стабільною назвою, на яку ви можете поєднуватися; message Це для людей і може змінитися.

Помилка тіла

{
  "error": {
    "message": "This request needs up to 200 sats (2 credits) on your Pro balance, and 40 sats are free. Catalog models spend the Pro balance. Top up in the Nymbot app or with POST /api/v1/topup/create/btc-lightning.",
    "type": "insufficient_quota",
    "code": "insufficient_balance",
    "param": null,
    "balance": "pro",
    "required_sats": 200,
    "balance_sats": 40
  }
}
СтатусКоли
400 invalid_request_errorНаприклад, неможливо встановити JSON (invalid_json), необхідне поле відсутнє (missing_required_parameter), значення є неправильним, або запит запитує про щось, що модель або кінцева точка не робить, наприклад, інструменти на nymbot/auto (unsupported_tool). param Назви полів. також upstream_rejected коли постачальник відмовився від запиту.
401 authentication_errorКлюч відсутній, невідомий, скасований або закінчений, або підписаний запит недійсний або повторно використаний.
402 insufficient_quotaБаланс не може покривати запит. код insufficient_balance, з balance, required_sats і balance_sats.
403 permission_errorЗапит не відповідає класу ключа (key_limit_reached, з limit_sats, used_sats і reset_at), або обліковий запис може не використовувати послугу (account_denied).
404 not_found_errorНевідомий шлях (unknown_endpoint), модель, яка не існує (model_not_found), або невідомий ключ, рахунок або відео.
405Існує шлях, але не з цим методом (method_not_allowed) на Allow Header перераховує методи, які він використовує.
413Тело або файл занадто великий (payload_too_large, file_too_large), або запис занадто довгий (audio_too_long) ось ліміти.
415 invalid_request_errorТіло не передається як application/json (або для підключення до кінцевих пунктів, multipart/form-data): unsupported_media_type.
422Голос і мова, які не йдуть разом в тексті до мови (voice_language_mismatch, unsupported_language).
429 rate_limit_errorЗанадто багато запитів на цей ключ, з цієї адреси, або з акредитаціями, які не змогли перевірити (rate_limit_exceeded(у тому числі, якщо провайдер має обмеженуupstream_rate_limited(Чекайте секунди в Retry-After.
500 api_errorЩось пішло не так на стороні Nymbot (internal_error).
502 api_errorПровайдер не повернув відповідь (upstream_error(або не може бути виконано жодного висновку)invoice_unavailable).
503 api_errorПостачальник має бути перевантажений (upstream_overloaded), ціна Bitcoin не може бути прочитана (price_unavailable), або частина служби знижується (service_unavailable, media_hosting_unavailable). Retry-After Він каже, коли спробувати знову, де це відомо.

Дві винятки :

  • /api/v1/messages відповіді в форматі помилки Anthropic, оскільки це те, що клієнти Anthropic аналізують: {"type": "error", "error": {"type": "authentication_error", "message": "…"}}Тип слідує за статусом: invalid_request_error, authentication_error, billing_error (402), permission_error, not_found_error, request_too_large, rate_limit_error, api_error або overloaded_error (503).
  • Передача запиту, яка провалилася до першого байта, отримує звичайну помилку JSON зі статусом вище, а не потоком подій.

Повідомлення про помилку ніколи не містять внутрішніх деталей іншої служби.

ліміти

Лімітцінність
Запит за ключем120 на хвилину, а також 429 з Retry-After.
Запит без ключа120 в хвилину за адресу, для моделі, аудіо та способу оплати списків, відшкодування токенів перевірки, і платні кінцеві пункти виклику без ключа або оплати. 429 з Retry-After.
Провал аутентифікації30 хвилин на адресу для ключів, підписів, платіжних акредитацій та токенів повернення грошей, які не перевіряють. 429 з Retry-After Довідки перевіряються, перш ніж читати тіло.
Нові ключі60 на годину за нім і 120 на годину за адресою.
Top-up рахунки60 на годину за нім і 120 на годину за адресою.
Підключення портфеля NWC10 годин на нім і 30 годин на адресу. релейний гаманець повинен використовувати wss:// У стандартному порту.
Повернення токенів60 запитів за хвилину.
АдресиАдреса IPv6 обчислюється як ціла /64 у кожному ліміті адреси, а адреса IPv6 з картографією IPv4 як адреса IPv4.
Тело запиту JSON4 МБ; 64 КБ для запитів, підписаних з вашим німом.
Мультичастий орган запиту (uploads)32 МБ. Зображення для редагування може бути до 20 МБ, аудіофайл до 25 МБ. На максимум 64 частини, кожна з максимум 8 КБ заголовків частин, і межа від 1 до 70 символів; інакше 400 invalid_multipart.
Фотографії в одному чаті запит20.Кожен з них є https:// або http:// підключення до публічного хосту, або data:image/… УРЛ .
Зображення за вимогою покоління1 з 4 (n)
Вихід токенівМаксимальний розмір власної моделі. більше max_tokens Його знижують, а не відмовляють.
Вхідна мова800 символів для стандартного голосу, 2000 для Aura 2.
Транскрипція30 хвилин аудіо, 25 МБ. Довгий запис відмовляється при 413 І не звинувачується, навіть коли її довжина відома лише тоді, коли її почув Шпигун.
Вбудовані100 грн за заявку.
Відео робочі місцяЗалишається протягом 24 годин після їх подання; відтворення віддається через годину. при максимумі 10 відтворення відразу на нім.
Хочу історіюПротягом 90 днів.
Активні ключі на німТільки останні 50 скасованих ключів зберігаються.

Посилання на зображення повинно вказувати на публічний хост: адреса в приватній або місцевій мережі, або на власних сайтах Nymbot, відмовляється.

Що бачить вогонь

API не є приватним в тому вигляді, в якому є програми, і варто бути точним про те, як.

  • Він не шифрується кінцем до кінцем. У додатках повідомлення запечатано на вашому пристрої до ключів, які тільки Nymbot тримає і подорожує як Подарунок WrapЗапит API є звичайним HTTPS: він зашифрований на шляху до Nymbot, і сервер Nymbot читає його в ясній формі, щоб обробляти його.
  • Відгуки та відповіді не зберігаються. Те, що зберігається, це рахунок: для кожного запиту час, модель, вид, токен рахунки, вартість, баланс, ключ і чи вдалося це, протягом 90 днів, що є Історія хотіла Запис використання одного і того ж запиту (час, вид, модель, кількість токенів, вартість, тривалість і чи використовується веб-пошук або успішно) також зберігається протягом 90 днів, поряд з власним додатком.
  • Все інше, що зберігається для нім, невелике і перераховано тут. Пожежний ключ зберігаються як хеш, ніколи ключ, з їхнім ім'ям, коротким натяком, витратою, періодом перезавантаження, терміном закінчення терміну і коли вони були зроблені і останнім використанням; зберігаються тільки останні 50 відкликаних ключів. Автоматичний Top-Up Підключення портфеля зберігається зашифрованим, з його порогом, сумою та результатом останнього навантаження. Відеороботи зберігаються протягом 24 годин. Запитання, сплачені за дзвінок, залишають лише хеш оплати Lightning протягом 7 днів і хешний токен повернення коштів протягом 30 днів, пов'язаний з жодним нім. Податки, баланс яких не міг покривати, зберігаються як заборговані до тих пір, поки топ-уп не сплатить їх.
  • Вимкнення додатка видаляє його. A Пристрій Wipe скасовує і видаляє кожен ключ API, а також видаляє історію запитів, записи використання, підключення гаманця та відеороботи.
  • Провайдер моделі бачить ваш запитМоделі каталогів працюють на своїх виробниках; стандартні маршрути та вбудовані програми працюють на Cloudflare.
  • Створені засоби масової інформації є публічними. Зображення та відео, доставлені у вигляді посилань, завантажуються на публічні файлові хости Blossom, де адресою файлу є його хеш. Будь-хто з посиланням може відкрити його, і Nymbot не може завантажити його знову. b64_json і створене зображення повертається в відповідь і ніколи не завантажується.
  • Те ж саме стосується і фотографій, які ви даєте генератору. Фотографії, які ви завантажуєте Edit, або відправити як a data: URL в генераторі image_url, завантажується на публічний хост Blossom спочатку, щоб генератор міг його завантажити, і те ж саме стосується його. https:// Фотографії в запиті на чат йдуть до провайдера моделі, а не до Blossom.
  • Ключ пов'язаний з вашим німом. Все, що ключ витрачає, виходить з балансу вашого німа, тому використання API не АнонімнийЯкщо ви хочете, щоб використання API трималося окремо від вашого повсякденного німа, зробіть ключі з окремого німа з власним балансом.

Якщо вам потрібен захист додатків, використовуйте додатки. API призначений для тих випадків, коли вам потрібні моделі у ваших власних інструментах.

Кожна кінцева точка

кінцева точкаЩо воно робитьаут
GET /api/v1/modelsСписок моделейЗ цінамиНіхто
POST /api/v1/chat/completionsЗавершення чатуКлюч
POST /api/v1/responsesВідповідь APIКлюч
POST /api/v1/messagesАнтропологічні повідомленняКлюч
POST /api/v1/messages/count_tokensОцінка вхідних токенівКлюч
POST /api/v1/images/generationsгенерують зображенняключ або блискавка
POST /api/v1/images/editsЕдіт зображенняключ або блискавка
POST /api/v1/videos, GET /api/v1/videos, GET /api/v1/videos/{id}Початок, списки та перевірки відеоключ, або блискавка Почати один
POST /api/v1/audio/speechТекст до виступуключ або блискавка
GET /api/v1/audio/models, GET /api/v1/audio/voicesАудіо моделі та голосиНіхто
POST /api/v1/audio/transcriptions, POST /api/v1/audio/translationsМова до тексту, а також англійськаключ або блискавка
POST /api/v1/embeddingsВбудованіключ або блискавка
GET /api/v1/credits/balance (або POST)Обидва балансиКлюч
GET /api/v1/topup/payment-methodsСпособи оплатиНіхто
POST /api/v1/topup/create/btc-lightningСвітлодіодний рахунокКлюч
GET /api/v1/topup/status/{invoice_id}Перевірка і кредитування йогоКлюч
GET /api/v1/queries/historyСкільки коштує кожна заявкаКлюч або нім
GET /api/v1/accountРезюме рахунківНім
/api/v1/keysСтворює, змінює та скасовує ключіНім
/api/v1/nwc-auto-topupАвтоматичні топ-упНім
GET /api/v1/l402/refunds, POST /api/v1/l402/refunds/redeemПеревірка або викуп токена поверненняПовернення токена; nym to redeem

“Nym” означає запит, підписаний вашим ключем Nostr, описаний в Підписання запитів на рахунокДля інструментів, які вже розмовляють з цими форматами, див. Інструменти та SDK, а для кодуючих агентів, таких як Клод Код, Кодекс і Клайн, див. Кодування інструментів.