Przejdź do treści
Wróć do Nymbot

Baza wiedzy deweloperzy

Ogień przegląd

Modele, generatory i bilans używane w aplikacji, z własnego kodu. API mówi o formatach OpenAI i Anthropic, więc większość narzędzi i SDK działa poprzez zmianę bazowego adresu URL i klucza.

Czym jest ogień

Aplikacja HTTP API nymbot.ai który odpowiada na te same żądania, które już wysyła klient OpenAI lub Anthropic.

Płacą za te same dwa równowagi Nie ma subskrypcji ani bezpłatnego przydziału na API: każde żądanie jest płatne z kredytów, które kupiłeś.

To, czego API nie robi, to dodawanie niczego z własnego Nymbota. Twoje wiadomości idą do modelu, gdy je wysłałeś: nie ma systemowej wskazówki Nymbota, nie ma pamięci, nie ma wskazówek daty lub języka.

Podstawy URL

UżyjPodstawa URL
OpenAI SDK i narzędzia zgodne z OpenAIhttps://nymbot.ai/api/v1
Antropowe SDK i Claude Kodekshttps://nymbot.ai/api (SDK dodaje /v1/messages samego siebie)

Każdy punkt końcowy żyje pod /api/v1/Nieznana droga powraca 404 i znana ścieżka nazywana z niewłaściwą metodą powraca 405Podobnie jak JSON.

API odpowiada na żądania pochodzenia krzyżowego z dowolnej witryny, więc strona przeglądarki może ją wywołać. Wszystko, co wysyłasz do przeglądarki, może być odczytane przez każdego, kto go otwiera, więc zrób to tylko za pomocą klucza, który ma mały głowyPunkty końcowe podpisane za pomocą twojego nym (klucze, podsumowanie konta, NWC auto-top-up i zwrot zwrotu pieniędzy) są wyjątkiem: w przeglądarce odpowiadają tylko na własne witryny Nymbota. Podpisanie wniosków o konto.

Wyślij każde ciało JSON Content-Type: application/jsonKażdy inny typ jest odrzucany 415, więc zwykła forma HTML lub text/plain żądanie z innej witryny nie może dotrzeć do API. -H "Content-Type: application/json" Razem z -d.

Klucze ognia

Klucze są tworzone w aplikacji.Open Ogień w pasku bocznym aplikacji internetowej lub w menu na Androida i iOS, a następnie naciśnij Tworzenie kluczaPodaj nazwę i, jeśli chcesz, kaptur i datę wygaśnięcia.

Klucz jest wyświetlany raz. Skopiuj go w bezpieczne miejsce przed zamknięciem arkusza: Nymbot przechowuje tylko odcisk palca, więc nie może go ponownie pokazać.

Klucz wygląda jak sk-nymbot- Następnie 43 litery, cyfry, tabliczki i punkty podrzędne.Aplikacja wymienia każdy klucz po nazwie i krótkim wskazówce, takiej jak: sk-nymbot-Qm7x…c2Lw.

  • Klucz należy do twojego nym. Spędza swój saldo, a tylko twój nym może go utworzyć, zmienić lub odwołać.
  • Kapsułki są w stawce. Klucz może mieć kapitał wydatków, a kapitał może być resetowany codziennie, co tydzień (poniedziałek) lub co miesiąc (pierwszy), o 00:00 UTC. Liczy oba salda, standardowy kredyt jako 10 sats i kredyt Pro jako 100, więc oznacza to samo niezależnie od salda żądania wydatków. 403 key_limit_reached, nawet jeśli odpowiedź pojawiłaby się pod kapturem; błąd mówi, ile pozostało i kiedy kaptura jest resetowana. max_tokens Wniosek jest pobierany za to, co rzeczywiście kosztuje, a to liczy się z kapitałem, więc jeśli dostawca zgłasza więcej tokenów, niż zostały umieszczone na bok, ostatnie żądanie, które pasuje, może wziąć klucz nieco poza kapitałem; następny jest następnie odrzucony.
  • Spłacony kapitał tylko zatrzymuje wydatki. Klucz przy kapcie może jeszcze sprawdzić saldo, przeczytać jego historię, wymienić modele, policzyć tokeny, wstawić i sprawdzić wideo, które już rozpoczęło.
  • Expiry jest opcjonalne. Po ustawieniu daty klucz przestaje działać.
  • Odwołanie jest natychmiastowe i ostateczne. Odwołany klucz nie spełnia kolejnego żądania, pozostaje na liście oznaczony jako odwołany, więc jego historia wydatków nadal ma sens.
  • Możesz mieć do 25 aktywnych kluczy, każdy z własną nazwą.Zmiana okresu resetowania klucza rozpoczyna nowy okres od zera.

