Spring til indholdet
Tilbage til Nymbot

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.

Hvad er ild

En HTTP API er nymbot.ai som besvarer de samme anmodninger, som en OpenAI- eller Anthropic-klient allerede sender.

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 afGrundlæggende URL
OpenAI SDKs og OpenAI-kompatible værktøjerhttps://nymbot.ai/api/v1
Antropiske SDK'er og Claude Kodehttps://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. 403 key_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_tokens En 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:

HeaderSendt 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/auto Udgifterne 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 402 insufficient_balance Hvis den faktiske omkostning er mere end saldoen kan betale, tages hele saldoen, resten skyldes (owed_sats I den nymbot objekt, 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 402 Fejlen fortæller, hvilken balance der er kort, hvor mange satser anmodningen har brug for, og hvor mange der er gratis. max_tokens Det 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/auto En 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:

HeaderBetydning
X-Nymbot-Cost-SatsHvad denne anmodning koster, i sats.
X-Nymbot-Balance-SatsHvad der er tilbage på den balance, den blev betalt fra, i sats.
X-Request-IdEt 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 erNår
400 invalid_request_errorJSON 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_errorNøglen er manglende, ukendt, tilbagekaldt eller udløbet, eller en underskrevet anmodning er ugyldig eller genbrugt.
402 insufficient_quotaBalancen kan ikke dække anmodningen.Kode insufficient_balance, med balance, required_sats og balance_sats.
403 permission_errorAnmodningen 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_errorEn ukendt vej (unknown_endpoint) en model, der ikke eksisterer (model_not_found), eller en ukendt nøgle, faktura eller video.
405Denne metode findes, men ikke med denne metode (method_not_allowed) den Allow Header lister de metoder, den bruger.
413Kroppen 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_errorKroppen sendes ikke som application/json (Og når det kommer til overflader, multipart/form-data): unsupported_media_type.
422En stemme og et sprog, der ikke går sammen i tekst til tale (voice_language_mismatch, unsupported_language).
429 rate_limit_errorFor 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_errorNoget gik galt på Nymbots side (internal_error).
502 api_errorUdbyderen har ikke svaret (upstream_error) eller en Lightning-faktura kunne ikke laves (invoice_unavailable).
503 api_errorLeverandø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/messages svar 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_error eller overloaded_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ænsenVærdi
Anmodninger pr. nøgle120 i minuttet, og derudover 429 med Retry-After.
Ansøgning uden nøgle120 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 autentisering30 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øgler60 pr. time pr. nym og 120 pr. time pr. adresse.
Top-up fakturaer60 pr. time pr. nym og 120 pr. time pr. adresse.
NWC wallet forbindelser10 pr. time pr. nym og 30 pr. time pr. adresse. wss:// På den almindelige port.
Tilbagebetaling af tokens60 anmodninger pr. minut pr. token.
AdresserEn 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 krop4 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ørgsel20 Det er en https:// eller http:// link til en offentlig vært, eller a data:image/… af URL.
Billeder efter generation anmodning1 til 4 (n)
Udledning af tokensModellen er udstyret med en højere størrelse. max_tokens er nedsat til det, ikke afvist.
Input tale800 tegn for standard stemme, 2000 for Aura 2.
Transkription30 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ætninger100 point pr. anmodning.
Video jobVent i 24 timer efter de er indsendt; en rendering opgives efter en time.
Ønsker historieVent i 90 dage.
Aktive nøgler pr. nymKun 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_json og 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 generator image_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

EndpointHvad den gørAuth
GET /api/v1/modelsLister af modellerMed priserneIngen
POST /api/v1/chat/completionsChat færdiggørelsenøgle
POST /api/v1/responsesBesvarelse af APInøgle
POST /api/v1/messagesAntropiske budskabernøgle
POST /api/v1/messages/count_tokensBeregning af input tokensnøgle
POST /api/v1/images/generationsGenererer billederNøgle eller Lightning
POST /api/v1/images/editsEdit et billedeNøgle eller Lightning
POST /api/v1/videos, GET /api/v1/videos, GET /api/v1/videos/{id}Start, lister og tjek videoerNøglen eller Lightning Til at starte en
POST /api/v1/audio/speechTekst til taleNøgle eller Lightning
GET /api/v1/audio/models, GET /api/v1/audio/voicesLydmodeller og stemmerIngen
POST /api/v1/audio/transcriptions, POST /api/v1/audio/translationsTal til tekst og til engelskNøgle eller Lightning
POST /api/v1/embeddingsIndsætningerNøgle eller Lightning
GET /api/v1/credits/balance (eller POST)Begge balancernøgle
GET /api/v1/topup/payment-methodsMåder at betaleIngen
POST /api/v1/topup/create/btc-lightningEn lynnedslagskildenøgle
GET /api/v1/topup/status/{invoice_id}Tjek og kredit detnøgle
GET /api/v1/queries/historyHvad koster hver ansøgningKey eller nym
GET /api/v1/accountKonto sammenfatningNym
/api/v1/keysOpret, ændre og tilbagekalde nøglerNym
/api/v1/nwc-auto-topupAutomatiske top-upsNym
GET /api/v1/l402/refunds, POST /api/v1/l402/refunds/redeemChecks eller indløser en refundering tokenTilbagebetale 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.