Gean nei de ynhâld
Komme nei Nymbot.

Kennisbasis De ûntwikkelers

Fire oerflak

De modellen, generators en balans dy't jo brûke yn 'e app, út jo eigen koade. De API praat de OpenAI en Anthropic formaten, dus de measte tools en SDKs wurkje troch te feroarjen in basis URL en in sleutel.

Wat is it brûken fan

Yn de HTTP API nymbot.ai dat antwurdearje op itselde fragen dy't in OpenAI- of Anthropic-kliïnt al stjoert.

It wurdt betelle út de selde twa Balansje Der is gjin abonnemint en gjin frije tafoeging op de API: elke fraach wurdt betaald út credits dy't jo kocht hawwe.

Wat de API net docht, is alles fan Nymbot's eigen. Jo berichten gean nei it model as jo harren ferstjoerde: gjin Nymbot systeem prompt, gjin memory, gjin datum of taal hints. Wat komt werom is it model's antwurd en in notysje fan wat it kostet.

De basis URLs

GebrûkDe basis URL
OpenAI SDK's en OpenAI-kompatibele toolshttps://nymbot.ai/api/v1
Anthropyske SDK's en De koadehttps://nymbot.ai/api (De SDK fertsjintwurdige /v1/messages It eigen

Elk endpunt leeft ûnder /api/v1/In ûnbekende weg komt werom 404 En in bekend pad neamd mei de verkeerde metoade komt werom. 405Beide foar JSON.

De API antwurdt cross-origin fragen fan elke site, dus in browser-side kin it rjochtsjen. Alles dy't jo stjoere nei in browser kin lêzen wurde troch wie it iepen, mar doe dat allinich mei in sleutel dy't in lyts HjoedDe endpoints dy't tekene wurde mei jo nym (keys, de account summary, NWC auto-top-up en refund-redemption) binne de útsûndering: yn in browser antwurde se allinich Nymbot's eigen sites. Skriuw dy yn foar Account Requests.

Skriuw dy yn foar elke JSON-body mei Content-Type: application/jsonAlle oare soarten wurde weigerd. 415Yn de HTML-formulier of in text/plain Yn de ûndersyk fan 'e ûndersyk is der gjin sprake fan cURL. -H "Content-Type: application/json" Ynklusyf -d.

Fire keys

Keys wurde makke yn de app. Open De fire yn de sidebar fan de web-app, of yn it menu op Android en iOS, en druk op Skriuw dy ynGeef it in namme en, as jo wolle, in cap en in vervaldatum.

De sleutel wurdt ien kear tafoege. Kopiearje it ergens sûnder foardat jo it blêde: Nymbot bewarret allinnich in fingerprint fan it, dus it kin jo net sjen.

De sleutel lykwols sk-nymbot- De app listet elke sleutel troch syn namme en in koarte hint lykas: sk-nymbot-Qm7x…c2Lw.

  • In sleutel belutsen oan jo nym. It spilet jo saldo, en allinich jo nimme kin it meitsje, feroarje of revoke. Ien dy't de sleutel hat kin spylje mei it, dus behandel it as in wachtwoord.
  • De kappen binne yn sats. In sleutel kin in spending cap hawwe, en de cap kin elke dei, elke wike (Monday) of elke moanne (de earste), at 00:00 UTC. It telle beide saldi, in standert krediet as 10 sats en in Pro krediet as 100, dus it betsjut itselde wat de saldo in ferantwurdeling spilet. 403 key_limit_reached, sels as it antwurd ûnder de cap komme soe; de fout betsjut hoeveel is ferliet en doe't de cap reset. max_tokens In fraach wurdt belutsen wat it echt kostet en dat telt tsjin de cap, dus as de provider rapportearret mear tokens as wurde set oan 'e side, de lêste fraach dy't fit kin nimme de sleutel in lytse oer syn cap; de folgjende is dan ferwijd.
  • In útgeande cap stopt allinich út te spyljen. In sleutel by syn cap kin noch kontrolearje it saldo, lêze syn histoary, list modellen, telle tokens, top up en kontrolearje op in fideo dat it al begûn.
  • Expiry is optional. Nei de datum dy't jo set, de sleutel stopt te wurkjen.
  • De ferwidering is onmiddellik en finale. In revokearre sleutel mislearre syn folgjende fraach. It bliuwt yn 'e list, markearre revoke, dus syn útgongshistoryk hat noch sin.
  • Jo kinne maksimaal 25 aktive sleutels hawwe, elk mei syn eigen namme.

Itselde sheet beskriuwt de útgong fan elke sleutel yn dizze perioade en yn totaal, doe't it foarst brûkt waard, beide fan jo balansen, en jo ferskate API-ferwêzen. It behear fan keys.

