base de conocimientos desarrolladores
Vista general del fuego
Los modelos, generadores y balances que utiliza en la aplicación, a partir de su propio código.La API habla los formatos OpenAI y Anthropic, por lo que la mayoría de las herramientas y SDKs funcionan cambiando una URL de base y una clave.
Esta página está traducida automáticamente para mayor comodidad. La versión original en inglés es la que se aplica.
Qué es el fuego
Una API HTTP nymbot.ai que responde a las mismas solicitudes que un cliente OpenAI o Anthropic ya envía.
- Complementos de chat, el Respuestas API y Mensajes antropológicos, con streaming, herramientas, imágenes, razonamiento y búsqueda web, para cada modelo en el Catálogo y por el propio auto-routing de Nymbot.
- Imágenes, El video, El discurso, Transcripción y Embajadores.
- Su El equilibrio, Los Lightning Top-ups, Top-ups automáticos de tu cartera y a Historia Cuánto cuesta cada solicitud.
Se paga con los mismos Balances No hay suscripción ni permiso gratuito en la API: cada solicitud se paga a partir de los créditos que compraste.
Lo que la API no hace es agregar nada de lo propio de Nymbot. tus mensajes van al modelo cuando los enviaste: no hay prompt del sistema de Nymbot, no hay memoria, no hay pistas de fecha o idioma. Lo que vuelve es la respuesta del modelo y una nota de lo que cuesta.
URL de base
| Uso | URL de base |
|---|---|
| OpenAI SDKs y herramientas compatibles con OpenAI | https://nymbot.ai/api/v1 |
| Los SDK antropogénicos y Claude Código | https://nymbot.ai/api (El SDK añade /v1/messages por sí mismo) |
Cada punto final vive bajo /api/v1/Un camino desconocido regresa 404 y un camino conocido llamado con el método equivocado vuelve 405Ambos como JSON.
La API responde a las solicitudes de origen cruzado de cualquier sitio, por lo que una página de navegador puede llamarla.Cualquier cosa que envíe a un navegador puede ser leída por quien la abra, sin embargo, así que solo haga eso con una clave que tiene una pequeña CapLos endpoints firmados con tu nym (claves, el resumen de la cuenta, NWC auto-top-up y rescate de reembolso) son la excepción: en un navegador solo responden a los sitios propios de Nymbot. Solicitud de firma de cuenta.
Enviar cada cuerpo JSON con Content-Type: application/jsonCualquier otro tipo es rechazado 415, por lo que una forma HTML simple o una text/plain solicitud de otro sitio no puede llegar a la API. Con cURL, pase
-H "Content-Type: application/json" Junto con -d.
Llaves de fuego
Las claves se hacen en la app. abierto Fuego en la barra lateral de la aplicación web, o en el menú en Android e iOS, y toque Crear una claveDale un nombre y, si lo desea, un capó y una fecha de caducidad.
Copia la clave en un lugar seguro antes de cerrar la hoja: Nymbot sólo conserva una huella digital de ella, por lo que no puede mostrarla de nuevo.
Una llave parece sk-nymbot- seguido de 43 letras, dígitos, diagramas y subtítulos.La aplicación enumera cada clave por su nombre y una breve pista como:
sk-nymbot-Qm7x…c2Lw.
- Una llave pertenece a tu nim. Gasta tu saldo, y solo tu nim puede hacer, cambiar o revocarlo.Cualquiera que tenga la llave puede gastarlo, así que trátalo como una contraseña.
- Las cajas están en sats. Una clave puede tener un límite de gasto, y el límite puede ser resetado todos los días, cada semana (lunes) o cada mes (el primero), a las 00:00 UTC. Cuenta ambos saldos, un crédito estándar como 10 sats y un crédito Pro como 100, por lo que significa el mismo cualquiera que sea el saldo que gasta una solicitud. Antes de que una solicitud se ejecute, el máximo que podría costar (arrodillado hasta créditos enteros) se establece contra lo que queda del límite.
403key_limit_reached, incluso si la respuesta hubiera llegado debajo del capó; el error dice cuánto queda y cuándo se restablece el capó.max_tokensUna solicitud se cobra lo que realmente cuesta y que cuenta contra el capó, por lo que si el proveedor informa de más tokens de los que se pusieron a un lado, la última solicitud que se ajusta puede tomar la clave un poco más allá de su capó; el siguiente se rechaza. - Un capó gastado sólo detiene el gasto. Una clave en su cap puede todavía comprobar el saldo, leer su historia, listar modelos, contar tokens, subir y comprobar un vídeo que ya haya comenzado.
- La expiración es opcional. Después de la fecha que establece, la clave deja de funcionar.
- La revocación es inmediata y definitiva. Una clave revocada falla en su siguiente solicitud. Se mantiene en la lista, marcada revocada, por lo que su historial de gastos todavía tiene sentido.
- Puede tener hasta 25 claves activas, cada una con su propio nombre. Cambiar el período de restauración de una clave inicia un nuevo período desde cero.
La misma hoja muestra el gasto de cada clave durante este período y en total, cuando se usó por última vez, tanto sus saldos como sus recientes solicitudes de API. Gestión de claves.
Autenticar una solicitud
Envíe la clave en cualquiera de estos encabezados. Son equivalentes, así que use lo que su cliente envía por defecto:
| Header | Enviado por |
|---|---|
Authorization: Bearer sk-nymbot-… | SDK de OpenAI, la mayoría de herramientas, Claude Code con ANTHROPIC_AUTH_TOKEN |
x-api-key: sk-nymbot-… | Antropología SDK |
api-key: sk-nymbot-… | Clientes de estilo Azure |
Retorno de una clave perdida, desconocida, revocada o caducada 401Con el código
missing_api_key, invalid_api_key, revoked_api_key o
expired_api_keyListing modelos, modelos de audio y voces, y métodos de pago no necesita una llave.
Imágenes, videos, discursos, transcripciones e incorporaciones también se pueden pagar por una solicitud a la vez a través de Lightning sin clave en absoluto: envíe la solicitud sin una y pague la factura en el 402 Respuesta: Ver Pago por solicitud sin llave.
La gestión de llaves, el resumen de la cuenta y los top-ups automáticos son la excepción: toman una firma de su nim en lugar de una llave, por lo que una llave filtrada no puede hacer más llaves. Solicitud de firma de cuenta.
Su primera solicitud
Coloque la clave en una variable de entorno, luego pregúntele a un modelo algo.Los ejemplos en todas estas páginas lo leen desde 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 es el propio enrutamiento de Nymbot, pagado a partir del saldo estándar. Ponga el ID de un modelo de catálogo allí en su lugar, como anthropic/claude-sonnet-5, para usar ese modelo desde el balance Pro. Listado de modelos cada uno de los id.
Cuánto cuesta una solicitud
La API factura exactamente como la aplicación hace.
- Qué equilibrio
nymbot/autoGasta el estándar balance (10 sats un crédito). Cada otro modelo de chat gasta el por El generador de imagen estándar y la voz estándar gastan créditos estándar; cada otro generador gasta Pro. Las incorporaciones gastan créditos estándar. La transcripción gasta créditos estándar cuando el saldo estándar puede cubrirlo, y los créditos Pro de otra manera. La lista de modelos dice qué saldo gasta cada modelo. - ¿Cuánto Una solicitud de chat se mide en los tokens que el modelo realmente lee y escribe, a las tarifas publicadas del proveedor. Ese precio tiene una tarifa añadida del 5% y luego se multiplica por 1,5, por lo que se paga 1.575 veces el precio de la lista del proveedor. Se convierte en tarifa al precio en vivo de Bitcoin y se cobra en milésimas de un crédito. Las imágenes de Pro, vídeo y voz se preciosan por generación, por segundo o por personaje, y la transcripción por segundo de audio, con la misma tarifa y margen. La imagen estándar es un plano 5 créditos estándar y la voz estándar un plano 3.
- El mínimo . Cada solicitud medida que corre cuesta al menos 0.05 créditos: la mitad de un puesto en el saldo estándar, 5 tasas en Pro. Las fracciones de un crédito se llevan a cabo, no se redondean cada vez.
- Acuérdate y luego sitúate. Antes de que una solicitud se ejecute, el mayor coste que puede costar se mantiene en su balance, en función de lo que usted envió y el mayor número de tokens que puede escribir. El texto fuera del ASCII común se mide a partir de sus bytes UTF-8, y los dígitos ASCII y la puntuación se cuentan como un token cada uno, por lo que el texto en cualquier script, código y números se mantienen en su totalidad. El hold es en créditos enteros, al menos uno, por lo que cualquier solicitud necesita al menos 10 sats gratis en el saldo estándar o 100 sats en Pro para comenzar. Solo se cobra el coste real; el resto se libera cuando termina. Una larga solicitud mantiene su hold por tanto tiempo como se ejecuta; si los créditos mantenidos dejan de estar disponibles de todos modos,
402insufficient_balanceSi el costo real es mayor de lo que el saldo puede pagar, el saldo entero se toma, el resto se debe (owed_satsEn lanymbotobjeto, y un saldo negativo). Lo que se debe se paga primero de los créditos siguientes que alcanzan ese saldo. Hasta que se paga, nada en ese saldo se puede gastar: no por la API, responde en la aplicación, una transferencia o un regalo. - No hay crédito suficiente. Si el saldo no puede cubrir la tenencia, la solicitud se rechaza con
402El error dice qué balance es corto, cuántos sats la solicitud necesita y cuántos son libres.max_tokensSignifica un menor mantenimiento. - los fracasos. Una solicitud que falla no cuesta nada, a menos que el proveedor haya facturado el trabajo que hizo antes de fracasar, o una búsqueda en la web o el
nymbot/autoEl control de tareas ya se había ejecutado; entonces eso es lo que pagas, al menos 0.05 crédito. Un flujo que cortas se cobra por los tokens que reporta el proveedor: Nymbot continúa leyendo el flujo del proveedor durante hasta 25 segundos después de que salgas para obtener ese recuento. Si no llega, la carga se estima a partir de lo que enviaste y lo que se escribió, y por un modelo que razones incluye la totalidad del permiso de salida del hold. - búsqueda web Cuesta $0.008 una búsqueda, convertida en sats, cada vez que se ejecuta una búsqueda, ya sea que el modelo responda o no. Las páginas que lee también se envían al modelo como entrada, por lo que añaden sus tokens.
Cada respuesta dice cuánto cuesta. respuestas JSON llevan un nymbot objeto con el saldo del cual se pagó, el cargo en créditos y sats, y lo que queda:
El coste del objeto
"nymbot": {
"balance": "pro",
"charged_credits": 0.162,
"charged_sats": 16.2,
"balance_credits": 412.425,
"balance_sats": 41242.5
}
Las respuestas pagadas también llevan estos encabezados, que es donde buscar el coste de una respuesta que no es JSON, como el habla:
| Header | Significado |
|---|---|
X-Nymbot-Cost-Sats | Cuánto cuesta esta solicitud, en sats. |
X-Nymbot-Balance-Sats | Lo que queda en el saldo del que se pagó, en sats. |
X-Request-Id | Un identificador para la solicitud, en cada respuesta. Citarlo si contacta con el soporte. |
Las tasas por millón de tokens, ya incluidas la tarifa y la margen, están en el
Lista de modelos en dólares, y en el
La hoja de preciosSi el precio de Bitcoin no se puede leer, las solicitudes pagadas se devuelven 503 price_unavailable con
Retry-After: 60 En lugar de adivinar.
Errores
Cada error tiene la misma forma, una que los clientes de OpenAI ya entienden. code es un nombre estable con el que puedes coincidir; message Es para la gente y puede cambiar.
El cuerpo equivocado
{
"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
}
}
| Estatus | Cuando |
|---|---|
400 invalid_request_error | El cuerpo no es válido JSON (invalid_json), un campo requerido está ausente (missing_required_parameter), un valor es incorrecto, o la solicitud pide algo que el modelo o el punto final no hace, como herramientas en nymbot/auto (unsupported_tool). param Nombre del campo. también upstream_rejected cuando el proveedor rechazó la solicitud. |
401 authentication_error | La clave está perdida, desconocida, revocada o expirada, o una solicitud firmada es inválida o reutilizada. |
402 insufficient_quota | El saldo no puede cubrir la solicitud. código insufficient_balance, con balance, required_sats y balance_sats. |
403 permission_error | La solicitud no se ajusta al capó de la clave (key_limit_reached, con limit_sats, used_sats y reset_at), o la cuenta puede no utilizar el servicio (account_denied). |
404 not_found_error | Un camino desconocido (unknown_endpoint), un modelo que no existe (model_not_found), o una clave desconocida, factura o vídeo. |
405 | El camino existe, pero no con ese método (method_not_allowed) El Allow Header lista los métodos que se utilizan. |
413 | El cuerpo o el archivo es demasiado grande (payload_too_large, file_too_large), o una grabación es demasiado larga (audio_too_long) se Limitaciones. |
415 invalid_request_error | El cuerpo no es enviado como application/json (o, para los puntos finales de subida, multipart/form-data): unsupported_media_type. |
422 | Una voz y un lenguaje que no van juntos en el texto al habla (voice_language_mismatch, unsupported_language). |
429 rate_limit_error | Demasiadas solicitudes en esta clave, desde esta dirección, o con credenciales que no pudieron verificarse (rate_limit_exceeded), o el proveedor está limitado por la tasa-limitación (upstream_rate_limitedEsperar los segundos en Retry-After. |
500 api_error | Algo ha ido mal en el lado de Nymbot (internal_error). |
502 api_error | El proveedor no devolvió una respuesta (upstream_error), o una factura de rayos no podría ser hecha (invoice_unavailable). |
503 api_error | El proveedor está sobrecargado (upstream_overloaded), el precio de Bitcoin no se puede leer (price_unavailable), o una parte del servicio está abajo (service_unavailable, media_hosting_unavailable). Retry-After Dice cuándo intentar de nuevo, donde se conoce. |
Dos excepciones:
/api/v1/messagesrespuestas en el formato de error de Anthropic, ya que eso es lo que analizan los clientes de Anthropic:{"type": "error", "error": {"type": "authentication_error", "message": "…"}}El tipo sigue el estado:invalid_request_error,authentication_error,billing_error(402),permission_error,not_found_error,request_too_large,rate_limit_error,api_errorooverloaded_error(503).- Una solicitud de transmisión que falla antes de su primer byte recibe un error JSON ordinario con el estado anterior, no un flujo de eventos.
Los mensajes de error nunca contienen los detalles internos de otro servicio.El propio error de un proveedor se reordenará antes de que llegue a usted.
Limitaciones
| Limitaciones | Valor |
|---|---|
| Solicitud por clave | 120 por minuto, más que eso. 429 con Retry-After. |
| Solicitud sin llave | 120 por minuto por dirección, para las listas de modelo, audio y método de pago, cheques de token de reembolso y puntos finales pagados llamados sin clave o pago. 429 con Retry-After. |
| Fracaso de la autenticación | 30 por minuto por dirección para claves, firmas, credenciales de pago y tokens de reembolso que no verifican. 429 con Retry-After Las credenciales se controlan antes de que se lea el cuerpo. |
| Nuevas claves | 60 por hora y 120 por hora por dirección. |
| Las facturas top-up | 60 por hora y 120 por hora por dirección. |
| Conexión NWC Wallet | 10 por hora y 30 por hora por dirección.El relay de la cartera debe usar wss:// en el puerto estándar. |
| Reembolso de tokens | 60 solicitudes por minuto por token. |
| direcciones | Una dirección IPv6 cuenta como su totalidad /64 en cada límite de dirección, y una dirección IPv6 mapeada con IPv4 como su dirección IPv4. |
| El cuerpo de solicitud de JSON | 4 MB; 64 KB para solicitudes firmadas con su nim. |
| Cuerpo de solicitud múltiple (uploads) | 32 MB. Una imagen para editar puede ser de hasta 20 MB, un archivo de audio de hasta 25 MB. En la mayoría de 64 partes, cada una con un máximo de 8 KB de encabezados de partes, y un límite de 1 a 70 caracteres; de lo contrario 400 invalid_multipart. |
| Imágenes en una solicitud de chat | Cada uno de ellos es un https:// o http:// enlace a un anfitrión público, o a data:image/… La URL. |
| Imágenes por solicitud de generación | 1 a 4 (n) |
| Producción de tokens | Capped al máximo del propio modelo. un mayor max_tokens Se le baja, no se le rechaza. |
| Entrada del discurso | 800 caracteres para la voz estándar, 2.000 para Aura 2. |
| Transcripción | 30 minutos de audio, 25 MB. Se rechaza una grabación más larga con 413 y no cargado, aun cuando su longitud sólo se conoce una vez que lo ha oído el susurro. |
| Embajadores | 100 entradas por solicitud. |
| Video trabajos | Mantén durante 24 horas después de que se envíen; un rendimiento se abandona después de una hora. a un máximo de 10 rendimientos a la vez por nym. |
| Queremos historia | Se espera durante 90 días. |
| Claves activas por nym | Sólo se conservan las últimas 50 claves revocadas. |
Un enlace a una imagen debe apuntar a un anfitrión público: una dirección en una red privada o local, o en los sitios propios de Nymbot, se rechaza.El ritmo del proveedor que se aplica en la aplicación también se aplica aquí, por lo que una explosión de solicitudes a un proveedor puede ser retrasada en lugar de fracasar.
Lo que el fuego puede ver
La API no es privada en la forma en que las aplicaciones son, y vale la pena ser exactos sobre cómo.
- No está cifrado de fin a fin. En las aplicaciones, un mensaje es sellado en su dispositivo a las claves sólo Nymbot mantiene y viaja como un Regalos de WrapUna solicitud de API es HTTPS ordinario: se encripta en el camino a Nymbot, y el servidor de Nymbot la lee en el claro para manejarla.
- Las solicitudes y respuestas no se almacenan. Lo que se mantiene es la factura: para cada solicitud el tiempo, el modelo, el tipo, las cuentas de token, el coste, el saldo, la clave y si logró, durante 90 días, que es lo que Queremos historia Un registro de uso de la misma solicitud (tiempo, tipo, modelo, cuentas de token, coste, duración y si usó la búsqueda web o logró) también se mantiene durante 90 días, junto con la propia de la aplicación.
- Todo lo demás mantenido para un ninja es pequeño y listado aquí. Llaves de fuego se almacenan como un hash, nunca la clave, con su nombre, una pista corta, capota de gasto, período de restauración, expiración y cuando se hicieron y se usaron por última vez; solo se conservan las últimas 50 claves revocadas. Top-up automático La conexión de la cartera se almacena encriptada, con su umbral, importe y el resultado del último top-up. Los trabajos de vídeo se mantienen durante 24 horas. Las solicitudes pagadas por llamada dejan solo un hash de pago de Lightning durante 7 días y un token de reembolso hashado durante 30 días, vinculado a no nym. Las cargas que un saldo no podía cubrir se mantienen como debidas hasta que un top-up las pague.
- Desactivar la app la eliminará. A Dispositivo Wipe revoca y elimina cada clave de API, y elimina el historial de consultas, los registros de uso, la conexión de cartera y los trabajos de vídeo.
- El proveedor del modelo ve tu solicitudLos modelos de catálogo se ejecutan en sus creadores; las rutas estándar y las incorporaciones se ejecutan en Cloudflare.
- Los medios generados son públicos. Las imágenes y vídeos entregados como enlaces se cargan a los hosts de archivos públicos de Blossom, donde la dirección de un archivo es su hash. Cualquiera con el enlace puede abrirlo, y Nymbot no puede bajarlo de nuevo.
b64_jsony una imagen generada vuelve en la respuesta y nunca es cargada. - Así son las imágenes que dás a un generador. Una imagen que sube a
Editar, o envíe como a
data:URL en un generadorimage_url, es cargado a un anfitrión público Blossom primero para que el generador pueda recogerlo, y lo mismo se aplica a él.https://Las imágenes en una solicitud de chat van al proveedor del modelo, no a Blossom. - Una llave está conectada a su nym. Todo lo que una clave gasta viene del saldo de su nim, por lo que el uso de la API no es AnónimoSi desea que el uso de la API se mantenga aparte de su nym cotidiano, haga las llaves de un nym separado con su propio equilibrio.
Si necesita la protección de las aplicaciones, utilice las aplicaciones.La API es para cuando necesita los modelos en sus propias herramientas.
Todos los puntos finales
| punto final | que hace | Autos |
|---|---|---|
GET /api/v1/models | Modelos listadosCon los precios | Ninguno |
POST /api/v1/chat/completions | Complementos de chat | clave |
POST /api/v1/responses | Respuestas API | clave |
POST /api/v1/messages | Mensajes antropológicos | clave |
POST /api/v1/messages/count_tokens | Estimación de los tokens de entrada | clave |
POST /api/v1/images/generations | Generar imágenes | clave o El relámpago |
POST /api/v1/images/edits | Editar una imagen | clave o El relámpago |
POST /api/v1/videos, GET /api/v1/videos, GET /api/v1/videos/{id} | Inicia, lista y chequea videos | La clave, o El relámpago Para comenzar una |
POST /api/v1/audio/speech | Texto del discurso | clave o El relámpago |
GET /api/v1/audio/models, GET /api/v1/audio/voices | Modelos y voces de audio | Ninguno |
POST /api/v1/audio/transcriptions, POST /api/v1/audio/translations | El habla al texto, y al inglés | clave o El relámpago |
POST /api/v1/embeddings | Embajadores | clave o El relámpago |
GET /api/v1/credits/balance (o el POST) | Los dos equilibrios | clave |
GET /api/v1/topup/payment-methods | Maneras de pagar | Ninguno |
POST /api/v1/topup/create/btc-lightning | Factura de relámpago | clave |
GET /api/v1/topup/status/{invoice_id} | Cheques y créditos | clave |
GET /api/v1/queries/history | Cuánto cuesta cada solicitud | Key o NIM |
GET /api/v1/account | Resumen de Cuentas | Niño |
/api/v1/keys | Crea, cambia y revoca claves | Niño |
/api/v1/nwc-auto-topup | Top-ups automáticos | Niño |
GET /api/v1/l402/refunds, POST /api/v1/l402/refunds/redeem | Cheques o rescata un token de reembolso | Refund token; nym para redimir |
“Nym” significa una solicitud firmada por su clave Nostr, descrita en Solicitud de firma de cuentaPara las herramientas que ya hablan estos formatos, véase Herramientas y SDK, y para agentes de codificación como Claude Code, Codex y Cline, véase Herramientas de codificación.