Saltar al contenido
Volver a Nymbot

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.

Qué es el fuego

Una API HTTP nymbot.ai que responde a las mismas solicitudes que un cliente OpenAI o Anthropic ya envía.

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

UsoURL de base
OpenAI SDKs y herramientas compatibles con OpenAIhttps://nymbot.ai/api/v1
Los SDK antropogénicos y Claude Códigohttps://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. 403 key_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_tokens Una 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:

HeaderEnviado 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/auto Gasta 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, 402 insufficient_balance Si el costo real es mayor de lo que el saldo puede pagar, el saldo entero se toma, el resto se debe (owed_sats En la nymbot objeto, 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 402 El error dice qué balance es corto, cuántos sats la solicitud necesita y cuántos son libres. max_tokens Significa 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/auto El 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:

HeaderSignificado
X-Nymbot-Cost-SatsCuánto cuesta esta solicitud, en sats.
X-Nymbot-Balance-SatsLo que queda en el saldo del que se pagó, en sats.
X-Request-IdUn 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
  }
}
EstatusCuando
400 invalid_request_errorEl 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_errorLa clave está perdida, desconocida, revocada o expirada, o una solicitud firmada es inválida o reutilizada.
402 insufficient_quotaEl saldo no puede cubrir la solicitud. código insufficient_balance, con balance, required_sats y balance_sats.
403 permission_errorLa 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_errorUn camino desconocido (unknown_endpoint), un modelo que no existe (model_not_found), o una clave desconocida, factura o vídeo.
405El camino existe, pero no con ese método (method_not_allowed) El Allow Header lista los métodos que se utilizan.
413El 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_errorEl cuerpo no es enviado como application/json (o, para los puntos finales de subida, multipart/form-data): unsupported_media_type.
422Una voz y un lenguaje que no van juntos en el texto al habla (voice_language_mismatch, unsupported_language).
429 rate_limit_errorDemasiadas 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_errorAlgo ha ido mal en el lado de Nymbot (internal_error).
502 api_errorEl proveedor no devolvió una respuesta (upstream_error), o una factura de rayos no podría ser hecha (invoice_unavailable).
503 api_errorEl 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/messages respuestas 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_error o overloaded_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

LimitacionesValor
Solicitud por clave120 por minuto, más que eso. 429 con Retry-After.
Solicitud sin llave120 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ón30 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 claves60 por hora y 120 por hora por dirección.
Las facturas top-up60 por hora y 120 por hora por dirección.
Conexión NWC Wallet10 por hora y 30 por hora por dirección.El relay de la cartera debe usar wss:// en el puerto estándar.
Reembolso de tokens60 solicitudes por minuto por token.
direccionesUna 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 JSON4 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 chatCada 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ón1 a 4 (n)
Producción de tokensCapped al máximo del propio modelo. un mayor max_tokens Se le baja, no se le rechaza.
Entrada del discurso800 caracteres para la voz estándar, 2.000 para Aura 2.
Transcripción30 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.
Embajadores100 entradas por solicitud.
Video trabajosManté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 historiaSe espera durante 90 días.
Claves activas por nymSó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_json y 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 generador image_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 finalque haceAutos
GET /api/v1/modelsModelos listadosCon los preciosNinguno
POST /api/v1/chat/completionsComplementos de chatclave
POST /api/v1/responsesRespuestas APIclave
POST /api/v1/messagesMensajes antropológicosclave
POST /api/v1/messages/count_tokensEstimación de los tokens de entradaclave
POST /api/v1/images/generationsGenerar imágenesclave o El relámpago
POST /api/v1/images/editsEditar una imagenclave o El relámpago
POST /api/v1/videos, GET /api/v1/videos, GET /api/v1/videos/{id}Inicia, lista y chequea videosLa clave, o El relámpago Para comenzar una
POST /api/v1/audio/speechTexto del discursoclave o El relámpago
GET /api/v1/audio/models, GET /api/v1/audio/voicesModelos y voces de audioNinguno
POST /api/v1/audio/transcriptions, POST /api/v1/audio/translationsEl habla al texto, y al inglésclave o El relámpago
POST /api/v1/embeddingsEmbajadoresclave o El relámpago
GET /api/v1/credits/balance (o el POST)Los dos equilibriosclave
GET /api/v1/topup/payment-methodsManeras de pagarNinguno
POST /api/v1/topup/create/btc-lightningFactura de relámpagoclave
GET /api/v1/topup/status/{invoice_id}Cheques y créditosclave
GET /api/v1/queries/historyCuánto cuesta cada solicitudKey o NIM
GET /api/v1/accountResumen de CuentasNiño
/api/v1/keysCrea, cambia y revoca clavesNiño
/api/v1/nwc-auto-topupTop-ups automáticosNiño
GET /api/v1/l402/refunds, POST /api/v1/l402/refunds/redeemCheques o rescata un token de reembolsoRefund 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.