Перейти к содержимому
Вернуться в Nymbot

База знаний Разработчики

Обзор огня

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

Что такое огонь

HTTP API на nymbot.ai который отвечает на те же запросы, которые уже отправляет клиент OpenAI или Anthropic.

Он оплачивается из тех же двух Балансы Нет ни подписки, ни бесплатной квоты на API: каждый запрос оплачивается из кредитов, которые вы купили.

То, что API не делает, это добавлять что-либо из собственного Nymbot. Ваши сообщения отправляются в модель, когда вы их отправляете: нет системной просьбы 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. с cURL, -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 Ошибка говорит, какой баланс короткий, сколько ставок требуется запросу и сколько бесплатных. 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Идентификатор для запроса, на каждый ответ. Цитируйте его, если вы свяжетесь с поддержкой.

Ставки на миллион токенов, уже включая плату и маржу, находятся в Список моделей в долларах и в долларах, и на Ценовой листЕсли цена биткоина не читается, оплаченные запросы возвращаются. 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) цена биткоина не может быть прочитана (price_unavailable) или часть сервиса находится вниз (service_unavailable, media_hosting_unavailable). Retry-After говорит, когда попробовать еще раз, где это известно.

Два исключения :

  • /api/v1/messages ответы в формате ошибки 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 в каждом лимите адресов, а IPv4-модифицированный IPv6 адрес считается его 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 и не обвиняется, даже если его продолжительность известна только после того, как его услышит шепот.
Embeddings100 входов на запрос.
ВидеоработыЗадерживается в течение 24 часов после их представления; рендеринг откладывается через час.
Хочется историиПродолжительность 90 дней.
Активные ключи per nymСохраняются только последние 50 аннулированных ключей.

Ссылка на изображение должна указывать на общедоступный хост: адрес в частной или локальной сети, или на собственных сайтах Nymbot, отклоняется.

Что может видеть огонь

API не является частным в том виде, в котором есть приложения, и стоит быть точным в том, как.

  • Он не шифруется от конца до конца. В приложениях сообщение запечатывается на вашем устройстве на ключи, которые только Nymbot держит и путешествует как Подарок WrapЗапрос API является обычным HTTPS: он шифруется по пути к Nymbot, и сервер Nymbot читает его в явном виде, чтобы справиться с ним.
  • Заявки и ответы не хранятся. То, что хранится, это счет: для каждого запроса время, модель, вид, счет токенов, стоимость, баланс, ключ и успел ли он, в течение 90 дней, это то, что Хочется истории Запись использования одного и того же запроса (время, вид, модель, количество токенов, стоимость, продолжительность и если он использовал веб-поиск или удался) также хранится в течение 90 дней, наряду с собственным приложением.
  • Все остальное, удерживаемое для ним, небольшое и перечислено здесь. Огненные ключи хранятся как хеш, никогда ключ, с их именем, кратким намеком, расходной капотом, периодом перезагрузки, истечением срока и когда они были сделаны и использовались в последний раз; сохраняются только последние 50 отзываемых ключей. Автоматический топограф Видеоработы сохраняются в течение 24 часов.Запросы, оплачиваемые за звонок, оставляют только хеш оплаты Lightning в течение 7 дней и токен возврата с хеш в течение 30 дней, связанный с ничем.Затраты, которые баланс не мог покрыть, сохраняются как задолженные до тех пор, пока топ-уп не оплатит их.
  • Удаление приложения удаляет его. A Устройство Wipe Отменяет и удаляет каждый ключ API, а также удаляет историю запросов, записи использования, подключение кошелька и видеоработы.
  • Провайдер модели видит ваш запросМодели каталогов работают у своих производителей; стандартные маршруты и встраивания работают на Cloudflare.
  • Созданные средства массовой информации являются публичными. Изображения и видео, поставляемые в виде ссылок, загружаются на общедоступные хосты файлов Blossom, где адрес файла является его хашем. 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Ответ огняКлюч
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/embeddingsEmbeddingsКлюч или молнии
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, а для кодирующих агентов, таких как Claude Code, Codex и Cline, см. Кодирование инструментов.