Ten sam arkusz pokazuje wydatki każdego klucza w tym okresie i łącznie, kiedy był używany po raz ostatni, zarówno salda, jak i ostatnie żądania API. Zarządzanie kluczami.

uwierzytelnianie żądania

Wyślij klucz w dowolnym z tych nagłówków. Są one równoważne, więc użyj dowolnego, co klient wysyła domyślnie:

Headerwysłane przez
Authorization: Bearer sk-nymbot-…OpenAI SDK, większość narzędzi, Claude Code z ANTHROPIC_AUTH_TOKEN
x-api-key: sk-nymbot-…Antropologiczne SDK
api-key: sk-nymbot-…Klienci w stylu Azure

Brakujące, nieznane, odwołane lub wygasłe zwroty kluczy 401Wraz z kodem missing_api_key, invalid_api_key, revoked_api_key lub expired_api_keyWykaz modeli, modeli audio i głosów oraz metod płatności nie wymaga klucza.

Zdjęcia, wideo, głos, transkrypcja i osadzenia można również płacić za jedno żądanie w czasie przez Lightning bez klucza w ogóle: wysłać żądanie bez jednego i zapłacić fakturę w 402 Odpowiedź - zobacz Płatność na żądanie bez klucza.

Zarządzanie kluczami, podsumowanie konta i automatyczne top-upy są wyjątkiem: biorą podpis z nym zamiast klucza, więc wyciekły klucz nie może tworzyć więcej kluczy. Podpisanie wniosków o konto.

Twoje pierwsze żądanie

Umieść klucz w zmiennej środowiska, a następnie poproś model o coś. 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 jest własnym routerem Nymbota, płaconym ze standardowego salda. Zamiast tego umieść identyfikator modelu katalogu, na przykład anthropic/claude-sonnet-5, aby użyć tego modelu z bilansu Pro. Lista modeli Daj każdemu dowód.

Ile kosztuje wniosek

