Treci la conținut
Înapoi la Nymbot

Baza de cunoștințe Dezvoltatorii

Viziunea asupra focului

Modelele, generatoarele și balanțele pe care le utilizați în aplicație, din propriul dvs. cod. API-ul vorbește formatele OpenAI și Anthropic, astfel încât cele mai multe instrumente și SDK-uri funcționează prin schimbarea unei adrese URL de bază și a unei chei.

Ce este focul

Un HTTP API este nymbot.ai care răspunde la aceleași solicitări pe care le trimite deja un client OpenAI sau Anthropic.

Se plătește de la aceleași două echilibrului Nu există nici un abonament și nici o taxă gratuită pe API: fiecare cerere este plătită din creditele pe care le-ați cumpărat.

Ceea ce API-ul nu face este să adauge ceva de la propriul Nymbot. Mesajele dvs. merg la model în timp ce le-ați trimis: nici o promptă de sistem Nymbot, nici o memorie, nici o indicație de dată sau limbă.

Url de bază

UtilizațiUrl bază
OpenAI SDK-uri și instrumente compatibile OpenAIhttps://nymbot.ai/api/v1
SDK antropice și Codul lui Claudehttps://nymbot.ai/api (Adăugarea unui SDK /v1/messages însuşi)

Fiecare punct final trăieşte sub /api/v1/O cale necunoscută se întoarce 404 și o cale cunoscută numită cu metoda greșită revine 405Amândoi sunt JSON.

API-ul răspunde cererilor de origine încrucișată de la orice site, astfel încât o pagină de browser să o poată apela. Tot ce trimiteți unui browser poate fi citit de oricine îl deschide, totuși, așa că faceți acest lucru numai cu o cheie care are o mică capuluiPunctele finale semnate cu nym-ul dvs. (cheile, rezumatul contului, auto-top-up-ul NWC și răscumpărarea rambursării) sunt excepția: într-un browser răspund doar site-urilor proprii ale Nymbot. Semnarea cererilor de cont.

Trimiteți fiecare corp JSON cu Content-Type: application/jsonOrice alt tip este refuzat 415, astfel încât o formă HTML simplă sau o text/plain cererea de pe un alt site nu poate ajunge la API. Cu cURL, treceți -H "Content-Type: application/json" Alături de -d.

Chei de foc

Cheile sunt create în aplicație.Deschidere focului în bara laterală a aplicației web sau în meniul pe Android și iOS și atingeți Creează cheieDați-i un nume și, dacă doriți, o capacă și o dată de expirare.

Copiați-l undeva în siguranță înainte de a închide foaia: Nymbot păstrează doar o amprentă digitală, astfel încât să nu vă poată arăta din nou.

O cheie pare să sk-nymbot- urmată de 43 de litere, cifre, note și subpuncte. Aplicația enumeră fiecare cheie după numele său și un indiciu scurt, cum ar fi: sk-nymbot-Qm7x…c2Lw.

  • O cheie aparține nimului tău. Acesta vă cheltuiește soldul și numai nimul dvs. îl poate face, schimba sau revoca. oricine deține cheia poate cheltui cu ea, așa că tratați-o ca o parolă.
  • Caps sunt în sats. O cheie poate avea un plafon de cheltuieli, iar plafonul poate fi resetat în fiecare zi, în fiecare săptămână (luni) sau în fiecare lună (primul), la 00:00 UTC. Se numără ambele solduri, un credit standard ca 10 sats și un credit Pro ca 100, deci înseamnă același indiferent de soldul pe care îl cheltuiește o cerere. 403 key_limit_reached, chiar dacă răspunsul ar fi venit sub cap; eroarea spune cât este rămas și când capul se resetă. max_tokens O cerere este taxată ceea ce costă de fapt și care contează împotriva capului, deci dacă furnizorul raportează mai multe jetoane decât au fost puse la o parte, ultima cerere care se potrivește poate lua cheia puțin peste capul său; următorul este apoi refuzat.
  • O capotă cheltuită oprește doar cheltuielile. O cheie la capacul său poate verifica în continuare soldul, să citească istoria, să listeze modelele, să numere jetoanele, să încline și să verifice un videoclip pe care l-a început deja.
  • Expirarea este opțională. După data setată, cheia încetează să mai funcționeze.
  • Revocarea este imediată şi definitivă. O cheie revocată nu reușește următoarea cerere. rămâne în listă, marcată revocată, astfel încât istoricul său de cheltuieli are încă sens.
  • Puteți avea până la 25 de chei active, fiecare cu propriul nume.Modificarea perioadei de resetare a unei chei începe o nouă perioadă de la zero.

