Kunnskapsgrunnlag Utviklere
Brann overblikk
De modellene, generatorene og balanse du bruker i appen, fra din egen kode. API snakker OpenAI og Anthropic formater, så de fleste verktøy og SDKer fungerer ved å endre en base URL og en nøkkel.
Denne siden er maskinoversatt for enkelhets skyld. Den engelske originalen er versjonen som gjelder.
Hva er brann
En HTTP API på nymbot.ai som svarer på de samme forespørslene som en OpenAI eller Anthropic-klient allerede sender.
- Chat fullføringerog den Svar fra API og Antropiske budskap, med streaming, verktøy, bilder, resonnement og nettsøk, for hver modell i Kataloger og for Nymbots egen auto-routing.
- bilder, Videoer, taler, transkripsjon og Embedded.
- Din Balansen, Lightning topp-up, Automatisk topp-up fra lommeboken din og a Historie hva hver forespørsel koster.
Betales fra de samme to Balanseringer Det er ingen abonnement og ingen gratis tillatelse på API: hver forespørsel betales fra kreditter du kjøpte.
Det API ikke gjør er å legge til noe av Nymbots egen. Meldingene dine går til modellen som du sendte dem: ingen Nymbots systemoppsummering, ingen minne, ingen dato eller språk hint.
Grunnleggende URLs
| Bruker | Grunnleggende URL |
|---|---|
| OpenAI SDK og OpenAI-kompatible verktøy | https://nymbot.ai/api/v1 |
| Antropisk SDK og Claude Kode | https://nymbot.ai/api (SDK legger til /v1/messages seg selv) |
Hver ende lever under /api/v1/En ukjent vei tilbake 404 og en kjent vei kalt med feil metode returnerer 405Begge deler er JSON.
API-en svarer på kryssopprinnelsesforespørsler fra et hvilket som helst nettsted, slik at en nettleserside kan ringe den. HodeEndpoengene som er signert med nym (nøkler, kontooppsummering, NWC auto-top-up og refund-redemption) er unntaket: i en nettleser svarer de bare på Nymbots egne nettsteder. Signering av konto forespørsler.
Send hver JSON-kropp med Content-Type: application/jsonEnhver annen type er avvist med 415, slik at en enkel HTML-form eller en text/plain forespørsel fra et annet nettsted kan ikke nå API. Med cURL, passere
-H "Content-Type: application/json" Sammen med -d.
Brannnøkler
Nøklene er laget i appen.Open ild i sidebaren i webappen, eller i menyen på Android og iOS, og trykk Opprette nøkkelGi det et navn og, hvis du vil, en kappe og en utløpsdato.
Nymbot beholder bare et fingeravtrykk av det, så det ikke kan vise det til deg igjen. En tapt nøkkel kan ikke gjenopprettes; tilbakekalle den og lage en annen.
Nøkkelen ser ut som sk-nymbot- etterfulgt av 43 bokstaver, tall, dash og underscore. appen lister hver nøkkel etter navn og en kort hint som
sk-nymbot-Qm7x…c2Lw.
- En nøkkel tilhører din nym. Det bruker din balanse, og bare din nym kan lage, endre eller trekke den tilbake.
- Caps er i sats. En nøkkel kan ha en utgiftskapasitet, og kapasiteten kan tilbakestilles hver dag, hver uke (mandag) eller hver måned (første), ved 00:00 UTC. Den teller begge saldoer, en standardkreditt som 10 sats og en Pro-kreditt som 100, så det betyr det samme uansett hvilken saldo en forespørsel bruker. Før en forespørsel kjører, er det maksimale det kan koste (rundet opp til hele kreditter) satt mot det som er igjen av kapasiteten.
403key_limit_reached, selv om svaret ville ha kommet inn under kappen; feilen forteller hvor mye som er igjen og når kappen tilbakestilles.max_tokensEn forespørsel blir belastet hva det faktisk koster og som teller mot cap, så hvis leverandøren rapporterer flere tokens enn ble satt til side, kan den siste forespørselen som passer ta nøkkelen litt over sin cap; den neste blir deretter avvist. - En brukt kappe stopper bare utgiftene. En nøkkel ved kappen kan fortsatt sjekke saldoen, lese dens historie, liste modeller, telle tokens, topp opp og sjekke på en video den allerede har startet.
- Utløpet er valgfritt. Etter datoen du har angitt, slutter nøkkelen å fungere.
- Oppsigelse er umiddelbar og endelig. En tilbakekalt nøkkel feiler sin neste forespørsel.Den forblir i listen, merket tilbakekalt, så utgiftshistorikken er fortsatt fornuftig.
- Du kan ha opptil 25 aktive nøkler, hver med sitt eget navn.
Det samme arket viser hver nøkkel utgifter denne perioden og i alt, når den ble sist brukt, både dine saldoer, og dine nylige API-forespørsler. Styring av nøkler.
Autentisering av en forespørsel
Send nøkkelen i noen av disse overskriftene.De er tilsvarende, så bruk hva klienten din sender som standard:
| Header | Sendt av |
|---|---|
Authorization: Bearer sk-nymbot-… | OpenAI SDKs, de fleste verktøy, Claude Code med ANTHROPIC_AUTH_TOKEN |
x-api-key: sk-nymbot-… | Antropisk SDK |
api-key: sk-nymbot-… | Azure-stil kunder |
En manglende, ukjent, tilbakekalt eller utløpt nøkkel returnerer 401Med koden
missing_api_key, invalid_api_key, revoked_api_key eller
expired_api_keyListing modeller, lydmodeller og stemmer, og betalingsmetoder trenger ingen nøkkel.
Bilder, video, tale, transkripsjon og innebygging kan også betales for én forespørsel om gangen over Lightning uten nøkkel i det hele tatt: send forespørselen uten en og betal fakturaen i 402 Svar: Se Betal på forespørsel uten nøkkel.
Nøkkeladministrasjon, kontooppsummering og automatiske top-ups er unntaket: de tar en signatur fra nym i stedet for en nøkkel, slik at en lekket nøkkel ikke kan lage flere nøkler. Signering av konto forespørsler.
Din første forespørsel
Sett nøkkelen i en miljøvariabel, og spør deretter en modell om noe. 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 ruting, betalt fra standardbalansen. Sett et katalogmodell-id der i stedet, for eksempel anthropic/claude-sonnet-5, for å bruke denne modellen fra Pro-balansen. Liste over modeller Gi hver enkelt id.
Hva koster en forespørsel
API fakturerer nøyaktig slik appen gjør.
- Og hvilken balanse.
nymbot/autoBruker den Standarden balanse (10 sats en kreditt). Hver annen chat-modell bruker Pro balanse (100 sats en kreditt). Standard bildegenerator og standard stemme bruker standard kreditter; hver annen generator bruker Pro. Embeddings bruker standard kreditter. Transcription bruker standard kreditter når standard balanse kan dekke det, og Pro kreditter ellers. Modelllisten forteller hvilken balanse hver modell bruker. - Hvor mye . En chat-forespørsel måles på tokens som modellen faktisk leser og skriver, ved leverandørens publiserte priser. Denne prisen har en 5% gebyr lagt til og multipliseres deretter med 1,5, så du betaler 1,575 ganger leverandørens listepris. Den konverteres til sats på live Bitcoin-prisen og belastes i tusendeler av en kreditt. Pro bilder, video og tale er prissatt per generasjon, per sekund eller per tegn, og transkripsjon per sekund av lyd, med samme gebyr og margin.
- Og det minste. Hver målt forespørsel som kjører koster minst 0,05 kreditt: halvparten satt på standardbalansen, 5 satser på Pro.
- Hold deretter og sett deg ned. Før en forespørsel kjører, det meste det kan koste holdes fra saldoen din, basert på hva du sendte og de fleste tokens det kan skrive. Tekst utenfor vanlig ASCII er størrelsen fra sine UTF-8 bytes, og ASCII-siffer og punktering telle som en token hver, så tekst i ethvert skript, kode og tall holdes for fullt. Holdet er i hele kreditter, minst en, så enhver forespørsel trenger minst 10 sats gratis på standard saldoen eller 100 sats på Pro for å starte. Bare den faktiske kostnaden belastes; resten frigjøres når den er ferdig. En lang forespørsel holder sitt hold så lenge den kjører; hvis de holdt kreditter stopper å være tilgjengelig uansett, stopper en strøm med en
402insufficient_balanceHvis den faktiske kostnaden er mer enn saldoen kan betale, blir hele saldoen tatt, resten er gjeld (owed_satsI dennymbotobjekt, og en negativ saldo). Det som skyldes betales først ut av de neste kreditter som når den saldoen. Inntil det er betalt, kan ingenting på den saldoen brukes: ikke av API, svarer i appen, en overføring eller en gave. - Ikke nok kreditt Hvis saldoen ikke kan dekke holdet, blir forespørselen avslått med
402Feilen forteller hvilken balanse som er kort, hvor mange satser forespørselen trenger og hvor mange er gratis.max_tokensDet betyr mindre hold. - og svikt. En forespørsel som mislykkes koster ingenting, med mindre leverandøren fakturerte for arbeidet det gjorde før det mislykkes, eller en nettsøk eller
nymbot/autoEn strøm du kutter av blir belastet for tokens som leverandøren rapporterer: Nymbot fortsetter å lese leverandørens strøm i opptil 25 sekunder etter at du forlater for å få den telle. - Web søk koster $ 0,008 en søk, konvertert til sats, hver gang en søk ble kjørt, enten modellen da svarer eller mislykkes.
Hvert svar sier hva det koster. JSON-svar bærer en nymbot objekt med saldoen det ble betalt fra, avgiften i kreditter og satser, og hva som er igjen:
Kostnadsobjektet
"nymbot": {
"balance": "pro",
"charged_credits": 0.162,
"charged_sats": 16.2,
"balance_credits": 412.425,
"balance_sats": 41242.5
}
Betalte svar har også disse overskriftene, som er hvor du kan se etter kostnaden for et svar som ikke er JSON, for eksempel tale:
| Header | Betydningen |
|---|---|
X-Nymbot-Cost-Sats | Hva dette kravet koster, i sats. |
X-Nymbot-Balance-Sats | Hva som er igjen på saldoen det ble betalt fra, i sats. |
X-Request-Id | En ID for forespørselen, på hvert svar. Citer det hvis du kontakter støtte. |
Priser per million tokens, allerede inkludert gebyr og margin, er i
Liste over modeller i dollar og sats, og på
PrislistenHvis Bitcoin-prisen ikke kan leses, returneres betalte forespørsler 503 price_unavailable med
Retry-After: 60 I stedet for å gjette.
Feilene
Hver feil har samme form, en som OpenAI-klienter allerede forstår. code er et stabilt navn du kan matche; message Det er for folk og kan forandre seg.
Feil kropp
{
"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 | Når |
|---|---|
400 invalid_request_error | Kroppen er ikke gyldig JSON (invalid_json), et nødvendig felt mangler (missing_required_parameter), en verdi er feil, eller forespørselen ber om noe som modellen eller endepunktet ikke gjør, for eksempel verktøy på nymbot/auto (unsupported_tool). param Navn på feltet. også upstream_rejected når leverandøren avviste forespørselen. |
401 authentication_error | Nøkkelen er savnet, ukjent, tilbakekalt eller utløpt, eller en signert forespørsel er ugyldig eller gjenbrukt. |
402 insufficient_quota | Balansen kan ikke dekke forespørselen.Kode insufficient_balance, med balance, required_sats og balance_sats. |
403 permission_error | Forespørselen samsvarer ikke med nøkkelens cap (key_limit_reached, med limit_sats, used_sats og reset_at), eller kontoen kan ikke bruke tjenesten (account_denied). |
404 not_found_error | En ukjent vei (unknown_endpoint) en modell som ikke eksisterer (model_not_found), eller en ukjent nøkkel, faktura eller video. |
405 | Denne metoden finnes, men ikke med denne metoden (method_not_allowed) Den Allow Header viser hvilke metoder som brukes. |
413 | Kroppen eller filen er for stor (payload_too_large, file_too_large) eller en opptak er for lang (audio_too_longSe også Grenser. |
415 invalid_request_error | Kroppen sendes ikke som application/json (Og til slutt, for de som er på vei oppover, multipart/form-data): unsupported_media_type. |
422 | En stemme og språk som ikke går sammen i tekst til tale (voice_language_mismatch, unsupported_language). |
429 rate_limit_error | For mange forespørsler på denne nøkkelen, fra denne adressen, eller med legitimasjon som ikke kunne verifiseres (rate_limit_exceeded) eller tjenesteleverandøren er avgrenset (upstream_rate_limitedVente på sekundene i Retry-After. |
500 api_error | Noe gikk galt på Nymbots side (internal_error). |
502 api_error | Leverandøren returnerte ikke et svar (upstream_error(Eller at det ikke er mulig å lage en lommebok)invoice_unavailable). |
503 api_error | Leverandøren er overbelastet (upstream_overloaded), Bitcoin prisen kan ikke leses (price_unavailable) eller en del av tjenesten er nede (service_unavailable, media_hosting_unavailable). Retry-After Når du skal prøve igjen, hvor det er kjent. |
To unntak er:
/api/v1/messagessvar i Anthropics feilformat, siden det er det Anthropic-klienter analyserer:{"type": "error", "error": {"type": "authentication_error", "message": "…"}}Typen følger statusen: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ørsel som mislykkes før sin første byte, får en vanlig JSON-feil med statusen ovenfor, ikke en hendelsesstrøm.
Feilmeldinger inneholder aldri interne detaljer om en annen tjeneste.En leverandørs egen feil blir omordnet før den når deg.
Grenser
| Begrenset | Verdi |
|---|---|
| Søknad per nøkkel | 120 per minutt. over det, 429 med Retry-After. |
| Søknad uten nøkkel | 120 per minutt per adresse, for modell, lyd og betalingsmetode oppføringer, refusjon token sjekker, og betalte sluttpunkter som kalles uten nøkkel eller betaling. 429 med Retry-After. |
| Mislykket autentisering | 30 per minutt per adresse for nøkler, signaturer, betalingsopplysninger og refusjonstokener som ikke verifiserer. 429 med Retry-After Kredensialer sjekkes før kroppen leses. |
| Nye nøkler | 60 per time per nym og 120 per time per adresse. |
| Top-up fakturaer | 60 per time per nym og 120 per time per adresse. |
| NWC lommebok tilkoblinger | 10 per time per nym og 30 per time per adresse. wss:// På standard port. |
| Tilbakebetaling av tokens | 60 forespørsler per minutt per token. |
| adresser | En IPv6-adresse teller som sin helhet /64 i hver adressegrense, og en IPv4-kartet IPv6-adresse som sin IPv4-adresse. |
| JSON forespørsel kropp | 4 MB; 64 KB for forespørsler signert med nym. |
| Multipart forespørsel kropp (uploads) | 32 MB. Et bilde å redigere kan være opptil 20 MB, en lydfil opptil 25 MB. På maksimalt 64 deler, hver med maksimalt 8 KB av deloverskrifter, og en grense på 1 til 70 tegn; ellers 400 invalid_multipart. |
| Bilder i en chat forespørsel | 20 Hver av oss er en https:// eller http:// koble til en offentlig vert, eller a data:image/… og url. |
| Bilder per generasjon forespørsel | 1 til 4 (n) |
| Utgang tokens | Større enn modellens eget maksimum. max_tokens Den blir nedsatt, ikke avvist. |
| Inngangsspråk | 800 tegn for standard stemme, 2000 for Aura 2. |
| transkripsjon | 30 minutter lyd, 25 MB. En lengre opptak er avvist med 413 og ikke belastet, selv om dens lengde bare er kjent når Whisper har hørt det. |
| Embedded | 100 innspill per forespørsel. |
| Videojobber | Vent i 24 timer etter at de er sendt; en rendering er gitt opp etter en time. |
| Ønsker historie | Ventet i 90 dager. |
| Aktive nøkler per nym | Bare de nyeste 50 tilbakekalt nøkler blir beholdt. |
En kobling til et bilde må peke til en offentlig vert: en adresse på et privat eller lokalt nettverk, eller på Nymbots egne nettsteder, blir avvist.
Hva brannen kan se
API er ikke privat på den måten appene er, og det er verdt å være nøyaktig om hvordan.
- Det er ikke end-to-end kryptert. I appene er en melding forseglet på enheten til nøkler bare Nymbot holder og reiser som en Gave WrapEn API-forespørsel er vanlig HTTPS: den er kryptert på vei til Nymbot, og Nymbots server leser den i klar for å håndtere den.
- Prompter og svar lagres ikke. Det som holdes er regningen: for hver forespørsel tid, modell, type, token teller, kostnad, balanse, nøkkel og om det lyktes, i 90 dager, som er hva Ønsker historie En brukspost av samme forespørsel (tid, type, modell, token teller, kostnad, varighet og om det brukte web-søk eller lyktes) blir også holdt i 90 dager, sammen med appens egen.
- Alt annet holdt for en nym er liten og oppført her. Brannnøkler er lagret som en hash, aldri nøkkelen, med sitt navn, en kort hint, utgiftskapasitet, tilbakestillingsperiode, utløpsdato og når de ble laget og sist brukt; bare de nyeste 50 tilbakekalte nøklene blir beholdt. Automatisk top-up Video jobber holdes i 24 timer. forespørsler betalt per samtale etterlater bare en Lightning betaling hash i 7 dager og en hashed refund token i 30 dager, knyttet til ingen nym. gebyrer en balanse ikke kunne dekke holdes som skyldte inntil en top-up betaler dem.
- Ved å slette appen sletter du den. A Utstyr Wipe tilbakekaller og sletter hver API-nøkkel, og sletter spørringshistorikk, bruksrekord, lommebokforbindelse og videojobber.
- Modellenes leverandør ser forespørselen dinKatalogmodeller kjører på sine produsenter; standard ruter og innebygging kjører på Cloudflare.
- Genererte medier er offentlige. Bilder og videoer levert som koblinger lastes opp til offentlige Blossom-filverter, hvor en fils adresse er dens hash. Alle med koblingen kan åpne den, og Nymbot kan ikke ta den ned igjen.
b64_jsonog et generert bilde kommer tilbake i svaret og lastes aldri opp. - Slik er bildene du gir en generator. Et bilde du laster opp til
Edit, eller send som a
data:URL i en generatorimage_url, lastes opp til en offentlig Blossom-verten først slik at generatoren kan hente den, og det samme gjelder for den.https://Bilder i en chat-forespørsel går til modellens leverandør, ikke til Blossom. - En nøkkel er koblet til nym. Alt en nøkkel bruker kommer fra din nym balanse, så API bruk er ikke AnonymeHvis du vil at API-bruken skal holdes unna din daglige nym, gjør nøklene fra en egen nym med sin egen balanse.
Hvis du trenger beskyttelse av appene, bruk appene. API er for når du trenger modellene i dine egne verktøy.
Hvert endepunkt
| Endpoint | Hva den gjør | Auth |
|---|---|---|
GET /api/v1/models | Lister av modellerMed prisene | Ingen |
POST /api/v1/chat/completions | Chat fullføringer | nøkkel |
POST /api/v1/responses | Svar fra API | nøkkel |
POST /api/v1/messages | Antropiske budskap | nøkkel |
POST /api/v1/messages/count_tokens | Beregning av input tokens | nøkkel |
POST /api/v1/images/generations | Genererer bilder | nøkkel eller Lightning |
POST /api/v1/images/edits | Edit et bilde | nøkkel eller Lightning |
POST /api/v1/videos, GET /api/v1/videos, GET /api/v1/videos/{id} | Start, lister og sjekker videoer | nøkkel eller Lightning For å starte en |
POST /api/v1/audio/speech | Tekst til tale | nøkkel eller Lightning |
GET /api/v1/audio/models, GET /api/v1/audio/voices | Audio modeller og stemmer | Ingen |
POST /api/v1/audio/transcriptions, POST /api/v1/audio/translations | Tale til tekst, og til engelsk | nøkkel eller Lightning |
POST /api/v1/embeddings | Embedded | nøkkel eller Lightning |
GET /api/v1/credits/balance (eller POST) | Begge balanse | nøkkel |
GET /api/v1/topup/payment-methods | Måter å betale | Ingen |
POST /api/v1/topup/create/btc-lightning | Lightning faktura | nøkkel |
GET /api/v1/topup/status/{invoice_id} | Sjekker og krediterer det | nøkkel |
GET /api/v1/queries/history | Hva hver forespørsel koster | Nøkkel eller nym |
GET /api/v1/account | Kontooppsummering | Nym |
/api/v1/keys | Lag, endre og tilbakekalle nøkler | Nym |
/api/v1/nwc-auto-topup | Automatisk top-up | Nym |
GET /api/v1/l402/refunds, POST /api/v1/l402/refunds/redeem | Sjekker eller innløser en refundert token | Refund token; nym til redem |
“Nym” betyr en forespørsel signert av din Nostr-nøkkel, beskrevet i Signering av konto forespørslerFor verktøy som allerede snakker disse formatene, se Verktøy og SDK, og for koding agenter som Claude Code, Codex og Cline, se Kodingsverktøy.