Authentication fan in fraach

Skriuw de sleutel yn ien fan dizze haadstikken. Ze binne ekwivalent, dus brûk wat jo kliïnt fertsjintwurdiget:

HjoedSkriuw dy yn
Authorization: Bearer sk-nymbot-…OpenAI SDKs, de measte tools, Claude Code mei ANTHROPIC_AUTH_TOKEN
x-api-key: sk-nymbot-…Anthropyske SDKs
api-key: sk-nymbot-…Azure-styl kliïnten

In missing, unknown, revoked of expired key returns 401Yn de koade missing_api_key, invalid_api_key, revoked_api_key Of expired_api_keyListing modellen, audio modellen en stimmen, en betalingsmetoaden nedich gjin sleutel.

Foto's, fideo's, spraak, transkripsje en ynbeddings kinne ek betelle wurde foar ien fraach op in tiid oer Lightning sûnder gjin sleutel yn alle gefallen: send de fraach sûnder ien en betelje de faktuer yn de 402 Reagearje op it Betelje per fraach sûnder sleutel.

Key management, de account summary en automatyske top-ups binne de útsûndering: se nimme in handtekening fan jo nym ynstee fan in sleutel, dus in lekke sleutel kin net mear sleutels meitsje. Skriuw dy yn foar Account Requests.

De earste fraach

Sette de sleutel yn in omjouwingsvariabele, dan freegje in model wat. De foarbylden yn dizze siden lêze it út 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 is Nymbot's eigen routing, betaald út 'e standert saldo. Set in katalogusmodel's id der ynsteld, lykas anthropic/claude-sonnet-5Yn dat model wurdt de Pro Balance brûkt. List fan modellen Yn elke id.

Wat kostet in fraach