Aceeași foaie afișează cheltuielile fiecărei chei pentru această perioadă și, în total, când a fost utilizată ultima dată, atât soldurile, cât și cererile API recente. Gestionarea cheilor.

Autentificarea unei cereri

Trimiteți cheia în oricare dintre aceste titluri. Acestea sunt echivalente, deci utilizați ceea ce clientul dvs. trimite în mod implicit:

Headertrimisă de
Authorization: Bearer sk-nymbot-…OpenAI SDK-uri, cele mai multe instrumente, Claude Code cu ANTHROPIC_AUTH_TOKEN
x-api-key: sk-nymbot-…SDK antropice
api-key: sk-nymbot-…Clienți de tip Azure

Returnarea unei chei lipsă, necunoscută, revocată sau expirată 401Cu codul missing_api_key, invalid_api_key, revoked_api_key sau expired_api_keyModelele de listare, modelele audio și vocile și metodele de plată nu au nevoie de cheie.

Imaginile, videoclipurile, discursul, transcrierile și încorporările pot fi, de asemenea, plătite pentru o singură solicitare la un moment dat peste Lightning fără cheie deloc: trimiteți solicitarea fără una și plătiți factura în 402 Răspunsul. vezi Plătiți la cerere fără cheie.

Gestionarea cheilor, rezumatul contului și top-up-urile automate sunt excepția: ele iau o semnătură de la nim în loc de o cheie, astfel încât o cheie scurgere nu poate face mai multe chei. Semnarea cererilor de cont.

Prima dumneavoastră cerere

Puneți cheia într-o variabilă de mediu, apoi întrebați un model ceva. 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 este propriul router Nymbot, plătit din soldul standard. Puneți ID-ul unui model de catalog acolo, cum ar fi anthropic/claude-sonnet-5, pentru a utiliza acest model din echilibrul Pro. Listă de modele Dă fiecare ID.

Cât costă o cerere

API-ul factură exact modul în care face aplicația.

  • Ce echilibru nymbot/auto cheltuieşte Standardă echilibru (10 rate de credit). Fiecare alt model de chat cheltuiește Pro echilibru (100 rate un credit). Generatorul de imagini standard și voce standard cheltuiește credite standard; fiecare alt generator cheltuiește Pro. Embeddings cheltuiește credite standard. Transcription cheltuiește credite standard atunci când soldul standard îl poate acoperi, și credite Pro altfel. Lista de modele spune care echilibru cheltuiește fiecare model.
  • Cât de mult. O cerere de chat este măsurată pe jetoanele pe care modelul le citește și le scrie de fapt, la ratele publicate ale furnizorului. Acest preț are o taxă de 5% adăugată și apoi se înmulțește cu 1,5, astfel încât să plătiți de 1.575 de ori prețul de listă al furnizorului. Se convertește în rate la prețul Bitcoin live și se percepe în mii de credite. Fotografiile pro, videoclipurile și vorbirea sunt prețuite pe generație, pe secundă sau pe caracter, și transkripția pe secundă de sunet, cu aceeași taxă și marjă. Imaginea standard este o placă 5 credite standard și vocea standard o placă 3.
  • cel mai mic. Fiecare cerere măsurată care rulează costă cel puțin 0,05 credit: jumătate din soldul standard, 5 rate pe Pro. Fracțiuni ale unui credit sunt transferate, nu rotunjite de fiecare dată.
  • Țineți și apoi stabiliți. Înainte de a rula o cerere, cel mai mult costul pe care îl poate avea este deținut din soldul dvs., în funcție de ceea ce ați trimis și de cele mai multe jetoane pe care le poate scrie. Textul din afara ASCII este măsurat de la octetele sale UTF-8, iar cifrele ASCII și punctuația se numără ca un jetoan fiecare, astfel încât textul din orice script, cod și numere sunt deținute în întregime. Deținerea este în credite întregi, cel puțin una, astfel încât orice cerere are nevoie de cel puțin 10 rate gratuite pe soldul standard sau 100 rate pe Pro pentru a începe. Numai costul real este perceput; restul este eliberat atunci când se termină. O cerere lungă își păstrează deținerea atâta timp cât funcționează; 402 insufficient_balance În cazul în care costul real este mai mare decât soldul poate plăti, întregul sold este luat, restul este dator (owed_sats În nymbot Obiect, și un sold negativ). Ceea ce se datorează este plătit mai întâi din următoarele credite care ajung la acel sold. Până când nu este plătit, nimic pe acel sold nu poate fi cheltuit: nu de către API, răspunde în aplicație, un transfer sau un cadou.
  • Nu credite suficiente. Dacă soldul nu poate acoperi posesia, cererea este respinsă cu 402 Erorile indică care balanță este scurtă, câte rate cererea are nevoie și câte sunt gratuite. max_tokens Înseamnă o menținere mai mică.
  • şi eşecuri. O cerere care nu reușește nu costă nimic, cu excepția cazului în care furnizorul a facturat pentru munca pe care a făcut-o înainte de eșec, sau o căutare pe web sau nymbot/auto Un flux pe care îl tăiați este perceput pentru jetoanele pe care furnizorul le raportează: Nymbot continuă să citească fluxul furnizorului timp de până la 25 de secunde după ce plecați pentru a obține acel număr.
  • Căutare web Costă $0.008 o căutare, convertită în sats, ori de câte ori a fost efectuată o căutare, indiferent dacă modelul răspunde sau nu.

