Vidensgrundlag Udviklere
Fire overblik
De modeller, generatorer og balance, du bruger i appen, fra din egen kode. API'en taler OpenAI og Anthropic formater, så de fleste værktøjer og SDK'er fungerer ved at ændre en base URL og en nøgle.
Denne side er maskinoversat for nemheds skyld. Den engelske original er den version, der gælder.
Hvad er ild
En HTTP API er nymbot.ai som besvarer de samme anmodninger, som en OpenAI- eller Anthropic-klient allerede sender.
- Chat færdiggørelse, den Besvarelse af API og Antropiske budskaber, med streaming, værktøjer, billeder, begrundelse og web-søgning, for hver model i Kataloger og for Nymbots egen auto-routing.
- Billeder, Videoer, taler, Transkription og Embedsmænd.
- Dine Balancen, Blinkende top-ups, Automatisk top-up fra din tegnebog og a Historien hvad hver ansøgning koster.
Det betales fra de samme to Balancer Der er ingen abonnement og ingen gratis tilladelse på API: Hver forespørgsel betales fra de kreditter, du har købt.
Hvad API'en ikke gør, er at tilføje noget af Nymbots eget. Dine beskeder går til modellen, da du sendte dem: ingen Nymbots systemopfordring, ingen hukommelse, ingen dato eller sprog hints.
Grundlæggende URL'er
| Brug af | Grundlæggende URL |
|---|---|
| OpenAI SDKs og OpenAI-kompatible værktøjer | https://nymbot.ai/api/v1 |
| Antropiske SDK'er og Claude Kode | https://nymbot.ai/api SDK tilføjer /v1/messages sig selv) |
Hver ende lever under /api/v1/En ukendt vej vender tilbage 404 og en kendt vej kaldet med den forkerte metode returnerer 405Begge dele er JSON.
API'en svarer på krydsoprindelsesforespørgsler fra et hvilket som helst websted, så en browser side kan ringe til det. Alt, hvad du sender til en browser, kan læses af den, der åbner det, dog, så gør det kun med en nøgle, der har en lille HovedDe slutpunkter, der er underskrevet med din nym (nøgler, kontooversigt, NWC auto-top-up og refund indløsning) er undtagelsen: i en browser svarer de kun på Nymbots egne websteder. Signering af kontoanmodninger.
Send hver JSON krop med Content-Type: application/jsonEnhver anden type afvises med 415, så en simpel HTML form eller en text/plain en forespørgsel fra et andet websted kan ikke nå API'en.
-H "Content-Type: application/json" Sammen med -d.
Brandnøgler
Nøgler oprettes i appen. Åben ild i webapps sidebar eller i menuen på Android og iOS, og tryk på Opret en nøgleGiv det et navn og, hvis du vil, en cap og en udløbsdato.
Nymbot beholder kun et fingeraftryk af det, så det ikke kan vise det til dig igen. En tabt nøgle kan ikke gendannes; tilbagekald den og lav en anden.
En nøgle ser ud som sk-nymbot- efterfulgt af 43 bogstaver, cifre, dashes og underscores. appen lister hver nøgle med sit navn og en kort hint såsom
sk-nymbot-Qm7x…c2Lw.
- En nøgle tilhører din nym. Det bruger din balance, og kun din nym kan lave, ændre eller tilbagekalde det. Enhver, der holder nøglen, kan bruge det, så behandle det som en adgangskode.
- Caps er i sats. En nøgle kan have en udgiftskapacitet, og kapaciteten kan genindstilles hver dag, hver uge (mandag) eller hver måned (den første), ved 00:00 UTC. Den tæller begge saldi, en standardkredit som 10 sats og en Pro-kredit som 100, så det betyder det samme uanset hvilken saldo en anmodning bruger. Før en anmodning kører, er det maksimale, det kunne koste (rundet op til hele kreditter) sat mod, hvad der er tilbage af kapaciteten.
403key_limit_reached, selv om svaret ville være kommet ind under kappen; fejlen fortæller, hvor meget der er tilbage, og hvornår kappen nulstilles.max_tokensEn anmodning opkræves, hvad det rent faktisk koster, og det tæller mod cap, så hvis udbyderen rapporterer flere tokens, end der blev sat til side, kan den sidste anmodning, der passer, tage nøglen lidt ud over cap; den næste afvises derefter. - En brugt cap stopper kun udgifterne. En nøgle ved sin kappe kan stadig tjekke saldoen, læse dens historie, liste modeller, tælle tokens, top op og tjekke på en video, den allerede har startet.
- Udløbet er valgfrit. Efter den dato, du har angivet, holder nøglen op med at arbejde.
- Tilbagekaldelse er øjeblikkelig og endelig. En tilbagekaldt nøgle fejler sin næste anmodning. Den forbliver på listen, markeret tilbagekaldt, så dens udgiftshistorik stadig giver mening.
- Du kan have op til 25 aktive nøgler, hver med sit eget navn.
Det samme ark viser hver nøgles udgifter i denne periode og i alt, når den sidst blev brugt, både dine saldi og dine seneste API-forespørgsler. Styring af nøgler.
Autentisering af en anmodning
Send nøglen i en af disse overskrifter. De er ækvivalente, så brug hvad din klient sender som standard:
| Header | Sendt af |
|---|---|
Authorization: Bearer sk-nymbot-… | OpenAI SDK'er, de fleste værktøjer, Claude Code med ANTHROPIC_AUTH_TOKEN |
x-api-key: sk-nymbot-… | Antropisk SDK |
api-key: sk-nymbot-… | Azure-stil kunder |
En manglende, ukendt, tilbagekaldt eller udløbet nøgle returnerer 401Med koden
missing_api_key, invalid_api_key, revoked_api_key eller
expired_api_keyListing modeller, lydmodeller og stemmer, og betalingsmetoder behøver ingen nøgle.
Billeder, video, tale, transkription og indlejringer kan også betales for en anmodning ad gangen over Lightning uden nøgle overhovedet: send anmodningen uden en og betale fakturaen i 402 Svar: Se Betal på forespørgsel uden nøgle.
Nøgleadministration, kontooversigt og automatiske top-ups er undtagelsen: de tager en signatur fra din nym i stedet for en nøgle, så en lækket nøgle ikke kan gøre flere nøgler. Signering af kontoanmodninger.
Din første anmodning
Sæt nøglen i en miljøvariabel, og spørg derefter en model om noget. 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 er Nymbots egen routing, betalt fra standardbalancen. Sæt en katalogmodells id der i stedet, såsom anthropic/claude-sonnet-5, for at bruge denne model fra Pro balance. Listen over modeller Giv alle id’er.
Hvad koster en anmodning
API'en fakturerer præcis som appen gør.
- Hvilken balance.
nymbot/autoUdgifterne til Standarden balance (10 sats en kredit). Hver anden chat model bruger Pro af balance (100 sats et kredit). Den standard billedgenerator og den standard stemme bruger standard kreditter; hver anden generator bruger Pro. Embeddings bruger standard kreditter. Transcription bruger standard kreditter, når standardbalancen kan dække det, og Pro kreditter ellers. - Hvor meget . En chat-anmodning måles på de tokens, som modellen rent faktisk læser og skriver, på udbyderens offentliggjorte satser. Denne pris har en 5% gebyr tilføjet og multipliceres derefter med 1,5, så du betaler 1.575 gange udbyderens listepris. Den konverteres til sats på den levende Bitcoin pris og opkræves i tusinddele af en kredit. Pro billeder, video og tale prissættes pr. generation, pr. sekund eller pr. tegn, og transkription pr. sekund af lyd, med samme gebyr og margin.
- Det mindste . Hver målt anmodning, der kører, koster mindst 0,05 kredit: halv en sat på standardbalancen, 5 satser på Pro. Fraktioner af et kredit overføres, ikke afrundet hver gang.
- Hold og sæt derefter. Før en anmodning kører, det meste, det kan koste, holdes fra din balance, baseret på, hvad du har sendt og de fleste tokens, det kan skrive. Teksten uden for den almindelige ASCII er dimensioneret fra dens UTF-8 byte, og ASCII-cifre og punktering tæller som en token hver, så tekst i ethvert script, kode og tal holdes for fuldt ud. Holdet er i hele kreditter, mindst en, så enhver anmodning har brug for mindst 10 sats gratis på standardbalancen eller 100 sats på Pro til at starte. Kun den faktiske pris opkræves; resten frigives, når den slutter. En lang anmodning holder sit hold, så længe den kører; hvis de holdt kreditter stopper at være tilgængelige alligevel, stopper en strøm med en
402insufficient_balanceHvis den faktiske omkostning er mere end saldoen kan betale, tages hele saldoen, resten skyldes (owed_satsI dennymbotobjekt, og en negativ balance). Det, der skyldes, betales først ud af de næste kreditter, der når den balance. Indtil det er betalt, kan intet på den balance bruges: ikke af API'en, svar i appen, en overførsel eller en gave. - Ikke nok kredit. Hvis saldoen ikke kan dække holdet, afvises anmodningen med
402Fejlen fortæller, hvilken balance der er kort, hvor mange satser anmodningen har brug for, og hvor mange der er gratis.max_tokensDet betyder mindre hold. - af fiasko. En forespørgsel, der mislykkes koster ingenting, medmindre udbyderen faktureret for det arbejde, det gjorde før mislykkes, eller en web-søgning eller
nymbot/autoEn stream du afskærer opkræves for de tokens, som udbyderen rapporterer: Nymbot fortsætter med at læse udbyderens stream i op til 25 sekunder efter du forlader for at få det tal. - Websøgning koster $ 0,008 en søgning, konverteret til sats, hver gang en søgning blev kørt, uanset om modellen så svarer eller fejler.
Hvert svar fortæller, hvad det koster. JSON-svar bærer en nymbot objekt med den saldo, det blev betalt fra, gebyret i kreditter og satser, og hvad der er tilbage:
Omkostningsobjektet
"nymbot": {
"balance": "pro",
"charged_credits": 0.162,
"charged_sats": 16.2,
"balance_credits": 412.425,
"balance_sats": 41242.5
}
Betalte svar har også disse overskrifter, som er, hvor du skal kigge efter omkostningerne ved et svar, der ikke er JSON, såsom tale:
| Header | Betydning |
|---|---|
X-Nymbot-Cost-Sats | Hvad denne anmodning koster, i sats. |
X-Nymbot-Balance-Sats | Hvad der er tilbage på den balance, den blev betalt fra, i sats. |
X-Request-Id | Et id for anmodningen, på hvert svar. Citer det, hvis du kontakter support. |
Priserne pr. million tokens, der allerede inkluderer gebyr og margin, er i
Liste over modeller i dollars og sats, og på
PrislistenHvis Bitcoin-prisen ikke kan læses, returneres betalte anmodninger 503 price_unavailable med
Retry-After: 60 I stedet for at gætte.
Fejl
Hver fejl har den samme form, som OpenAI-klienter allerede forstår. code er et stabilt navn, du kan matche; message Det er for mennesker og kan ændre sig.
Forkert krop
{
"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
}
}
| Status er | Når |
|---|---|
400 invalid_request_error | JSON er ikke gyldig (invalid_json) mangler et krævet felt (missing_required_parameter), en værdi er forkert, eller anmodningen beder om noget, som modellen eller slutpunktet ikke gør, f.eks. værktøjer på nymbot/auto (unsupported_tool). param Navn på feltet. også upstream_rejected når udbyderen har afvist anmodningen. |
401 authentication_error | Nøglen er manglende, ukendt, tilbagekaldt eller udløbet, eller en underskrevet anmodning er ugyldig eller genbrugt. |
402 insufficient_quota | Balancen kan ikke dække anmodningen.Kode insufficient_balance, med balance, required_sats og balance_sats. |
403 permission_error | Anmodningen passer ikke til nøgleens cap (key_limit_reached, med limit_sats, used_sats og reset_at), eller kontoen kan ikke bruge tjenesten (account_denied). |
404 not_found_error | En ukendt vej (unknown_endpoint) en model, der ikke eksisterer (model_not_found), eller en ukendt nøgle, faktura eller video. |
405 | Denne metode findes, men ikke med denne metode (method_not_allowed) den Allow Header lister de metoder, den bruger. |
413 | Kroppen eller filen er for stor (payload_too_large, file_too_large) eller en optagelse er for lang (audio_too_long) Se grænser. |
415 invalid_request_error | Kroppen sendes ikke som application/json (Og når det kommer til overflader, multipart/form-data): unsupported_media_type. |
422 | En stemme og et sprog, der ikke går sammen i tekst til tale (voice_language_mismatch, unsupported_language). |
429 rate_limit_error | For mange anmodninger på denne nøgle, fra denne adresse, eller med legitimationsoplysninger, der ikke kunne bekræftes (rate_limit_exceeded) eller udbyderen er rentebegrænsende (upstream_rate_limitedVenter på sekunderne i Retry-After. |
500 api_error | Noget gik galt på Nymbots side (internal_error). |
502 api_error | Udbyderen har ikke svaret (upstream_error) eller en Lightning-faktura kunne ikke laves (invoice_unavailable). |
503 api_error | Leverandøren er overbelastet (upstream_overloaded), prisen på Bitcoin kan ikke læses (price_unavailable) eller en del af tjenesten er nede (service_unavailable, media_hosting_unavailable). Retry-After siger, hvornår man skal prøve igen, hvor det er kendt. |
To undtagelser er:
/api/v1/messagessvar i Anthropics fejlformat, da det er det, som Anthropic-klienter analyserer:{"type": "error", "error": {"type": "authentication_error", "message": "…"}}Typen følger status:invalid_request_error,authentication_error,billing_error(402),permission_error,not_found_error,request_too_large,rate_limit_error,api_errorelleroverloaded_error(503).- En streamingforespørgsel, der fejler, før dens første byte får en almindelig JSON-fejl med status ovenfor, ikke en begivenhedsstrøm.
Fejlmeddelelser indeholder aldrig interne oplysninger om en anden tjeneste.En leverandørs egen fejl omskrives, før den når dig.
Grænser
| Grænsen | Værdi |
|---|---|
| Anmodninger pr. nøgle | 120 i minuttet, og derudover 429 med Retry-After. |
| Ansøgning uden nøgle | 120 pr. minut pr. adresse, for model, lyd og betalingsmetode lister, refundering token checks, og betalt endpoint opkald uden en nøgle eller betaling. 429 med Retry-After. |
| Svigtet autentisering | 30 minutter pr. adresse for nøgler, signaturer, betalingsoplysninger og refunderingstokens, der ikke bekræfter. 429 med Retry-After Indtil minuttet er overstået, kontrolleres legitimationsoplysningerne, før kroppen læses. |
| Nye nøgler | 60 pr. time pr. nym og 120 pr. time pr. adresse. |
| Top-up fakturaer | 60 pr. time pr. nym og 120 pr. time pr. adresse. |
| NWC wallet forbindelser | 10 pr. time pr. nym og 30 pr. time pr. adresse. wss:// På den almindelige port. |
| Tilbagebetaling af tokens | 60 anmodninger pr. minut pr. token. |
| Adresser | En IPv6-adresse tæller som sin helhed /64 i hver adresse grænse, og en IPv4-mappet IPv6-adresse som sin IPv4-adresse. |
| JSON forespørgsel krop | 4 MB; 64 KB for anmodninger underskrevet med din nym. |
| Multipart forespørgsel krop (uploads) | 32 MB. Et billede til redigering kan være op til 20 MB, en lydfil op til 25 MB. På højst 64 dele, hver med højst 8 KB af deloverskrifter, og en grænse på 1 til 70 tegn; ellers 400 invalid_multipart. |
| Billeder i en chat forespørgsel | 20 Det er en https:// eller http:// link til en offentlig vært, eller a data:image/… af URL. |
| Billeder efter generation anmodning | 1 til 4 (n) |
| Udledning af tokens | Modellen er udstyret med en højere størrelse. max_tokens er nedsat til det, ikke afvist. |
| Input tale | 800 tegn for standard stemme, 2000 for Aura 2. |
| Transkription | 30 minutter lyd, 25 MB. Længere optagelse er forbudt med 413 og ikke opkrævet, selv når dens længde kun kendes, når Whisper har hørt det. |
| Indsætninger | 100 point pr. anmodning. |
| Video job | Vent i 24 timer efter de er indsendt; en rendering opgives efter en time. |
| Ønsker historie | Vent i 90 dage. |
| Aktive nøgler pr. nym | Kun de seneste 50 tilbagekaldte nøgler bevares. |
Et link til et billede skal pege på en offentlig vært: En adresse på et privat eller lokalt netværk, eller på Nymbots egne websteder, afvises.
Hvad ilden kan se
API'en er ikke privat på den måde apps er, og det er værd at være præcis om, hvordan.
- Det er ikke end-to-end krypteret. I apps er en meddelelse forseglet på din enhed til nøgler kun Nymbot holder og rejser som en Gaver til WrapEn API-anmodning er almindelig HTTPS: den er krypteret på vej til Nymbot, og Nymbots server læser den i klar til at håndtere den.
- Prompter og svar gemmes ikke. Hvad der holdes er regningen: for hver anmodning den tid, model, type, token tæller, omkostninger, balance, nøgle og om det lykkedes, i 90 dage, hvilket er hvad Kræver historie En registrering af brugen af den samme anmodning (tid, type, model, token tæller, omkostninger, varighed og om det brugte web-søgning eller lykkedes) opbevares også i 90 dage, sammen med app'ens egen.
- Alt andet, der holdes til en nym, er lille og opført her. Brandnøgler er gemt som en hash, aldrig nøglen, med deres navn, en kort hint, udgiftskapacitet, nulstillingsperiode, udløb og hvornår de blev lavet og sidst brugt; kun de nyeste 50 tilbagekaldte nøgler opbevares. Automatisk top-up Video jobs opbevares i 24 timer. anmodninger betalt pr. opkald efterlader kun en Lightning betaling hash i 7 dage og en hash refundering token i 30 dage, knyttet til ingen nym. gebyrer en balance ikke kunne dække holdes som skyldte, indtil en top-up betaler dem.
- Sletning af appen sletter den. A Udstyr Wipe tilbagekalder og sletter hver API-nøgle, og sletter forespørgselshistorikken, brugsoplysninger, tegnebogforbindelse og videoopgaver.
- Modellens udbyder ser din anmodningKatalogmodeller kører på deres skabere; standardruter og indlejringer kører på Cloudflare.
- Genererede medier er offentlige. Billeder og videoer, der leveres som links, uploades til offentlige Blossom-filværter, hvor en fils adresse er dens hash. Enhver med linket kan åbne det, og Nymbot kan ikke hente det igen.
b64_jsonog et genereret billede returneres i svaret og uploades aldrig. - Så er det de billeder, du giver en generator. Et billede du uploader til
Edit, eller send som a
data:URL i en generatorimage_url, er uploadet til en offentlig Blossom vært først, så generatoren kan hente det, og det samme gælder for det.https://Billeder i en chat-anmodning går til modelens udbyder, ikke til Blossom. - En nøgle er knyttet til din nym. Alt, hvad en nøgle bruger, kommer fra din nym-balance, så API-brug er ikke AnonymeHvis du vil have API-brug, der holdes adskilt fra din daglige nym, skal du lave nøglerne fra en separat nym med sin egen balance.
Hvis du har brug for beskyttelse af apps, skal du bruge apps. API'en er til, når du har brug for modellerne i dine egne værktøjer.
Alle slutpunkter
| Endpoint | Hvad den gør | Auth |
|---|---|---|
GET /api/v1/models | Lister af modellerMed priserne | Ingen |
POST /api/v1/chat/completions | Chat færdiggørelse | nøgle |
POST /api/v1/responses | Besvarelse af API | nøgle |
POST /api/v1/messages | Antropiske budskaber | nøgle |
POST /api/v1/messages/count_tokens | Beregning af input tokens | nøgle |
POST /api/v1/images/generations | Genererer billeder | Nøgle eller Lightning |
POST /api/v1/images/edits | Edit et billede | Nøgle eller Lightning |
POST /api/v1/videos, GET /api/v1/videos, GET /api/v1/videos/{id} | Start, lister og tjek videoer | Nøglen eller Lightning Til at starte en |
POST /api/v1/audio/speech | Tekst til tale | Nøgle eller Lightning |
GET /api/v1/audio/models, GET /api/v1/audio/voices | Lydmodeller og stemmer | Ingen |
POST /api/v1/audio/transcriptions, POST /api/v1/audio/translations | Tal til tekst og til engelsk | Nøgle eller Lightning |
POST /api/v1/embeddings | Indsætninger | Nøgle eller Lightning |
GET /api/v1/credits/balance (eller POST) | Begge balancer | nøgle |
GET /api/v1/topup/payment-methods | Måder at betale | Ingen |
POST /api/v1/topup/create/btc-lightning | En lynnedslagskilde | nøgle |
GET /api/v1/topup/status/{invoice_id} | Tjek og kredit det | nøgle |
GET /api/v1/queries/history | Hvad koster hver ansøgning | Key eller nym |
GET /api/v1/account | Konto sammenfatning | Nym |
/api/v1/keys | Opret, ændre og tilbagekalde nøgler | Nym |
/api/v1/nwc-auto-topup | Automatiske top-ups | Nym |
GET /api/v1/l402/refunds, POST /api/v1/l402/refunds/redeem | Checks eller indløser en refundering token | Tilbagebetale token; nym til redeem |
“Nym” betyder en anmodning underskrevet af din Nostr-nøgle, beskrevet i Signering af kontoanmodningerFor værktøjer, der allerede taler disse formater, se Værktøjer og SDK'er, og for kodningsagenter som Claude Code, Codex og Cline, se Kodningsværktøjer.