API fakturuje dokładnie tak, jak robi aplikacja.

  • Co za równowaga. nymbot/auto Wydajesz je Standardowość równowaga (10 sats a credit). Każdy inny model czatu spędza Pro bilans (100 sats jeden kredyt). Standardowy generator obrazu i standardowy głos wydają standardowe kredyty; każdy inny generator wydaje Pro. Embedings wydają standardowe kredyty. Transcription wydaje standardowe kredyty, gdy standardowy bilans może go pokryć, a kredyty Pro inaczej. Lista modeli mówi, który bilans wydaje każdy model.
  • Ile ile . Wniosek o czat jest mierzony na tokenach, które model faktycznie czytał i napisał, w opublikowanych stawkach dostawcy. Ta cena ma 5% opłaty dodanej i jest następnie pomnożona przez 1,5, więc płacisz 1,575 razy cenę listy dostawcy. Jest ona konwertowana na stawkę w cenie Bitcoin na żywo i pobierana w tysiącach kredytu. Pro obrazy, wideo i mowy są cenione na pokolenie, na sekundę lub na postać, a transkrypcja na sekundę dźwięku, z tą samą opłatą i marginesem. Standardowy obraz jest płaski 5 standardowych kredytów i standardowy głos jest płaski 3.
  • I to minimum. Każde wymierzone żądanie, które działa, kosztuje co najmniej 0,05 kredytu: połowa siedzi na standardowym saldzie, 5 stawek na Pro.
  • Trzymaj się, a następnie ustawiaj. Przed uruchomieniem żądania, najwięcej może kosztować jest trzymane z twojego salda, w oparciu o to, co wysłałeś i najwięcej tokenów może napisać. Tekst poza zwykłym ASCII jest rozmieszczony z jego UTF-8 bajtów, a cyfry ASCII i punktacja liczą się jako token każdy, więc tekst w dowolnym scenariuszu, kodzie i numerze są trzymane w całości. Trzymany jest w pełnych kredytach, co najmniej jeden, więc każde żądanie potrzebuje co najmniej 10 darmowych sats na standardowym saldzie lub 100 sats na Pro, aby rozpocząć. Tylko faktyczne koszty są pobierane; reszta jest uwalniana po zakończeniu. Długie żądanie trzyma się tak długo, jak działa; jeśli 402 insufficient_balance Jeśli faktyczny koszt jest większy niż saldo może zapłacić, cały saldo jest pobierany, reszta jest należna (owed_sats W tym nymbot przedmiot i saldo ujemne). To, co jest należne, jest najpierw wypłacane z następnych kredytów, które osiągają ten saldo. Dopóki nie zostanie wypłacone, nic na tym saldzie nie może być wydane: nie przez API, odpowiedzi w aplikacji, przelew lub prezent.
  • Nie ma wystarczającej ilości kredytu. Jeśli saldo nie może pokryć posiadania, wniosek zostaje odrzucony 402 Błąd mówi, który saldo jest krótki, ile stawek wymaga żądanie i ile jest wolnych. max_tokens Oznacza to mniejsze utrzymanie.
  • Niepowodzenia . Nieudane żądanie nic nie kosztuje, chyba że dostawca pobrał fakturę za pracę, którą wykonał przed niepowodzeniem, lub wyszukiwanie w Internecie lub nymbot/auto Sprawdzanie zadań zostało już uruchomione; to jest to, co płacisz, co najmniej 0,05 kredytu. Strumień, który wyciśniesz, jest pobierany za tokeny zgłaszane przez dostawcę: Nymbot kontynuuje czytanie strumienia dostawcy do 25 sekund po opuszczeniu, aby uzyskać to liczenie.
  • Wyszukiwanie WEB Koszt wyszukiwania wynosi 0,008 $, przekształcony w sats, za każdym razem, gdy wyszukiwanie zostało uruchomione, niezależnie od tego, czy model odpowiada, czy nie.

Każda odpowiedź mówi, ile kosztuje. odpowiedzi JSON nymbot przedmiot z saldem, z którego został zapłacony, opłatą w kredytach i ratach oraz co pozostaje:

Koszt przedmiotu

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

Płatne odpowiedzi również noszą te nagłówki, co oznacza, że należy szukać kosztów odpowiedzi, która nie jest JSON, takich jak mówienie:

Headerznaczenie
X-Nymbot-Cost-SatsIle kosztuje ta prośba, w sats.
X-Nymbot-Balance-SatsCo pozostało na bilansie, z którego zostało zapłacone, w ratach.
X-Request-IdIdentyfikator żądania, przy każdej odpowiedzi. Cytat, jeśli skontaktujesz się z obsługą klienta.

Stawki na milion tokenów, już wliczając opłatę i marżę, są w Lista modeli w dolarach i stanach, a także w Cennik listyJeśli cena Bitcoina nie może być odczytana, płatne żądania są zwracane 503 price_unavailable z Retry-After: 60 Zamiast się domyślać.

błędy

Każdy błąd ma tę samą formę, którą klienci OpenAI już rozumieją. code jest to stabilna nazwa, z którą można się zgodzić; message Jest dla ludzi i może się zmienić.