Fiecare răspuns spune cât costă. răspunsurile JSON poartă o nymbot obiectul cu soldul din care a fost plătit, taxa în credite și rate și ceea ce rămâne:

Obiectul costului

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

Răspunsurile plătite poartă, de asemenea, aceste titluri, care este locul în care să căutați costul unui răspuns care nu este JSON, cum ar fi vorbirea:

Headersemnificaţie
X-Nymbot-Cost-SatsCât costă această cerere, în rate.
X-Nymbot-Balance-SatsCeea ce rămâne pe soldul din care a fost plătit, în rate.
X-Request-IdUn ID pentru cerere, la fiecare răspuns. Citește-l dacă contactezi suportul.

Ratele pe milion de token-uri, inclusiv taxele și marja, sunt în Lista modelelor în dolari și în rate, și pe Listă de prețuriDacă prețul Bitcoin nu poate fi citit, cererile plătite se întorc 503 price_unavailable cu Retry-After: 60 Mai degrabă decât să ghicim.

greșeli

Fiecare eroare are aceeași formă, una pe care clientul OpenAI o înțelege deja. code este un nume stabil pe care îl puteți potrivi; message Este pentru oameni și se poate schimba.

Corpul greșit

{
  "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
  }
}
StatutulCând
400 invalid_request_errorCorpul nu este valabil JSON (invalid_json, un câmp necesar este lipsit (missing_required_parameter, o valoare este incorectă sau solicitarea solicită ceva ce modelul sau punctul final nu face, cum ar fi instrumentele de pe nymbot/auto (unsupported_tool). param Numele câmpului. de asemenea upstream_rejected atunci când furnizorul a refuzat solicitarea.
401 authentication_errorCheia este lipsă, necunoscută, revocată sau expirată sau o cerere semnată este nulă sau reutilizată.
402 insufficient_quotaBilantul nu poate acoperi cererea.Cod insufficient_balanceCu balance, required_sats şi balance_sats.
403 permission_errorCererea nu se potrivește cu capul cheii (key_limit_reachedCu limit_sats, used_sats şi reset_atsau contul poate să nu utilizeze serviciul (account_denied).
404 not_found_errorCalea necunoscută (unknown_endpoint, un model care nu există (model_not_found), sau o cheie necunoscută, o factură sau un videoclip.
405Calea există, dar nu cu această metodă (method_not_allowed) pe Allow Header enumeră metodele pe care le utilizează.
413Corpul sau fișierul este prea mare (payload_too_large, file_too_large) sau o înregistrare este prea lungă (audio_too_long) se Limite.
415 invalid_request_errorTrupul nu este trimis ca application/json (sau, pentru punctele de expunere la sfârșit, multipart/form-data): unsupported_media_type.
422O voce și o limbă care nu merg împreună în text la vorbire (voice_language_mismatch, unsupported_language).
429 rate_limit_errorPrea multe solicitări pe această cheie, de la această adresă, sau cu acreditări care nu au putut fi verificate (rate_limit_exceededÎn cazul în care furnizorul este limitat (upstream_rate_limitedAșteptați pentru secunde în Retry-After.
500 api_errorCeva a mers prost pe partea lui Nymbot (internal_error).
502 api_errorFurnizorul nu a dat un răspuns (upstream_error(sau nu se poate face o factură de fulger)invoice_unavailable).
503 api_errorfurnizorul este supraîncărcat (upstream_overloaded, prețul Bitcoin nu poate fi citit (price_unavailable, sau o parte din serviciu este în jos (service_unavailable, media_hosting_unavailable). Retry-After spune când să încerce din nou, unde este cunoscut.

Două excepţii:

  • /api/v1/messages răspunsuri în format de eroare Anthropic, deoarece asta este ceea ce clienții Anthropic analizează: {"type": "error", "error": {"type": "authentication_error", "message": "…"}}Tipul urmează statutul: invalid_request_error, authentication_error, billing_error (402), permission_error, not_found_error, request_too_large, rate_limit_error, api_error sau overloaded_error (503).
  • O cerere de streaming care eșuează înainte de primul byte primește o eroare JSON obișnuită cu starea de mai sus, nu un flux de evenimente.

Mesajele de eroare nu conțin niciodată detaliile interne ale unui alt serviciu.

Limite

LimităValoare
Solicitări pe cheie120 de minute, mai mult decât atât. 429 cu Retry-After.
Solicitări fără cheie120 pe minut pe adresă, pentru listele de modele, audio și metode de plată, verificări de token de rambursare și puncte terminale plătite apelate fără cheie sau plată. 429 cu Retry-After.
Eșecul autentificării30 de minute pe adresă pentru chei, semnături, credențiale de plată și jetoane de rambursare care nu verifică. 429 cu Retry-After Credențialele sunt verificate înainte de citirea corpului.
chei noi60 pe oră pe nym și 120 pe oră pe adresă.
Facturile top-up60 pe oră pe nym și 120 pe oră pe adresă.
Conexiuni portofel NWC10 pe oră pe nym și 30 pe oră pe adresă. wss:// în portul standard.
Întoarce tokenul60 de solicitări pe minut.
AdresăO adresă IPv6 se numără ca întreg /64 în fiecare limită de adresă, iar o adresă IPv6 cartografiată IPv4 ca adresă IPv4.
Corpul de solicitare JSON4 MB; 64 KB pentru solicitările semnate cu nim.
Corpul de solicitare multipart (uploads)32 MB. O imagine pentru editare poate fi de până la 20 MB, un fișier audio de până la 25 MB. La cele mai multe 64 de părți, fiecare cu cel mult 8 KB de titluri de părți și o limită de 1 până la 70 de caractere; altfel 400 invalid_multipart.
Imagini într-o singură solicitare de chat20. fiecare dintre ele este o https:// sau http:// legătura către un gazdă public, sau a data:image/… Urlă .
Imagini după generație1 până la 4 (n)
Tokenuri de ieșireCapped la maximul modelului propriu. o mai mare max_tokens este redusă la ea, nu refuzată.
Introducerea discursului800 de caractere pentru vocea standard, 2.000 pentru Aura 2.
Transcrierea30 de minute de înregistrare audio, 25 MB. Înregistrarea mai lungă este refuzată cu 413 şi nu este acuzată, chiar dacă lungimea ei este cunoscută numai odată ce Şoptirea a auzit-o.
Îmbrăcăminte100 lei pe cerere.
Video locuri de muncăPăstrați timp de 24 de ore după ce sunt trimise; un randament este renunțat după o oră.
Vrei istorieAşteptaţi 90 de zile.
Chei active per nymSe păstrează doar cele mai noi 50 de chei revocate.

Un link către o imagine trebuie să indice un gazdă public: o adresă într-o rețea privată sau locală, sau pe site-urile proprii ale Nymbot, este refuzată.

Ce poate vedea focul

API-ul nu este privat în modul în care sunt aplicațiile, și merită să fie exact despre cum.

  • Nu este criptat de la capăt la capăt. În aplicații, un mesaj este sigilat pe dispozitivul dvs. la chei numai Nymbot deține și călătorește ca un Cadouri pentru WrapO cerere de API este HTTPS obișnuit: este criptată pe drum spre Nymbot, iar serverul Nymbot o citește în clar pentru a o gestiona.
  • Rapoartele și răspunsurile nu sunt stocate. Ceea ce se păstrează este factura: pentru fiecare cerere timpul, modelul, tipul, numărătoarele de jetoane, costul, soldul, cheia și dacă a reușit, timp de 90 de zile, ceea ce este ceea ce Vrei istorie O înregistrare a utilizării aceleiași solicitări (timp, tip, model, număr de jetoane, cost, durată și dacă a folosit căutarea pe web sau a reușit) este, de asemenea, păstrată timp de 90 de zile, alături de propria aplicație.
  • Toate celelalte lucruri deținute pentru o nimă sunt mici și enumerate aici. Chei de foc sunt stocate ca un hash, niciodată cheia, cu numele lor, un indiciu scurt, cap de cheltuieli, perioada de resetare, expirarea și când au fost făcute și ultima utilizare; numai cele mai noi 50 de chei revocate sunt păstrate. Top-up automată conexiunea portofelului este stocată criptată, cu pragul, valoarea și rezultatul ultimului top-up. Locurile de muncă video sunt păstrate timp de 24 de ore. Solicitările plătite pe apel lasă doar un hash de plată Lightning timp de 7 zile și un token de rambursare hashed timp de 30 de zile, legat de nici un nim. Taxele pe care un sold nu le-ar putea acoperi sunt păstrate ca fiind datorate până când un top-up le plătește.
  • Ștergerea aplicației îl șterge. A Dispozitivul Wipe revocă și șterge fiecare cheie API și șterge istoricul interogărilor, înregistrările de utilizare, conexiunea portofelului și locurile de muncă video.
  • Furnizorul modelului vă vede cerereaModelele de cataloage rulează la creatorii lor; rutele standard și încorporările rulează pe Cloudflare.
  • Media generată este publică. Imaginile și videoclipurile livrate sub formă de link-uri sunt încărcate la gazdele publice de fișiere Blossom, unde adresa unui fișier este hash-ul său. b64_json și o imagine generată se întoarce în răspuns și nu este încărcată niciodată.
  • Acestea sunt imaginile pe care le dați unui generator. O imagine pe care o încărcați Edit, sau trimiteți ca a data: URL-ul unui generator image_url, este încărcat într-un gazdă public Blossom mai întâi, astfel încât generatorul să o poată ridica, și același lucru se aplică. https:// Imaginile dintr-o cerere de chat merg la furnizorul modelului, nu la Blossom.
  • O cheie este legată de nim. Tot ce cheltuiește o cheie provine din soldul nimului dvs., deci utilizarea API nu este AnonimăDacă doriți ca utilizarea API-ului să fie păstrată separat de nym-ul dvs. de zi cu zi, faceți cheile dintr-un nym separat cu propriul său echilibru.

Dacă aveți nevoie de protecția aplicațiilor, utilizați aplicațiile. API-ul este pentru atunci când aveți nevoie de modele în propriile instrumente.

Fiecare punct final

punctul finalCe faceaută
GET /api/v1/modelsListă de modeleCu preţurileniciuna
POST /api/v1/chat/completionsChat completăricheie
POST /api/v1/responsesRăspunsuri APIcheie
POST /api/v1/messagesMesajele antropicecheie
POST /api/v1/messages/count_tokensEstimarea tokenurilor de intrarecheie
POST /api/v1/images/generationsGenerarea imaginilorcheie sau fulgerul
POST /api/v1/images/editsEditează o imaginecheie sau fulgerul
POST /api/v1/videos, GET /api/v1/videos, GET /api/v1/videos/{id}Începe, listează și verifică videoclipuricheie sau fulgerul Pentru a începe o
POST /api/v1/audio/speechTextul discursuluicheie sau fulgerul
GET /api/v1/audio/models, GET /api/v1/audio/voicesModele audio și vociniciuna
POST /api/v1/audio/transcriptions, POST /api/v1/audio/translationsVorbire în text, și în englezăcheie sau fulgerul
POST /api/v1/embeddingsÎmbrăcămintecheie sau fulgerul
GET /api/v1/credits/balance (sau POST)Ambele echilibrecheie
GET /api/v1/topup/payment-methodsModalități de platăniciuna
POST /api/v1/topup/create/btc-lightningO factură de fulgercheie
GET /api/v1/topup/status/{invoice_id}Verifică și crediteazăcheie
GET /api/v1/queries/historyCât costă fiecare cererecheie sau nym
GET /api/v1/accountRezumatul contuluiNIM
/api/v1/keysCreează, modifică și revocă cheileNIM
/api/v1/nwc-auto-topupTop-up automatăNIM
GET /api/v1/l402/refunds, POST /api/v1/l402/refunds/redeemVerifică sau răscumpără un token de rambursareRefund token; nym să răscumperi

“Nym” înseamnă o solicitare semnată de cheia dvs. Nostr, descrisă în Semnarea cererilor de contPentru instrumente care vorbesc deja aceste formate, vezi Instrumente și SDK-uri, și pentru agenți de codificare cum ar fi Claude Code, Codex și Cline, a se vedea Instrumente de codificare.