Kennisbank Ontwikkelaars
Vuur Overzicht
De modellen, generatoren en balans die u in de app gebruikt, zijn afkomstig van uw eigen code.De API spreekt de OpenAI- en Anthropic-formaten, dus de meeste tools en SDK's werken door een basis-URL en een sleutel te veranderen.
Deze pagina is voor het gemak automatisch vertaald. Het Engelse origineel is de versie die van toepassing is.
Wat is het vuur
Een HTTP API nymbot.ai dat dezelfde verzoeken beantwoordt die een OpenAI- of Anthropic-client al verzendt.
- Chat voltooienDe Reacties op API En Antropische boodschappen, met streaming, tools, foto's, redenering en webzoekopdracht, voor elk model in de Catalogus en voor de eigen auto-routing van Nymbot.
- afbeeldingen, Video’s, Toespraak, Transcriptie En embeddings.
- Jouw balanceren, Overzicht van Lightning Top-ups, Automatische top-ups van uw portemonnee en a geschiedenis van wat elke aanvraag kost.
Het wordt betaald uit dezelfde twee balanceren Er is geen abonnement en geen gratis toelage op de API: elke aanvraag wordt betaald met credits die u hebt gekocht.
Wat de API niet doet, is iets toevoegen van Nymbot's eigen. Uw berichten gaan naar het model terwijl u ze hebt verzonden: geen Nymbot-systeemprompt, geen geheugen, geen datum of taal hints.
Basis URL's
| Gebruik | Gebaseerde URL |
|---|---|
| OpenAI SDK's en OpenAI-compatibele tools | https://nymbot.ai/api/v1 |
| Antropische SDK's en van Claude Code | https://nymbot.ai/api (De SDK voegt toe /v1/messages van zichzelf) |
Elk eindpunt leeft onder /api/v1/Een onbekend pad keert terug 404 en een bekend pad dat wordt genoemd met de verkeerde methode keert terug 405Zowel als JSON.
De API beantwoordt cross-origin verzoeken van elke site, zodat een browser-pagina het kan bellen. alles wat je verzendt naar een browser kan worden gelezen door iedereen die het opent, dus doe dat alleen met een sleutel die een kleine hoofdDe eindpunten die zijn ondertekend met uw nym (sleutels, de accountoverzichten, NWC auto-top-up en terugbetaling) zijn de uitzondering: in een browser beantwoorden ze alleen de eigen sites van Nymbot. Account aanvragen ondertekenen.
Stuur elke JSON-lichaam met Content-Type: application/jsonElk ander type wordt geweigerd met 415, dus een eenvoudige HTML-vorm of een text/plain verzoek van een andere site kan de API niet bereiken.
-H "Content-Type: application/json" Samen met -d.
Vuur sleutels
De sleutels worden gemaakt in de app. Open Vuur in de zijbalk van de webapp, of in het menu op Android en iOS, en tik op Maak een sleutelGeef het een naam en, als u wilt, een cap en een vervaldatum.
Kopieer het op een veilige plaats voordat u het blad sluit: Nymbot bewaart er slechts een vingerafdruk van, zodat het het u niet meer kan laten zien.
Een sleutel lijkt sk-nymbot- gevolgd door 43 letters, cijfers, dashes en underscores.De app vermeldt elke sleutel met zijn naam en een korte hint zoals:
sk-nymbot-Qm7x…c2Lw.
- Een sleutel behoort tot je nym. Het besteedt je saldo, en alleen je nim kan het maken, wijzigen of intrekken.Wie de sleutel heeft, kan ermee besteden, dus behandel het als een wachtwoord.
- Caps zijn in sats. Een sleutel kan een uitgavencap hebben, en de cap kan elke dag, elke week (maandag) of elke maand (de eerste) op 00:00 UTC opnieuw worden ingesteld. Het telt beide saldi, een standaardkrediet als 10 sats en een Pro-krediet als 100, dus het betekent hetzelfde ongeacht welk saldo een verzoek besteedt. Voordat een verzoek loopt, wordt het maximum dat het kan kosten (afgerond tot hele credits) ingesteld tegen wat overblijft van de cap. Als het niet past, wordt het verzoek afgewezen met
403key_limit_reached, zelfs als het antwoord onder de cap zou zijn gekomen; de fout zegt hoeveel er over is en wanneer de cap wordt hersteld.max_tokensEen verzoek wordt gefactureerd wat het daadwerkelijk kost en dat telt tegen de cap, dus als de provider meer tokens rapporteert dan aan de zijkant werden gesteld, kan het laatste verzoek dat past de sleutel een beetje voorbij zijn cap nemen; de volgende wordt vervolgens geweigerd. - Een uitgegeven cap stopt alleen de uitgaven. Een sleutel bij zijn cap kan nog steeds het saldo controleren, de geschiedenis lezen, modellen vermelden, tokens tellen, top-up en een video checken die het al begon.
- Expiry is optioneel. Na de datum die u instelt, stopt de sleutel met werken.
- De herroeping is onmiddellijk en definitief. Een ingetrokken sleutel faalt zijn volgende verzoek. Het blijft in de lijst, gemarkeerd ingetrokken, zodat de geschiedenis van de uitgaven nog steeds zinvol is.
- U kunt maximaal 25 actieve sleutels hebben, elk met zijn eigen naam.
Hetzelfde blad toont de uitgaven van elke sleutel in deze periode en in totaal, wanneer deze voor het laatst werd gebruikt, zowel uw saldi als uw recente API-verzoeken. Beheren van sleutels.
Authenticatie van een verzoek
Stuur de sleutel in een van deze kopjes. ze zijn gelijkwaardig, dus gebruik wat uw client standaard stuurt:
| header | verzonden door |
|---|---|
Authorization: Bearer sk-nymbot-… | OpenAI SDK's, de meeste tools, Claude Code met ANTHROPIC_AUTH_TOKEN |
x-api-key: sk-nymbot-… | Antropische SDK's |
api-key: sk-nymbot-… | Azure-stijl klanten |
Een ontbrekende, onbekende, ingetrokken of verlopen sleutel retourneren 401Met de code
missing_api_key, invalid_api_key, revoked_api_key of
expired_api_keyLijstmodellen, audiomodellen en stemmen, en betaalmethoden hebben geen sleutel nodig.
Foto's, video's, spraak, transcripties en embeddings kunnen ook worden betaald voor één verzoek tegelijk via Lightning zonder enige sleutel: stuur de verzoek zonder één en betaal de factuur in de 402 Antwoord: Zie Betalen op aanvraag zonder sleutel.
Sleutelbeheer, de accountverzameling en automatische top-ups zijn de uitzondering: ze nemen een handtekening van uw nym in plaats van een sleutel, dus een gelekte sleutel kan niet meer sleutels maken. Account aanvragen ondertekenen.
Uw eerste verzoek
Zet de sleutel in een omgevingsvariabele en vraag dan iets aan een model. 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 de eigen routing van Nymbot, betaald uit de standaardbalans. anthropic/claude-sonnet-5, om dat model uit de Pro-balans te gebruiken. Lijst van modellen Geef elke ID.
Wat kost een verzoek
De API factureren precies zoals de app doet.
- Wat een balans.
nymbot/autoU besteedt de standaard balans (10 sats a credit). Elk ander chatmodel besteedt de voor De standaard beeldgenerator en de standaard stem spenderen standaard credits; elke andere generator spendeert Pro. Embeddings spenderen standaard credits. Transcription spendeert standaard credits wanneer de standaard balans het kan dekken, en Pro credits anders. De modellijst zegt welke balans elk model spendeert. - Hoeveel wel. Een chatverzoek wordt gemeten op de tokens die het model daadwerkelijk leest en schrijft, bij de gepubliceerde tarieven van de provider. Die prijs heeft een 5% vergoeding toegevoegd en wordt vervolgens vermenigvuldigd met 1,5, dus betaalt u 1.575 keer de lijstprijs van de provider. Het wordt omgezet in sats bij de live Bitcoin-prijs en in duizendste van een krediet in rekening gebracht. Pro foto's, video's en spraak worden geprijsd per generatie, per seconde of per teken, en transcriptie per seconde van audio, met dezelfde vergoeding en marge. Het standaardbeeld is een flat 5 standaard credits en de standaard stem een flat 3.
- Het minimum . Elke gemeten verzoek dat loopt kost ten minste 0,05 krediet: een halve set op de standaardbalans, 5 sats op Pro.
- Houd vast, dan settle. Voordat een verzoek wordt uitgevoerd, wordt het meeste dat het kan kosten gehouden uit uw saldo, op basis van wat u hebt verzonden en de meeste tokens die het kan schrijven. Tekst buiten de eenvoudige ASCII is afgestemd op zijn UTF-8 bytes, en ASCII-cijfers en punctuatie tellen als een token elk, dus de tekst in elk script, code en getallen worden volledig gehouden. De houding is in hele credits, ten minste één, dus elke aanvraag heeft ten minste 10 gratis sats op de standaardbalans of 100 sats op Pro nodig om te beginnen. Alleen de werkelijke kosten worden gefactureerd; de rest wordt vrijgegeven wanneer het eindigt. Een lange aanvraag houdt haar houding voor zolang het loopt; als de gehouden credits sowieso beschikbaar blijven, stopt een stroom met een
402insufficient_balanceAls de werkelijke kosten hoger zijn dan het saldo kan betalen, wordt het gehele saldo genomen, de rest is verschuldigd (owed_satsIn denymbotobject, en een negatief saldo). Wat verschuldigd is, wordt eerst betaald uit de volgende credits die dat saldo bereiken. Totdat het wordt betaald, kan niets op dat saldo worden besteed: niet door de API, antwoorden in de app, een overdracht of een geschenk. - Niet genoeg krediet. Indien het saldo de houding niet kan dekken, wordt het verzoek afgewezen met
402De fout zegt welke balans kort is, hoeveel sats de aanvraag nodig heeft en hoeveel zijn gratis.max_tokensDat betekent een kleinere houding. - De mislukkingen. Een mislukte aanvraag kost niets, tenzij de provider heeft gefactureerd voor het werk dat het heeft gedaan voordat het mislukte, of een webzoekopdracht of de
nymbot/autoEen stroom die je snijdt wordt in rekening gebracht voor de tokens die de provider rapporteert: Nymbot blijft de stroom van de provider tot 25 seconden lezen nadat je vertrekt om dat getal te krijgen. - Web zoeken kost $ 0,008 een zoekopdracht, omgezet in sats, elke keer dat een zoekopdracht werd uitgevoerd, of het model dan antwoordt of faalt.
Elke reactie zegt wat het kost. JSON-reacties dragen een nymbot object met het saldo waaruit het is betaald, de vergoeding in credits en sats, en wat er overblijft:
Het kostenobject
"nymbot": {
"balance": "pro",
"charged_credits": 0.162,
"charged_sats": 16.2,
"balance_credits": 412.425,
"balance_sats": 41242.5
}
Betaalde antwoorden dragen ook deze kopjes, waar u kunt zoeken naar de kosten van een reactie die niet JSON is, zoals spraak:
| header | Betekenis |
|---|---|
X-Nymbot-Cost-Sats | Wat deze aanvraag kost, in sats. |
X-Nymbot-Balance-Sats | Wat overblijft op het saldo waaruit het is betaald, in sats. |
X-Request-Id | Een id voor het verzoek, op elke reactie. Citeer het als u contact opneemt met ondersteuning. |
De tarieven per miljoen tokens, al inclusief de vergoeding en marge, zijn in de
Modellijst in dollars en sats, en op
De prijslijstAls de Bitcoin-prijs niet kan worden gelezen, worden betaalde verzoeken teruggegeven 503 price_unavailable met
Retry-After: 60 In plaats van te raden.
Fouten
Elke fout heeft dezelfde vorm, die OpenAI-clients al begrijpen. code is een stabiele naam die je kunt matchen; message Het is voor mensen en kan veranderen.
Fout lichaam
{
"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 | Wanneer |
|---|---|
400 invalid_request_error | Het lichaam is niet geldig JSON (invalid_json) een vereist veld ontbreekt (missing_required_parameter), een waarde is verkeerd, of de verzoek vraagt om iets dat het model of eindpunt niet doet, zoals tools op nymbot/auto (unsupported_tool). param De naam van het veld. ook upstream_rejected wanneer de leverancier het verzoek heeft afgewezen. |
401 authentication_error | De sleutel is ontbreken, onbekend, ingetrokken of verlopen, of een ondertekende aanvraag is ongeldig of hergebruikt. |
402 insufficient_quota | Het saldo kan het verzoek niet dekken.Code insufficient_balance, met balance, required_sats En balance_sats. |
403 permission_error | De aanvraag past niet bij de cap van de sleutel (key_limit_reached, met limit_sats, used_sats En reset_at), of het account kan de service niet gebruiken (account_denied). |
404 not_found_error | Een onbekende weg (unknown_endpoint, een model dat niet bestaat (model_not_foundeen onbekende sleutel, factuur of video. |
405 | De weg bestaat, maar niet met die methode (method_not_allowed) van de Allow Header maakt een lijst van de methoden die hij gebruikt. |
413 | Het lichaam of het bestand is te groot (payload_too_large, file_too_large) of een opname is te lang (audio_too_long) zie Limieten. |
415 invalid_request_error | Het lichaam wordt niet als application/json (Of, voor de upload eindpunten, multipart/form-data): unsupported_media_type. |
422 | Een stem en taal die niet samen gaan in tekst tot spraak (voice_language_mismatch, unsupported_language). |
429 rate_limit_error | Te veel verzoeken op deze sleutel, van dit adres, of met credentials die niet kunnen worden geverifieerd (rate_limit_exceeded) of de leverancier is de tariefbeperking (upstream_rate_limitedWacht op de seconden in Retry-After. |
500 api_error | Er is iets mis gegaan aan de kant van Nymbot (internal_error). |
502 api_error | De leverancier heeft geen antwoord gegeven (upstream_error) of een bliksemrekening kon niet worden gemaakt (invoice_unavailable). |
503 api_error | De leverancier is overbelast (upstream_overloaded), de prijs van Bitcoin kan niet worden gelezen (price_unavailable) of een deel van de dienst is afgenomen (service_unavailable, media_hosting_unavailable). Retry-After zegt wanneer opnieuw te proberen, waar het bekend is. |
Twee uitzonderingen :
/api/v1/messagesantwoorden in het foutformaat van Anthropic, want dat is wat Anthropic-clients analyseren:{"type": "error", "error": {"type": "authentication_error", "message": "…"}}Het type volgt de status:invalid_request_error,authentication_error,billing_error(402),permission_error,not_found_error,request_too_large,rate_limit_error,api_errorofoverloaded_error(503).- Een streamingverzoek dat faalt voordat zijn eerste byte een gewone JSON-fout krijgt met de bovenstaande status, niet een gebeurtenisstroom.
Foutberichten bevatten nooit interne details van een andere dienst.Een eigen fout van een provider wordt opnieuw geformuleerd voordat deze je bereikt.
Limieten
| Limiet | Waarde |
|---|---|
| Verzoeken per sleutel | 120 per minuut. bovendien, 429 met Retry-After. |
| Verzoeken zonder sleutel | 120 per minuut per adres, voor het model, audio en betaalmethode lijsten, terugbetaling token cheques, en betaalde eindpunten bellen zonder een sleutel of betaling. 429 met Retry-After. |
| Mislukte authenticatie | 30 per minuut per adres voor sleutels, handtekeningen, betalingsbewijzen en restitutietoetsen die niet verificeren. 429 met Retry-After Credentials worden gecontroleerd voordat het lichaam wordt gelezen. |
| Nieuwe sleutels | 60 per uur per nym en 120 per uur per adres. |
| Top-up facturen | 60 per uur per nym en 120 per uur per adres. |
| NWC portemonnee verbindingen | 10 per uur per nym en 30 per uur per adres. wss:// Op de standaardpoort. |
| Token terugbetalen | 60 verzoeken per minuut per token. |
| adressen | Een IPv6-adres telt als zijn /64 in elke adreslimiet, en een IPv4-gemarkeerd IPv6-adres als zijn IPv4-adres. |
| JSON verzoek lichaam | 4 MB; 64 KB voor verzoeken die zijn ondertekend met uw nym. |
| Multipart verzoek lichaam (uploads) | 32 MB. Een afbeelding om te bewerken kan maximaal 20 MB, een audiobestand maximaal 25 MB. Op maximaal 64 delen, elk met maximaal 8 KB onderdelenkoppen, en een limiet van 1 tot 70 tekens; anders 400 invalid_multipart. |
| Foto's in één chat verzoek | 20 Ieder is een https:// of http:// een link naar een publieke host, of een data:image/… De url. |
| Afbeeldingen per generatie aanvraag | 1 tot 4 (n) |
| Uitvoer tokens | Capped op het eigen maximum van het model. een grotere max_tokens Daardoor wordt het verlaagd, niet afgewezen. |
| Toegang tot spraak | 800 tekens voor de standaard stem, 2000 voor Aura 2. |
| Transcriptie | 30 minuten audio, 25 MB. Een langere opname wordt geweigerd met 413 En niet geladen, zelfs als de lengte ervan alleen bekend is als de Whisper het hoort. |
| Embeddings | 100 inputs per aanvraag. |
| Video werkgelegenheid | Wacht 24 uur nadat ze zijn ingediend; een rendering wordt na een uur opgehouden. |
| Wilt geschiedenis | 90 dagen wachten. |
| Actieve sleutels per nym | Alleen de nieuwste 50 ingetrokken sleutels worden bewaard. |
Een link naar een afbeelding moet wijzen op een publieke host: een adres op een privé- of lokaal netwerk, of op de eigen sites van Nymbot, wordt geweigerd.
Wat het vuur kan zien
De API is niet privé in de manier waarop de apps zijn, en het is de moeite waard om precies te zijn over hoe.
- Het is niet end-to-end versleuteld. In de apps wordt een bericht op uw apparaat afgesloten op sleutels die alleen Nymbot vasthoudt en reist als een Geschenk WrapEen API-verzoek is gewoon HTTPS: het wordt gecodeerd op weg naar Nymbot, en de server van Nymbot leest het in het helder om het te verwerken.
- Prompten en antwoorden worden niet opgeslagen. Wat wordt bewaard is de factuur: voor elke aanvraag de tijd, model, soort, token telt, kosten, saldo, sleutel en of het geslaagd is, gedurende 90 dagen, dat is wat Wilt geschiedenis Een gebruikrecord van dezelfde aanvraag (tijd, soort, model, token tellen, kosten, duur en of het gebruikte webzoek of geslaagd) wordt ook bewaard voor 90 dagen, naast de app zelf.
- Alles wat voor een nym wordt gehouden, is klein en hier vermeld. Vuur sleutels worden opgeslagen als een hash, nooit de sleutel, met hun naam, een korte hint, uitgavencap, resetperiode, vervaldatum en wanneer ze werden gemaakt en voor het laatst gebruikt; alleen de nieuwste 50 herroepte sleutels worden bewaard. Automatische top-up video-jobs worden bewaard voor 24 uur. verzoeken betaald per gesprek laat alleen een Lightning betaling hash voor 7 dagen en een hashed terugbetaling token voor 30 dagen, gekoppeld aan geen nym. kosten een saldo kon niet dekken worden gehouden als verschuldigd totdat een top-up betaalt ze.
- Het verwijderen van de app verwijdert het. A apparaat wipe herroept en verwijdert elke API-sleutel en verwijdert de querygeschiedenis, gebruiksrecords, portemonneeverbindingen en video-jobs.
- De provider van het model ziet uw verzoekCatalogusmodellen worden uitgevoerd bij hun makers; standaardroutes en embeddings worden uitgevoerd op Cloudflare.
- De geproduceerde media zijn publiek. Afbeeldingen en video's die als links worden geleverd, worden geüpload naar openbare Blossom-bestandshosts, waar het adres van een bestand de hash is. Iedereen met de link kan het openen en Nymbot kan het niet opnieuw downloaden.
b64_jsonEn een gegenereerde afbeelding komt terug in de reactie en wordt nooit geüpload. - Zo zijn de foto's die je een generator geeft. Een foto die u uploadt naar
Edit, of verzenden als a
data:URL in een generatorimage_url, wordt eerst geüpload naar een publieke Blossom-host zodat de generator het kan ophalen, en hetzelfde geldt voor het.https://Foto's in een chatverzoek gaan naar de provider van het model, niet naar Blossom. - Een sleutel is gekoppeld aan uw nym. Alles wat een sleutel uitgeeft, komt uit de balans van uw nim, dus het gebruik van API is niet AnoniemAls u wilt dat het gebruik van API's apart wordt gehouden van uw dagelijkse nym, maak dan de sleutels van een afzonderlijke nym met een eigen balans.
Als u de bescherming van de apps nodig hebt, gebruikt u de apps.De API is voor wanneer u de modellen in uw eigen tools nodig hebt.
Elk eindpunt
| eindpunt | Wat het doet | Auth |
|---|---|---|
GET /api/v1/models | Lijst modellen, met prijzen | geen |
POST /api/v1/chat/completions | Chat voltooien | sleutel |
POST /api/v1/responses | Reacties op API | sleutel |
POST /api/v1/messages | Antropische boodschappen | sleutel |
POST /api/v1/messages/count_tokens | Schatten van input tokens | sleutel |
POST /api/v1/images/generations | Genereren van beelden | sleutel of De bliksem |
POST /api/v1/images/edits | Edit een afbeelding | sleutel of De bliksem |
POST /api/v1/videos, GET /api/v1/videos, GET /api/v1/videos/{id} | Start, lijst en controleer video's | sleutel of De bliksem Om te beginnen een |
POST /api/v1/audio/speech | Tekst tot toespraak | sleutel of De bliksem |
GET /api/v1/audio/models, GET /api/v1/audio/voices | Audio modellen en stemmen | geen |
POST /api/v1/audio/transcriptions, POST /api/v1/audio/translations | Spreken naar tekst, en naar Engels | sleutel of De bliksem |
POST /api/v1/embeddings | Embeddings | sleutel of De bliksem |
GET /api/v1/credits/balance (of POST) | Beide balans | sleutel |
GET /api/v1/topup/payment-methods | Manieren om te betalen | geen |
POST /api/v1/topup/create/btc-lightning | Een bliksemrekening | sleutel |
GET /api/v1/topup/status/{invoice_id} | Checks en credits het | sleutel |
GET /api/v1/queries/history | Wat elke aanvraag kost | Key of nym |
GET /api/v1/account | Account samenvatting | Nieuw |
/api/v1/keys | Maak, wijzigt en herroept sleutels | Nieuw |
/api/v1/nwc-auto-topup | Automatische top-ups | Nieuw |
GET /api/v1/l402/refunds, POST /api/v1/l402/refunds/redeem | Checks of redempts een terugbetaling token | Refund token; nym om te redden |
“Nym” betekent een verzoek ondertekend door uw Nostr-sleutel, beschreven in Account aanvragen ondertekenenVoor tools die deze formaten al spreken, zie Tools en SDK's, en voor coderingsagenten zoals Claude Code, Codex en Cline, zie Tools voor coderen.