Błąd ciała

{
  "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
  }
}
StatusKiedy
400 invalid_request_errorCiało nie jest ważne JSON (invalid_json), brakuje wymagane pole (missing_required_parameter), wartość jest błędna lub żądanie prosi o coś, czego model lub punkt końcowy nie robi, na przykład narzędzia nymbot/auto (unsupported_tool). param Nazwij to pole. też upstream_rejected gdy dostawca odmówił złożenia wniosku.
401 authentication_errorKlucz jest brakujący, nieznany, odwołany lub wygasły, lub podpisane żądanie jest nieważne lub ponownie wykorzystane.
402 insufficient_quotaBilans nie może pokryć żądania. kod insufficient_balance, z balance, required_sats I balance_sats.
403 permission_errorWniosek nie pasuje do kapsuły klucza (key_limit_reached, z limit_sats, used_sats I reset_at) lub konto może nie korzystać z usługi (account_denied).
404 not_found_errorNieznany kierunek (unknown_endpoint), model, który nie istnieje (model_not_found), lub nieznany klucz, faktura lub wideo.
405Metoda ta istnieje, ale nie z tą metodą (method_not_allowed) w Allow Header wymienia metody, które stosuje.
413ciało lub plik jest zbyt duży (payload_too_large, file_too_large) lub nagranie jest zbyt długie (audio_too_long) to Limity.
415 invalid_request_errorCiało nie jest wysyłane jako application/json (lub w odniesieniu do punktów końcowych, multipart/form-data): unsupported_media_type.
422Głos i język, które nie idą razem w tekście do mowy (voice_language_mismatch, unsupported_language).
429 rate_limit_errorZbyt wiele żądań na tym kluczu, z tego adresu lub z certyfikatami, które nie zostały zweryfikowane (rate_limit_exceeded) lub dostawca jest ograniczeniem stawki (upstream_rate_limitedCzekaj na sekundy w Retry-After.
500 api_errorCoś poszło nie tak po stronie Nymbota (internal_error).
502 api_errorWnioskodawca nie udzielił odpowiedzi (upstream_error) lub nie można wykonać rachunku błyskawicznego (invoice_unavailable).
503 api_errorDostawca jest przeciążony (upstream_overloaded) cena Bitcoina nie może być odczytana (price_unavailable) lub część usługi jest obniżona (service_unavailable, media_hosting_unavailable). Retry-After Mówi, kiedy spróbować ponownie, gdzie jest znane.

Dwa wyjątki :

  • /api/v1/messages odpowiedzi w formacie błędu Anthropic, ponieważ to jest to, co klienci Anthropic analizują: {"type": "error", "error": {"type": "authentication_error", "message": "…"}}Typ następuje według statusu: invalid_request_error, authentication_error, billing_error (402), permission_error, not_found_error, request_too_large, rate_limit_error, api_error lub overloaded_error (503).
  • Żądanie przesyłania strumieniowego, które nie powiodło się przed jego pierwszym bajtem, otrzymuje zwykły błąd JSON z powyższym stanem, a nie strumieniem zdarzeń.

Wiadomości o błędach nigdy nie zawierają wewnętrznych szczegółów innej usługi.

Limity

LimityWartość
Wymagania na klucz120 na minutę, a ponadto 429 z Retry-After.
Wnioski bez klucza120 na minutę na adres, dla modelu, listy dźwięku i metody płatności, kontrolę tokenów zwrotów i płatnych punktów końcowych bez klucza lub płatności. 429 z Retry-After.
Nieudane uwierzytelnianie30 minut na adres dla kluczy, podpisów, zaświadczeń o płatności i tokenów zwrotu pieniędzy, które nie weryfikują. 429 z Retry-After Potwierdzenia są sprawdzane, zanim ciało zostanie przeczytane.
Nowe klucze60 na godzinę za nym i 120 na godzinę za adres.
Top-up faktury60 na godzinę za nym i 120 na godzinę za adres.
Połączenia portfela NWC10 na godzinę za nym i 30 na godzinę za adres. wss:// w standardowym porcie.
Zwrot tokenów60 żądań na minutę.
AdresyAdres IPv6 liczy się jako cały /64 w każdym limicie adresowym, a adres IPv6 z mapą IPv4 jako adres IPv4.
JSON żądanie ciała4 MB; 64 KB dla żądań podpisanych za pomocą nym.
Wielostronne ciało żądania (uploads)32 MB. Obraz do edycji może wynosić do 20 MB, plik audio do 25 MB. W większości 64 części, każda z maksymalnie 8 KB nagłówków części i granicą od 1 do 70 znaków; w przeciwnym razie 400 invalid_multipart.
Zdjęcia w jednym żądanie czatu20 Każda z nich jest https:// lub http:// link do hostingu publicznego lub a data:image/… i url .
Zdjęcia na żądanie pokolenia1 do 4 (n)
Wyjście tokenówWłasny model na najwyższym poziomie.Więcej max_tokens Jest ona obniżona, a nie odrzucona.
Wprowadzenie przemówienia800 znaków dla standardowego głosu, 2000 dla Aura 2.
transkrypcja30 minut dźwięku, 25 MB. Dłuższe nagrywanie jest zabronione 413 i nie jest obciążony, nawet jeśli jego długość jest znana tylko wtedy, gdy Szept usłyszał.
wbudowanych100 zł na żądanie.
Praca wideoWstrzymuj się przez 24 godziny po ich przesłaniu; renderowanie zostaje zrezygnowane po godzinie.
Chce historiiOdstawiamy na 90 dni.
Aktywne klucze per nymTylko najnowsze 50 odwołanych kluczy zostaje zachowane.

Link do obrazu musi wskazywać na host publiczny: adres w sieci prywatnej lub lokalnej lub na własnych stronach Nymbota jest odrzucany.

Co ogień widzi

API nie jest prywatne w taki sposób, w jaki są aplikacje, i warto być dokładnym w jaki sposób.

  • Nie jest szyfrowany od końca do końca. W aplikacjach wiadomość jest zapieczętowana na urządzeniu do kluczy tylko Nymbot trzyma i podróżuje jako Darowizna WrapWniosek API jest zwykłym HTTPS: jest szyfrowany w drodze do Nymbotu, a serwer Nymbotu czyta go w jasnym, aby go obsłużyć.
  • Zgłoszenia i odpowiedzi nie są przechowywane. To, co jest przechowywane, to rachunek: dla każdego żądania czas, model, rodzaj, liczba tokenów, koszt, saldo, klucz i czy się udało, przez 90 dni, co jest tym, co Żądanie historii Rejestr użytkowania tego samego żądania (czas, rodzaj, model, liczba tokenów, koszt, czas trwania i czy użył wyszukiwania internetowego lub odniósł sukces) jest również przechowywany przez 90 dni, obok własnej aplikacji.
  • Wszystko inne utrzymywane dla nym jest małe i wymienione tutaj. Klucze ognia są przechowywane jako hash, nigdy klucz, z ich nazwą, krótkim wskazówką, kapitałem wydatków, okresem resetowania, wygaśnięciem i kiedy zostały wykonane i ostatnio używane; zachowuje się tylko najnowsze 50 odwołanych kluczy. Automatyczny top-up Połączenie portfela jest przechowywane szyfrowane, z jego progiem, kwotą i wynikiem ostatniego top-up. Prace wideo są przechowywane przez 24 godziny. Zapytania płatne za połączenie pozostawiają tylko hasz płatności Lightning przez 7 dni i haszowany token zwrotu przez 30 dni, powiązany z żadnym nimem. Opłaty, których saldo nie może pokryć, są utrzymywane jako należne, dopóki top-up ich nie zapłaci.
  • Wyszukiwanie aplikacji usuwa go. A Urządzenie WIPE Odwołuje i usuwa każdy klucz API, a także usuwa historię zapytań, rekordy użytkowania, połączenie portfela i zadania wideo.
  • Dostawca modelu widzi Twoje żądanieModele katalogów są uruchamiane u ich producentów; standardowe trasy i osadzenia są uruchamiane na Cloudflare.
  • Media generowane są publicznie. Zdjęcia i filmy dostarczane jako linki są przesyłane do publicznych hostów plików Blossom, gdzie adres pliku jest jego hashem. b64_json i wygenerowany obraz powraca w odpowiedzi i nigdy nie jest przesyłany.
  • Takie są zdjęcia, które dajesz generatorowi. Zdjęcie, które możesz przesłać EDITlub wysłać jako a data: URL w generatorze image_url, jest najpierw przesyłany do publicznego hosta Blossom, aby generator mógł go odebrać, a to samo dotyczy. https:// Zdjęcia w żądanym czacie idą do dostawcy modelu, a nie do Blossom.
  • Klucz jest połączony z twoim nym. Wszystko, co klucz wydaje, pochodzi z bilansu twojego nyma, więc użycie API nie jest AnonimowyJeśli chcesz, aby korzystanie z API trzymało się z dala od codziennego nym, wykonaj klucze z oddzielnego nym z własną równowagą.

Jeśli potrzebujesz ochrony aplikacji, skorzystaj z aplikacji. API jest przeznaczone, gdy potrzebujesz modeli w swoich narzędziach.

Każdy punkt końcowy

końcowy punktCo to robiAutyzm
GET /api/v1/modelsLista modeliZ cenamiNikt
POST /api/v1/chat/completionsZakończenie czatuklucz
POST /api/v1/responsesOdpowiedź APIklucz
POST /api/v1/messagesAntropologiczne przesłaniaklucz
POST /api/v1/messages/count_tokensSzacowanie tokenów wejściowychklucz
POST /api/v1/images/generationsGeneruje obrazyklucz lub Błyskawica
POST /api/v1/images/editsEdytuj obrazklucz lub Błyskawica
POST /api/v1/videos, GET /api/v1/videos, GET /api/v1/videos/{id}Rozpoczyna, listuje i sprawdza wideoklucz lub Błyskawica Aby rozpocząć jeden
POST /api/v1/audio/speechTekst do przemówieniaklucz lub Błyskawica
GET /api/v1/audio/models, GET /api/v1/audio/voicesModele audio i głosyNikt
POST /api/v1/audio/transcriptions, POST /api/v1/audio/translationsMówienie do tekstu i do angielskiegoklucz lub Błyskawica
POST /api/v1/embeddingswbudowanychklucz lub Błyskawica
GET /api/v1/credits/balance (lub POST)Obie równowagiklucz
GET /api/v1/topup/payment-methodsSposoby zapłatyNikt
POST /api/v1/topup/create/btc-lightningRachunek błyskawicznyklucz
GET /api/v1/topup/status/{invoice_id}Sprawdź i kredytujklucz
GET /api/v1/queries/historyile kosztuje każda prośbaKlucz lub nym
GET /api/v1/accountPodsumowanie rachunkuNym
/api/v1/keysTworzy, zmienia i odwołuje kluczeNym
/api/v1/nwc-auto-topupAutomatyczne top-upyNym
GET /api/v1/l402/refunds, POST /api/v1/l402/refunds/redeemSprawdź lub wykup token zwrotuRefund token; nym to redeem

“Nym” oznacza żądanie podpisane przez klucz Nostr, opisany w Podpisanie wniosków o kontoW przypadku narzędzi, które już mówią o tych formatach, zobacz Narzędzia i SDK, a dla agentów kodujących, takich jak Claude Code, Codex i Cline, zobacz Narzędzia kodowania.