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.
Această pagină este tradusă automat pentru comoditate. Originalul în limba engleză este versiunea care se aplică.
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.
- Chat completăriDe aceea, la Răspunsuri API şi Mesajele antropice, cu streaming, instrumente, imagini, raționament și căutare web, pentru fiecare model din Catalogul și pentru auto-routing-ul propriu al lui Nymbot.
- Imagini, VIDEO, discursului, Transcrierea şi îmbrăcăminte.
- Dvs echilibru, Lightning în top-up, Top-up automat din portofel şi a Istoricul Cât costă fiecare cerere.
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ți | Url bază |
|---|---|
| OpenAI SDK-uri și instrumente compatibile OpenAI | https://nymbot.ai/api/v1 |
| SDK antropice și Codul lui Claude | https://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.
403key_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_tokensO 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:
| Header | trimisă 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/autocheltuieş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ă;
402insufficient_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ÎnnymbotObiect, ș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
402Erorile 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/autoUn 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:
| Header | semnificaţie |
|---|---|
X-Nymbot-Cost-Sats | Cât costă această cerere, în rate. |
X-Nymbot-Balance-Sats | Ceea ce rămâne pe soldul din care a fost plătit, în rate. |
X-Request-Id | Un 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
}
}
| Statutul | Când |
|---|---|
400 invalid_request_error | Corpul 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_error | Cheia este lipsă, necunoscută, revocată sau expirată sau o cerere semnată este nulă sau reutilizată. |
402 insufficient_quota | Bilantul nu poate acoperi cererea.Cod insufficient_balanceCu balance, required_sats şi balance_sats. |
403 permission_error | Cererea 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_error | Calea necunoscută (unknown_endpoint, un model care nu există (model_not_found), sau o cheie necunoscută, o factură sau un videoclip. |
405 | Calea există, dar nu cu această metodă (method_not_allowed) pe Allow Header enumeră metodele pe care le utilizează. |
413 | Corpul 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_error | Trupul nu este trimis ca application/json (sau, pentru punctele de expunere la sfârșit, multipart/form-data): unsupported_media_type. |
422 | O voce și o limbă care nu merg împreună în text la vorbire (voice_language_mismatch, unsupported_language). |
429 rate_limit_error | Prea 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_error | Ceva a mers prost pe partea lui Nymbot (internal_error). |
502 api_error | Furnizorul nu a dat un răspuns (upstream_error(sau nu se poate face o factură de fulger)invoice_unavailable). |
503 api_error | furnizorul 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/messagesră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_errorsauoverloaded_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 cheie | 120 de minute, mai mult decât atât. 429 cu Retry-After. |
| Solicitări fără cheie | 120 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ării | 30 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 noi | 60 pe oră pe nym și 120 pe oră pe adresă. |
| Facturile top-up | 60 pe oră pe nym și 120 pe oră pe adresă. |
| Conexiuni portofel NWC | 10 pe oră pe nym și 30 pe oră pe adresă. wss:// în portul standard. |
| Întoarce tokenul | 60 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 JSON | 4 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 chat | 20. fiecare dintre ele este o https:// sau http:// legătura către un gazdă public, sau a data:image/… Urlă . |
| Imagini după generație | 1 până la 4 (n) |
| Tokenuri de ieșire | Capped la maximul modelului propriu. o mai mare max_tokens este redusă la ea, nu refuzată. |
| Introducerea discursului | 800 de caractere pentru vocea standard, 2.000 pentru Aura 2. |
| Transcrierea | 30 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ăminte | 100 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 istorie | Aşteptaţi 90 de zile. |
| Chei active per nym | Se 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 generatorimage_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 final | Ce face | aută |
|---|---|---|
GET /api/v1/models | Listă de modeleCu preţurile | niciuna |
POST /api/v1/chat/completions | Chat completări | cheie |
POST /api/v1/responses | Răspunsuri API | cheie |
POST /api/v1/messages | Mesajele antropice | cheie |
POST /api/v1/messages/count_tokens | Estimarea tokenurilor de intrare | cheie |
POST /api/v1/images/generations | Generarea imaginilor | cheie sau fulgerul |
POST /api/v1/images/edits | Editează o imagine | cheie sau fulgerul |
POST /api/v1/videos, GET /api/v1/videos, GET /api/v1/videos/{id} | Începe, listează și verifică videoclipuri | cheie sau fulgerul Pentru a începe o |
POST /api/v1/audio/speech | Textul discursului | cheie sau fulgerul |
GET /api/v1/audio/models, GET /api/v1/audio/voices | Modele audio și voci | niciuna |
POST /api/v1/audio/transcriptions, POST /api/v1/audio/translations | Vorbire în text, și în engleză | cheie sau fulgerul |
POST /api/v1/embeddings | Îmbrăcăminte | cheie sau fulgerul |
GET /api/v1/credits/balance (sau POST) | Ambele echilibre | cheie |
GET /api/v1/topup/payment-methods | Modalități de plată | niciuna |
POST /api/v1/topup/create/btc-lightning | O factură de fulger | cheie |
GET /api/v1/topup/status/{invoice_id} | Verifică și creditează | cheie |
GET /api/v1/queries/history | Cât costă fiecare cerere | cheie sau nym |
GET /api/v1/account | Rezumatul contului | NIM |
/api/v1/keys | Creează, modifică și revocă cheile | NIM |
/api/v1/nwc-auto-topup | Top-up automată | NIM |
GET /api/v1/l402/refunds, POST /api/v1/l402/refunds/redeem | Verifică sau răscumpără un token de rambursare | Refund 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.