Base di conoscenza sviluppatori
Panoramica del fuoco
L'API parla i formati OpenAI e Anthropic, quindi la maggior parte degli strumenti e SDK funzionano cambiando un URL di base e una chiave.
Questa pagina è tradotta automaticamente per comodità. Si applica l'originale inglese.
Che cosa è il fuoco
Una API HTTP nymbot.ai che risponde alle stesse richieste già inviate da un client OpenAI o Anthropic.
- Chat di completamento, il Risposte API E Messaggi antropologici, con streaming, strumenti, immagini, ragionamento e ricerca web, per ogni modello nel catalogo e per il proprio auto-routing di Nymbot.
- Immagini, Il video, Il discorso, La trascrizione E Inserimento.
- Tuo equilibrio, Il Lightning Top-Ups, Top-up automatico dal tuo portafoglio e a Storia Quanto costa ogni richiesta.
Si paga per le stesse due equilibri Non c'è abbonamento e nessuna concessione gratuita sull'API: ogni richiesta viene pagata dai crediti acquistati.
Quello che l'API non fa è aggiungere qualcosa del proprio Nymbot. I tuoi messaggi vanno al modello mentre li hai inviati: nessun prompt del sistema Nymbot, nessuna memoria, nessuna data o suggerimenti di lingua.
URL di base
| usare | URL di base |
|---|---|
| OpenAI SDK e strumenti compatibili con OpenAI | https://nymbot.ai/api/v1 |
| SDK antropiche e Claude Codice | https://nymbot.ai/api (l’SDK si aggiunge /v1/messages di sé) |
Tutti gli endpoint vivono sotto /api/v1/Un cammino sconosciuto torna 404 e un percorso conosciuto chiamato con il metodo sbagliato ritorna 405Entrambi come JSON.
L'API risponde alle richieste di origine incrociata da qualsiasi sito, in modo che una pagina del browser possa chiamarlo.Tutto ciò che invii a un browser può essere letto da chiunque lo apra, tuttavia, quindi fai solo con una chiave che ha una piccola CapoGli endpoint firmati con il tuo nym (chiavi, riassunto dell'account, NWC auto-top-up e rimborso di riscatto) sono l'eccezione: in un browser rispondono solo ai siti propri di Nymbot. Firmare le richieste di account.
Invia ogni corpo JSON con Content-Type: application/jsonQualsiasi altro tipo è rifiutato 415, quindi una semplice forma HTML o un text/plain richiesta da un altro sito non può raggiungere l'API. Con cURL, passare
-H "Content-Type: application/json" insieme con -d.
chiavi di fuoco
Le chiavi sono fatte nell'app. aperto Fuoco nella barra laterale dell'app web, o nel menu su Android e iOS, e toccare Crea la chiaveDai un nome e, se vuoi, un cappello e una data di scadenza.
Copia in un luogo sicuro prima di chiudere il foglio: Nymbot ne conserva solo un'impronta digitale, quindi non può mostrarti di nuovo.
La chiave sembra sk-nymbot- seguita da 43 lettere, cifre, dash e sottoscore. L'app elenca ogni chiave con il suo nome e un breve indizio come:
sk-nymbot-Qm7x…c2Lw.
- Una chiave appartiene al tuo nym. Spende il tuo saldo, e solo il tuo nimmo può farlo, cambiarlo o revocarlo. Chiunque detenga la chiave può spendere con esso, quindi trattalo come una password.
- I capi sono in scommessa. Una chiave può avere una copertura di spesa, e la copertura può essere reimpostata ogni giorno, ogni settimana (Lunedi) o ogni mese (il primo), alle 00:00 UTC. Conta entrambi i saldi, un credito standard come 10 sats e un credito Pro come 100, quindi significa lo stesso qualunque sia il saldo che una richiesta spende.
403key_limit_reached, anche se la risposta sarebbe venuta sotto il cappello; l'errore dice quanto è rimasto e quando il cappello si ripristina.max_tokensUna richiesta viene addebitata ciò che costa effettivamente e che conta contro il capo, quindi se il fornitore segnala più token di quelli che sono stati messi da parte, l'ultima richiesta che si adatta può prendere la chiave un po 'oltre il capo; il prossimo viene poi rifiutato. - Un cappello speso ferma solo le spese. Una chiave al suo capo può ancora controllare il saldo, leggere la sua storia, elencare i modelli, contare i token, top up e controllare un video che ha già iniziato.
- La scadenza è facoltativa. Dopo la data impostata, la chiave smette di funzionare.
- La revoca è immediata e definitiva. Una chiave revocata fallisce la sua successiva richiesta. rimane nell'elenco, contrassegnata revocata, quindi la sua storia di spesa ha ancora senso.
- È possibile avere fino a 25 chiavi attive, ognuna con il proprio nome.Cambiare il periodo di ripristino di una chiave inizia un nuovo periodo da zero.
Lo stesso foglio mostra la spesa di ciascuna chiave per questo periodo e in totale, quando è stata usata l'ultima volta, sia i tuoi saldi che le tue richieste API recenti. Gestione delle chiavi.
Autenticare una richiesta
Invia la chiave in uno qualsiasi di questi titoli. Essi sono equivalenti, quindi usa ciò che il tuo cliente invia per impostazione predefinita:
| Il Header | inviato da |
|---|---|
Authorization: Bearer sk-nymbot-… | OpenAI SDK, la maggior parte degli strumenti, Claude Code con ANTHROPIC_AUTH_TOKEN |
x-api-key: sk-nymbot-… | SDK antropiche |
api-key: sk-nymbot-… | Clienti di stile Azure |
Un ritorno di chiavi mancante, sconosciuto, revocato o scaduto 401Con il codice
missing_api_key, invalid_api_key, revoked_api_key o
expired_api_keyElenco modelli, modelli audio e voci, e metodi di pagamento non hanno bisogno di una chiave.
Immagini, video, discorsi, trascrizioni e embeddings possono anche essere pagati per una richiesta alla volta su Lightning senza chiave affatto: inviare la richiesta senza una e pagare la fattura nel 402 Rispondi - Vedi Pagamento su richiesta senza chiave.
La gestione delle chiavi, il riassunto dell'account e i top-up automatici sono l'eccezione: prendono una firma dal tuo nym invece di una chiave, quindi una chiave fuoriuscita non può fare più chiavi. Firmare le richieste di account.
La tua prima richiesta
Metti la chiave in una variabile ambientale, poi chiedi a un modello qualcosa. 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 è il proprio routing di Nymbot, pagato dal saldo standard. anthropic/claude-sonnet-5, per usare questo modello dal bilanciamento Pro. Elenco dei modelli Tutte le ID.
Quanto costa una richiesta
L'API fattura esattamente come fa l'app.
- Ma che equilibrio.
nymbot/autoSpende il standard saldo (10 sats un credito). Ogni altro modello di chat spende il Pro Il generatore di immagini standard e la voce standard spendono crediti standard; ogni altro generatore spende Pro. Gli embeddings spendono crediti standard. La trascrizione spende crediti standard quando il saldo standard può coprirlo, e i crediti Pro altrimenti. L'elenco dei modelli dice quale saldo spende ogni modello. - Quanto è. Una richiesta di chat viene misurata sui token che il modello effettivamente legge e scrive, ai tassi pubblicati del fornitore. Questo prezzo ha un costo aggiunto del 5% e viene poi moltiplicato per 1,5, quindi paghi 1.575 volte il prezzo di elenco del fornitore. Si converte in sats al prezzo Bitcoin dal vivo e viene addebitato in migliaia di un credito. Le immagini pro, i video e la voce sono valutati per generazione, per secondo o per carattere, e la trascrizione per secondo di audio, con la stessa tassa e margine. L'immagine standard è un piatto 5 crediti standard e la voce standard un piatto 3.
- Il minimo . Ogni richiesta misurata che corre costa almeno 0,05 credito: metà posto sul saldo standard, 5 rate su Pro. Frazioni di un credito vengono trasportate, non arrotondate ogni volta.
- Prendi e poi stabilisci. Prima di eseguire una richiesta, il più che potrebbe costare è tenuto dal tuo saldo, in base a ciò che hai inviato e al più di token che può scrivere. Il testo esterno di ASCII ordinario è dimensionato dai suoi byte UTF-8, e le cifre ASCII e il punteggio contano come un token ciascuno, quindi il testo in qualsiasi script, codice e numeri sono tenuti per intero. Il hold è in crediti interi, almeno uno, quindi qualsiasi richiesta ha bisogno di almeno 10 rate gratuite sul saldo standard o 100 rate su Pro per iniziare. Solo il costo effettivo viene addebitato; il resto viene rilasciato quando finisce. Una lunga richiesta mantiene il suo hold per tutto il tempo in cui funziona; se i crediti detenuti smettono di essere disponibili comunque, un flusso si fer
402insufficient_balanceSe il costo effettivo è superiore a quello che il saldo può pagare, l'intero saldo è preso, il resto è dovuto (owed_satsIn quellanymbotCiò che è dovuto viene pagato prima dai successivi crediti che raggiungono quel saldo. Fino a quando non viene pagato, nulla su quel saldo può essere speso: non dall'API, risponde nell'app, un trasferimento o un dono. - Non abbastanza credito. Se il saldo non può coprire la tenuta, la richiesta è respinta con
402L'errore dice quale bilancio è breve, quanti sats la richiesta ha bisogno e quanti sono liberi.max_tokensSignifica una manciata più piccola. - dei fallimenti. Una richiesta che fallisce non costa nulla, a meno che il fornitore non faccia la fattura per il lavoro che ha fatto prima di fallire, o una ricerca web o il
nymbot/autoUn flusso che si taglia viene addebitato per i token che il provider segnala: Nymbot continua a leggere il flusso del provider fino a 25 secondi dopo che si lascia per ottenere quel conteggio. Se non arriva, il costo è stimato da ciò che hai inviato e ciò che è stato scritto, e per un modello che motivi include l'intero permesso di uscita del hold. - Ricerca web costa $0.008 una ricerca, convertita in sats, ogni volta che una ricerca è stata eseguita, se il modello risponde o fallisce.
Ogni risposta dice quanto costa. risposte JSON portano un nymbot oggetto con il saldo da cui è stato pagato, il costo in crediti e sats, e ciò che resta:
Il costo dell'oggetto
"nymbot": {
"balance": "pro",
"charged_credits": 0.162,
"charged_sats": 16.2,
"balance_credits": 412.425,
"balance_sats": 41242.5
}
Le risposte pagate portano anche questi intestazioni, che sono dove cercare il costo di una risposta che non è JSON, come la voce:
| Il Header | Significato |
|---|---|
X-Nymbot-Cost-Sats | Quanto costa questa richiesta, in sats. |
X-Nymbot-Balance-Sats | Quello che resta sul saldo da cui è stato pagato, in sats. |
X-Request-Id | Un ID per la richiesta, su ogni risposta. Citalo se contatta il supporto. |
Le tariffe per milione di token, già incluse le commissioni e il margine, sono
Elenco dei modelli in dollari e in tasse, e su
La scheda dei prezziSe il prezzo Bitcoin non può essere letto, le richieste pagate vengono restituite 503 price_unavailable con
Retry-After: 60 Piuttosto che indovinare.
errori
Ogni errore ha la stessa forma, quella che i clienti OpenAI già comprendono. code è un nome stabile su cui puoi corrispondere; message è per le persone e può cambiare.
Corpo errato
{
"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
}
}
| Statuto | Quando |
|---|---|
400 invalid_request_error | Il corpo non è valido JSON (invalid_json), un campo richiesto è mancante (missing_required_parameter), un valore è sbagliato, o la richiesta chiede qualcosa che il modello o il punto finale non fa, ad esempio strumenti su nymbot/auto (unsupported_tool). param Il nome del campo. anche upstream_rejected quando il fornitore rifiuta la richiesta. |
401 authentication_error | La chiave è mancante, sconosciuta, revocata o scaduta, oppure una richiesta firmata è invalida o riutilizzata. |
402 insufficient_quota | Il saldo non può coprire la richiesta. codice insufficient_balance, con balance, required_sats E balance_sats. |
403 permission_error | La richiesta non corrisponde al capo della chiave (key_limit_reached, con limit_sats, used_sats E reset_at), o l'account potrebbe non utilizzare il servizio (account_denied). |
404 not_found_error | Una strada sconosciuta (unknown_endpointUn sistema che non esiste (model_not_found), o una chiave sconosciuta, fattura o video. |
405 | Il percorso esiste, ma non con questo metodo (method_not_allowed) il Allow Header elenca i metodi che utilizza. |
413 | Il corpo o il file è troppo grande (payload_too_large, file_too_large) o una registrazione è troppo lunga (audio_too_long) si Limiti. |
415 invalid_request_error | Il corpo non viene inviato come application/json (o, per i punti finali di upload, multipart/form-data): unsupported_media_type. |
422 | Una voce e una lingua che non vanno insieme nel testo alla parola (voice_language_mismatch, unsupported_language). |
429 rate_limit_error | Troppe richieste su questa chiave, da questo indirizzo, o con credenziali che non sono riuscite a verificare (rate_limit_exceeded(o il fornitore è limitato al tasso di tasso)upstream_rate_limitedAttendere i secondi in Retry-After. |
500 api_error | Qualcosa è andato storto sul lato di Nymbot (internal_error). |
502 api_error | Il fornitore non ha risposto (upstream_error(o non può essere effettuata una fattura fulmine)invoice_unavailable). |
503 api_error | Il fornitore è sovraccaricato (upstream_overloaded), il prezzo di Bitcoin non può essere letto (price_unavailable), o una parte del servizio è in calo (service_unavailable, media_hosting_unavailable). Retry-After dire quando provare di nuovo, dove è noto. |
Due le eccezioni:
/api/v1/messagesrisposte nel formato di errore di Anthropic, poiché questo è ciò che i clienti di Anthropic analizzano:{"type": "error", "error": {"type": "authentication_error", "message": "…"}}Il tipo segue lo stato:invalid_request_error,authentication_error,billing_error(402),permission_error,not_found_error,request_too_large,rate_limit_error,api_errorooverloaded_error(503).- Una richiesta di streaming che fallisce prima del suo primo byte riceve un errore JSON ordinario con lo stato sopra, non un flusso di eventi.
I messaggi di errore non contengono mai i dettagli interni di un altro servizio.
Limiti
| Limite | Valore |
|---|---|
| Richieste per chiave | 120 per minuto, oltre a questo, 429 con Retry-After. |
| Richieste senza chiave | 120 a minuto per indirizzo, per l'elenco del modello, audio e metodo di pagamento, controlli token di rimborso e terminali pagati chiamati senza chiave o pagamento. 429 con Retry-After. |
| L’autenticazione fallita | 30 per minuto per indirizzo per chiavi, firme, credenziali di pagamento e token di rimborso che non verificano. 429 con Retry-After Le credenziali vengono controllate prima di leggere il corpo. |
| Nuove chiavi | 60 per ora per nym e 120 per ora per indirizzo. |
| Top-up delle fatture | 60 per ora per nym e 120 per ora per indirizzo. |
| Connessioni per portafogli NWC | 10 un'ora per nym e 30 un'ora per indirizzo. Il relay portafoglio deve utilizzare wss:// per il porto standard. |
| Rimborso dei token | 60 richieste al minuto per token. |
| Indirizzi | Un indirizzo IPv6 conta come il suo intero /64 in ogni limite per indirizzo, e un indirizzo IPv6 mappato IPv4 come il suo indirizzo IPv4. |
| Corpo di richiesta JSON | 4 MB; 64 KB per le richieste firmate con il tuo nym. |
| Corpo di richiesta multiparte (uploads) | 32 MB. Un'immagine da modificare può essere fino a 20 MB, un file audio fino a 25 MB. In più di 64 parti, ciascuna con un massimo di 8 KB di intestazioni di parti, e un limite di 1 a 70 caratteri; altrimenti 400 invalid_multipart. |
| Immagini in una richiesta di chat | 20 – Ciascuno è un https:// o http:// collegamento a un host pubblico, o a data:image/… di url. |
| Immagini per generazione richiesta | 1 a 4 (n) |
| I token di uscita | Capito al massimo del modello stesso. un più grande max_tokens Si riduce, non si rifiuta. |
| Ingresso del discorso | 800 caratteri per la voce standard, 2.000 per Aura 2. |
| La trascrizione | 30 minuti di audio, 25 MB. Una registrazione più lunga è rifiutata con 413 e non accusato, anche se la sua lunghezza è conosciuta solo una volta che lo ha sentito il Sussurro. |
| Inserimento | 100 ingressi per richiesta. |
| Video lavori | Mantenere per 24 ore dopo la loro presentazione; un rendering viene abbandonato dopo un'ora. Al massimo 10 rendering alla volta per nym. |
| Vogliamo la storia | In attesa di 90 giorni. |
| Key per nym attivo | Si conservano solo le ultime 50 chiavi revocate. |
Un link a un'immagine deve puntare a un host pubblico: un indirizzo su una rete privata o locale, o sui propri siti di Nymbot, viene rifiutato. il ritmo del provider che si applica nell'app si applica anche qui, quindi un'esplosione di richieste a un provider può essere rallentata piuttosto che fallita.
Quello che il fuoco può vedere
L'API non è privata nel modo in cui le app sono, e vale la pena essere precisi su come.
- Non è end-to-end crittografato. Nelle app, un messaggio è sigillato sul tuo dispositivo a chiavi solo Nymbot detiene e viaggia come un Donazione WrapUna richiesta API è ordinaria HTTPS: è crittografata sulla strada per Nymbot, e il server di Nymbot la legge nel chiaro per gestirla.
- Le richieste e le risposte non vengono memorizzate. Ciò che viene mantenuto è il conto: per ogni richiesta il tempo, il modello, il tipo, il conteggio del token, il costo, il saldo, la chiave e se è riuscito, per 90 giorni, che è quello che Vogliamo la storia Un record di utilizzo della stessa richiesta (ora, tipo, modello, conteggio dei token, costo, durata e se ha usato la ricerca web o ha avuto successo) viene conservato anche per 90 giorni, insieme alla propria app.
- Tutto il resto tenuto per una nym è piccolo e elencato qui. chiavi di fuoco sono memorizzati come un hash, mai la chiave, con il loro nome, un breve suggerimento, copertura di spesa, periodo di ripristino, scadenza e quando sono stati realizzati e usati per l'ultima volta; vengono conservati solo i più recenti 50 chiavi revocate. Top-up automatico La connessione del portafoglio viene memorizzata crittografata, con la soglia, l'importo e il risultato dell'ultimo top-up. I lavori video vengono mantenuti per 24 ore. Le richieste pagate per chiamata lasciano solo un hash di pagamento Lightning per 7 giorni e un token di rimborso hashed per 30 giorni, collegato a nessun nym. Le spese che un saldo non poteva coprire sono mantenute come dovute fino a quando un top-up non le paga.
- Applicare l’app lo cancella. A Dispositivo Wipe revoca e elimina ogni chiave API e elimina la cronologia delle query, i record di utilizzo, la connessione del portafoglio e i lavori video.
- Il fornitore del modello vede la tua richiestaI modelli di catalogo vengono eseguiti presso i loro creatori; i percorsi e gli embeddings standard vengono eseguiti su Cloudflare.
- I media generati sono pubblici. Le immagini e i video consegnati come link vengono caricati su host di file pubblici Blossom, dove l'indirizzo di un file è il suo hash. Chiunque abbia il link può aprirlo e Nymbot non può rimuoverlo.
b64_jsone un'immagine generata viene restituita nella risposta e non viene mai caricata. - Così sono le immagini che si danno a un generatore. Un'immagine che si carica su
edito inviare come a
data:URL in un generatoreimage_url, viene caricato su un host pubblico Blossom prima in modo che il generatore possa prenderlo, e lo stesso vale per esso.https://Le immagini in una richiesta di chat vanno al provider del modello, non a Blossom. - Una chiave è collegata al tuo nym. Tutto ciò che una chiave spende proviene dal saldo del tuo nym, quindi l'uso dell'API non è AnonimoSe vuoi che l'utilizzo dell'API venga tenuto separatamente dalla tua nicchia quotidiana, fai le chiavi da una nicchia separata con il suo proprio equilibrio.
Se hai bisogno della protezione delle app, usa le app. L'API è per quando hai bisogno dei modelli nei tuoi strumenti.
Tutti gli endpoint
| Endpoint | Cosa fa | Autismo |
|---|---|---|
GET /api/v1/models | Elenco dei modelliCon i prezzi | Nessuno |
POST /api/v1/chat/completions | Chat di completamento | chiave |
POST /api/v1/responses | Risposte API | chiave |
POST /api/v1/messages | Messaggi antropologici | chiave |
POST /api/v1/messages/count_tokens | Valutazione dei token di input | chiave |
POST /api/v1/images/generations | Generare immagini | chiave o Il fulmine |
POST /api/v1/images/edits | Edita un'immagine | chiave o Il fulmine |
POST /api/v1/videos, GET /api/v1/videos, GET /api/v1/videos/{id} | Inizia, elenca e controlla i video | chiave o Il fulmine Per iniziare una |
POST /api/v1/audio/speech | Il testo del discorso | chiave o Il fulmine |
GET /api/v1/audio/models, GET /api/v1/audio/voices | Modelli audio e voci | Nessuno |
POST /api/v1/audio/transcriptions, POST /api/v1/audio/translations | Discorso a testo, e in inglese | chiave o Il fulmine |
POST /api/v1/embeddings | Inserimento | chiave o Il fulmine |
GET /api/v1/credits/balance (o di POST) | Entrambi gli equilibri | chiave |
GET /api/v1/topup/payment-methods | Modi per pagare | Nessuno |
POST /api/v1/topup/create/btc-lightning | Il fulmine della fattura | chiave |
GET /api/v1/topup/status/{invoice_id} | Controlli e crediti | chiave |
GET /api/v1/queries/history | Quanto costa ogni richiesta | chiave o nym |
GET /api/v1/account | Conto riassunto | Nino |
/api/v1/keys | Crea, modifica e revoca le chiavi | Nino |
/api/v1/nwc-auto-topup | Top-up automatico | Nino |
GET /api/v1/l402/refunds, POST /api/v1/l402/refunds/redeem | Controllare o riscattare un token di rimborso | Rimborso token; nym to redeem |
“Nym” significa una richiesta firmata dalla tua chiave Nostr, descritta in Firmare le richieste di accountPer gli strumenti che già parlano di questi formati, vedere Strumenti e SDK, e per agenti di codifica come Claude Code, Codex e Cline, vedi Strumenti di codifica.