De API billet krekt de manier hoe't de app doet.

  • Wat in balans. nymbot/auto Hy spile de Standert Yn it foarbyld is it allegear yn it foarbyld. (Every other chat model Yn Pro balanse (100 sats in krediet). De standert image generator en de standert voice spande standert credits; elke oare generator spande Pro. Embeddings spande standert credits. Transcription spande standert credits doe't de standert saldo kin dekkje it, en Pro credits oanhâlde. De modellijst betsjut wat saldo elk model spande.
  • Hoeveel yn. In chatferwizing wurdt meterearre op de tokens dy't it model feitlik learde en skreaun hat, by de oanbieders publisearre tariven. Dat priis hat in 5% tafoeging tafoege en wurdt dan multiplisearre troch 1.5, dus jo betelje 1.575 kear de listpriis fan de oanbieder. It wurdt konvertearre nei sats oan de live Bitcoin priis en belest yn tûzende fan in krediet. Pro foto, fideo en spraak wurde prize per generaasje, per sekonde of per karakter, en transkripsje per sekonde fan audio, mei deselde tafoeging en marge. De standert ôfbylding is in flat 5 standert credits en de standert stem in flat 3.
  • Yn it minimum. Elke meiere oanfolling dy't rûn kostet op syn minst 0.05 krediet: halve set op de standert saldo, 5 sats op Pro. Fraksjes fan in krediet wurde oerbrocht, net rûn op elke tiid.
  • Hâld dan op en settle. Foardat in fraach rûn, de meast it kin kosten wurdt hâlden út jo saldo, basearre op wat jo ferstjoerde en de measte tokens it kin skriuwe. Tekst bûten de gewoane ASCII is grutte fan syn UTF-8 bytes, en ASCII-sifretten en punctuation telle as in token elk, dus tekst yn in skriuwer, koade en nûmer wurde hâlden yn folsleine. De hold is yn heule credits, op syn minst ien, dus elke fraach nedich minstens 10 sats frije op de standert saldo of 100 sats op Pro om te begjinnen. Alleen de echte kosten wurde laden; de rest wurdt ferliede doe't it ferliedt. In lange fraach behâldt syn hold foar as lang as it rûn; as de hielden credits op alle gefallen 402 insufficient_balance Oer klasseboek en aktiviteiteplan, observaasje en registraasje yn 'e basisskoalle by Theun Meestringa(owed_sats Yn de nymbot Wat is skuld betelle earst út de folgjende credits dy't berikke dat saldo. Totdat it is betelle, niks op dat saldo kin útbrekken wurde: net troch de API, antwurde yn de app, in oerdracht of in gift.
  • Ek gjin kredyt. As de balans de holding net dekt, wurdt it verzoek ferwijd mei 402 De fergelykje beskriuwt wat saldo is koart, hoefolle sats de fraach nedich en hoefolle binne frije. max_tokens Dat betsjut in kleinere hân.
  • De falen. In fraach dat kostet niks, om't de provider billed foar it wurk it makke foardat faak, of in web ûndersyk of de nymbot/auto De taakkontrôle wie al útfierd; dan is dat wat jo betelle, op syn minst 0.05 krediet. In stream dy't jo snijde út wurdt belutsen foar de tokens dy't de provider rapportearret: Nymbot keeps reading the provider's stream for up to 25 secondes after you leave to get that count. If it doesn't arrive, the charge is estimated from what you sent and what was written, and for a model that reasons it includes the entire output allowance of the hold. A request whose connection drops still ends and is charged.
  • Web ûndersyk It kostet $ 0,008 in ûndersyk, konvertearre nei sats, whenever in ûndersyk rûn, of it model dan antwurde of mislearre.

Elke antwurd beskriuwt wat it kostet. nymbot It foarwerp mei it saldo dat it is betelle út, de kosten yn credits en satsen, en wat is ferliet:

De kosten fan it objekt

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

Betelle antwurden hawwe ek dizze haadstikken, dat is wêr't jo kinne sjoch foar de kosten fan in antwurd dat is net JSON, lykas speech:

HjoedBetekenis
X-Nymbot-Cost-SatsWat kostet dit foarbyld, yn sats.
X-Nymbot-Balance-SatsWat is op 'e saldo dy't it is betelle út, yn sats.
X-Request-IdIn id foar de fraach, op elke antwurd. Cite it as jo kontakt mei support.

Rates per miljoen tokens, al ynklusyf de fee en marge, binne yn de List fan modellen Yn dollars en sats, en op De priisplakAs de Bitcoin-priis net lêst wurdt, komme de betelle fragen werom. 503 price_unavailable Yn Retry-After: 60 Ynsteld yn it gokken.

De fouten

Elke fout hat itselde foarm, ien dy't OpenAI-kliïnten al begripe. code is in stabile namme dy't jo kinne match op; message It is foar de minsken en kin feroarjen.

Feroarjende lichem

{
  "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 fanAs
400 invalid_request_errorOer klasseboek en aktiviteplan, observaasje en registraasje yn 'e basisskoalle by Theun Meestringa(invalid_jsonIt earste krantsje kaam út yn april (missing_required_parameter), in wearde is feilich, of de fraach vraagt om iets dat it model of endpoint net docht, lykas tools op nymbot/auto (unsupported_tool). param Namme de fjild. ek upstream_rejected As de leveransier de fraach weigerde.
401 authentication_errorDe sleutel is mislearre, ûnbekend, revokearre of ferleatst, of in tekene fraach is ongeldig of re-brûk.
402 insufficient_quotaIt saldo kin de fraach net dekke. insufficient_balanceYn balance, required_sats en balance_sats.
403 permission_errorIt earste krantsje kaam út yn april Nadere informatie (key_limit_reachedYn limit_sats, used_sats en reset_atIt earste krantsje kaam út yn april Nadere informatie (account_denied).
404 not_found_errorIt earste krantsje kaam út yn april (unknown_endpointIt earste krantsje kaam út yn april Nadere informatie (model_not_found), of in ûnbekende sleutel, faktuer of fideo.
405It earste krantsje kaam út yn april (method_not_allowedDe Allow Header listet de metoaden dy't it brûkt.
413It earste krantsje kaam út yn april Nadere informatie (payload_too_large, file_too_largeIt earste krantsje kaam út yn april Nadere informatie (audio_too_longYn Grinsjes.
415 invalid_request_errorDe organisaasje is no útfierd as application/json Of foar de ôfrûne tiid. multipart/form-data): unsupported_media_type.
422Oer klasseboek en aktiviteiteplan, observaasje en registraasje yn 'e basisskoalle by Theun Meestringa(voice_language_mismatch, unsupported_language).
429 rate_limit_errorOer klasseboek en aktiviteiteplan, observaasje en registraasje yn 'e basisskoalle by Theun Meestringa(rate_limit_exceededOer klasseboek en aktiviteiteplan, observaasje en registraasje yn 'e basisskoalle by Theun Meestringa(upstream_rate_limitedWacht op de sekonden yn Retry-After.
500 api_errorIt earste krantsje kaam út yn april (internal_error).
502 api_errorIt earste krantsje kaam út yn april Nadere informatie (upstream_errorOer klasseboek en aktiviteiteplan, observaasje en registraasje yn 'e basisskoalle by Theun Meestringa(invoice_unavailable).
503 api_errorIt earste krantsje kaam út yn april (upstream_overloadedIt earste krantsje kaam út yn april Nadere informatie (price_unavailableOer klasseboek en aktiviteiteplan, observaasje yn 'e basisskoalle by Theun Meestringa(service_unavailable, media_hosting_unavailable). Retry-After Der is noch wat te meitsjen, dêr't it bekend is.

Twa útsûnderings binne:

  • /api/v1/messages antwurden yn Anthropic's foutformaat, sûnt dat is wat Anthropic kliïnten parse: {"type": "error", "error": {"type": "authentication_error", "message": "…"}}De type folgje de status: invalid_request_error, authentication_error, billing_error (402), permission_error, not_found_error, request_too_large, rate_limit_error, api_error Of overloaded_error (503).
  • In streamingferwizing dy't mislearre foar syn earste byte krije in gewoane JSON-fout mei de status hjirûnder, net in evenemintstroom.

Fertsjintwurdigings fertsjintwurdigings fertsjintwurdigings fertsjintwurdigings fertsjintwurdigings fertsjintwurdigings fertsjintwurdigings fertsjintwurdigings fertsjintwurdigings fertsjintwurdigings fertsjintwurdigings fertsjintwurdigings.

Grinsjes

De grûnWaarde
Skriuw dy yn foar KeyYn 120 minuten is der noch mear. 429 Yn Retry-After.
Befoarderingen sûnder in sleutel120 per minuut per adres, foar de model, audio en betelling metoade listings, refund token checks, en betelle endpoints rjochte sûnder in sleutel of betelling. 429 Yn Retry-After.
Authentication fersoarge30 minuten per adres foar sleutels, tekens, betelling credentials en refund tokens dy't net verifiearje. Boppedat, elke fraach fan it adres dat draait in credential krije 429 Yn Retry-After De krêften binne kontrolearre foardat it lichem lêst wurdt.
Nieuwe sleutels60 oere per nym en 120 oere per adres.
Top-up faktuer60 oere per nym en 120 oere per adres.
NWC wallet ferbining10 in oere per nym en 30 in oere per adres. De wallet relay hat te brûken wss:// Yn de standert port.
De tokens binne60 fragen per minút per token.
AdressenIn IPv6-adres telt as syn helte /64 yn elke per-adresgrens, en in IPv4-mapped IPv6-adres as syn IPv4-adres.
JSON ferantwurdlikens body4 MB; 64 KB foar fragen tekene mei jo nym.
Multipart request body (uploads) is in foarbyld.32 MB. In ôfbylding om te editearjen kin maksimaal 20 MB, in audio-bestân maksimaal 25 MB. Op maksimaal 64 dielten, elk mei maksimaal 8 KB fan diel header, en in grûn fan 1 oant 70 karakters; anders 400 invalid_multipart.
Foto's yn ien chat foarbyldYn elk gefal is er in https:// Of http:// link nei in iepenbiere gast, of a data:image/… De url.
Foto's per generaasjeIt earste krantsje kaam út yn april (n)
Ynstruksje TokensHjoed op it eigen maksimum fan it model. max_tokens It is yn it ferbûn, no yn it ferbûn.
Speech ynlieding800 karakters foar de standert stem, 2000 foar Aura 2.
Transkripsje30 minuten audio, 25 MB. Lange opnammen wurdt ferwiderd mei 413 It is noch ûnbekend, mar it is ûnbekend, mar it is ûnbekend.
Ynbrekken100 ynputs per fraach.
Video wurkjeYn de earste 24 oeren is der in oantal ynwenners dy't op 'e hûndert hûndert hûndert hûndert hûndert.
Wolle histoaryskeYn 90 dagen.
Aktive keys per nymAlleen de lêste 50 herrochte sleutels wurde bewarre.

In link nei in ôfbylding moat op in iepenbiere hûs rjochtsje: in adres op in privee of lokale netwurk, of op Nymbot's eigen sites, wurdt ferwiderd.

Wat de fire kin sjen

De API is net privee yn 'e manier dy't de apps binne, en it is de moeite waard om krekt oer hoe.

  • It is no end-to-end ynkriptearre. Yn de apps, in berjocht wurdt ferdield op jo apparaat oan keys allinich Nymbot hâldt en reis as in Skriuw dy ynIn API-ferbân is gewoan HTTPS: it wurdt encrypted op 'e manier nei Nymbot, en de server fan Nymbot lêst it yn de klar om it te behanneljen.
  • Prompts en antwêzen wurde net opslaan. Wat wurdt hâlden is de bill: foar elke fraach de tiid, model, type, token tellen, kosten, balans, sleutel en of it gelyk is, foar 90 dagen, dat is wat Wolle histoaryske In brûkingsrekord fan itselde fraach (tiid, type, model, token tellen, kosten, duration en of it web ûndersyk brûkt of suksesfol wie) wurdt ek bewarre foar 90 dagen, tegearre mei de eigen app.
  • Alles wat oaren hâldt foar in nim is klein en listet hjir. Fire keys is opslaan as in hash, nooit de sleutel, mei harren namme, in koarte hint, útgong cap, reset perioade, vervaldatum en doe't se wurde makke en de lêste brûkt; mar de lêste 50 revoked keys wurde bewarre. Automatyske top-up Video jobs wurde hâlden foar 24 oeren. Requests paid per call leave only a Lightning payment hash for 7 dagen en a hashed refund token for 30 dagen, linked to no nym. Charges a balance could not cover are kept as owed as until a top-up pays them.
  • De app wurdt feroare. A Ynstrumint WIPE Revokearret en ferwideret elke API-sleutel, en ferwideret de query-history, gebrûkloggen, wallet-ferbining en fideo-jobs.
  • De leveransier fan it model sjogge jo fraachCatalog modellen rjochtsje by harren makers; standert routes en embeddings rjochtsje op Cloudflare.
  • De media wurde publisearre. Foto's en fideo's dy't leveret wurde as links wurde uploaden nei iepenbiere Blossom-bestjoerhosts, dêr't it adres fan in bestjoer syn hash is. Ienien mei de link kin it iepenjen, en Nymbot kin it net opnommen. b64_json En in generearre ôfbylding komt werom yn it antwurd en wurdt nooit uploadd.
  • Sa binne de foto's dy't jo gean in generator. In foto dy't jo upload Edit ynOf skreaun as a data: URL yn in generator's image_url, is uploaded nei in iepenbiere Blossom hûs earst sa'n generator kin helle it, en itselde sil gelde foar it. https:// De foto's yn in chatferwizing gean nei de provider fan it model, net nei Blossom.
  • In sleutel is ferbûn mei jo nym. Alles wat in sleutel spilet komt út jo nim-balans, dus API-gebrûk is net goed. AnonymeIf you want API use kept apart from your everyday nym, meitsje de sleutels út in separe nym mei syn eigen balans.

As jo de beskerming fan de apps nedich binne, brûke de apps. De API is foar doe't jo de modellen yn jo eigen tools nedich binne.

Yn elk eindpunt

EndpointsWat it dochtOutsje
GET /api/v1/modelsList foarbyldenYn de priisNo yn
POST /api/v1/chat/completionsChat komplettenDe sleutel
POST /api/v1/responsesAntwurd brûktDe sleutel
POST /api/v1/messagesAnthropyske berichtenDe sleutel
POST /api/v1/messages/count_tokensSkatting fan input tokensDe sleutel
POST /api/v1/images/generationsSkriuw dy ynKey of Ljouwerter
POST /api/v1/images/editsEditearje in imageKey of Ljouwerter
POST /api/v1/videos, GET /api/v1/videos, GET /api/v1/videos/{id}Starts, lists en checks videosDe sleutel, of Ljouwerter It begjint 1
POST /api/v1/audio/speechTekst foar speechKey of Ljouwerter
GET /api/v1/audio/models, GET /api/v1/audio/voicesAudio modellen en stimmenNo yn
POST /api/v1/audio/transcriptions, POST /api/v1/audio/translationsSpeech nei tekst, en nei IngelskKey of Ljouwerter
POST /api/v1/embeddingsYnbrekkenKey of Ljouwerter
GET /api/v1/credits/balance (Of POST)Beide balansjesDe sleutel
GET /api/v1/topup/payment-methodsWize om te beteljenNo yn
POST /api/v1/topup/create/btc-lightningYnstrumint ynstrumintDe sleutel
GET /api/v1/topup/status/{invoice_id}Checks en credits itDe sleutel
GET /api/v1/queries/historyWat kostet elke fraachKey of nym
GET /api/v1/accountKonto samplingYn
/api/v1/keysMakken, feroarjen en revoke keysYn
/api/v1/nwc-auto-topupAutomatyske top-upsYn
GET /api/v1/l402/refunds, POST /api/v1/l402/refunds/redeemChecks or redeems in refund tokenYn it ferbân is der in oersetting.

“Nym” betsjut in fraach tekene troch jo Nostr sleutel, beskreaun yn Skriuw dy yn foar Account RequestsFoar tools dy't al dizze formaten praat, sjoch Tools en SDK's, en foar kodearjen aginten lykas Claude Code, Codex en Cline, sjoch De koade tools.