NezhaGateNezhaGate

Todos los endpoints usan la misma clave de API y el mismo saldo. El chat habla los formatos de OpenAI y de Anthropic; las imágenes y los vídeos se generan como trabajos asíncronos.

URL base

Elige la que corresponda a tu SDK. Las dos comparten clave y saldo.

ProtocoloURL baseSirve para
Compatible con OpenAIhttps://nezhagate.com/v1Chat, Responses, imágenes, vídeo, lista de modelos, saldo
Anthropic nativohttps://nezhagate.com/anthropicLa API Messages de los modelos Claude (Claude Code, el SDK de Anthropic)

Autenticación

Envía tu clave de API en una cabecera en cada petición. Las claves se crean en la página API Keys de la consola y solo se muestran una vez, al crearlas.

Header
Authorization: Bearer YOUR_API_KEY
Content-Type: application/json

Los endpoints de Anthropic usan la cabecera x-api-key y también aceptan Authorization: Bearer.

Gestionar claves de API →

Endpoints

Todas las rutas cuelgan de https://nezhagate.com. Los endpoints síncronos devuelven el resultado; los de imagen y vídeo devuelven un id de trabajo.

MétodoRutaQué hace
POST/v1/chat/completionsChat con cualquier modelo de chat. Con stream: true responde en streaming.
POST/v1/responsesChat con el formato Responses de OpenAI (algunos modelos).
POST/anthropic/v1/messagesLa API Messages nativa de Claude, con streaming, uso de herramientas y caché de prompts.
POST/anthropic/v1/messages/count_tokensCuenta los tokens de una petición Messages.
GET/anthropic/v1/modelsLista de modelos Claude (formato de Anthropic).
POST/v1/images/generationsTexto a imagen. Devuelve al momento un id de trabajo (HTTP 202).
POST/v1/images/editsImagen a imagen. Pasar image a la llamada anterior hace lo mismo.
GET/v1/images/jobs/{id}Consulta un trabajo de imagen: estado y resultado.
POST/v1/videos/generationsGenera un vídeo. Devuelve al momento un id de trabajo (HTTP 202).
GET/v1/videos/jobs/{id}Consulta un trabajo de vídeo: estado y resultado.
GET/v1/modelsLista de los modelos a la venta (formato de OpenAI).
GET/v1/usageSaldo, gasto total y de hoy, y consumo por modelo.
GET/v1/dashboard/billing/credit_grantsConsulta de saldo al estilo de OpenAI; el saldo es total_available.

Trabajos asíncronos (imagen y vídeo)

Las llamadas de imagen y vídeo devuelven al momento HTTP 202 y un id de trabajo; la generación sigue en segundo plano. Consulta el estado con ese id, o recibe el resultado por webhook.

EstadoSignificado
queuedEn cola. Incluye queue_position (trabajos por delante del tuyo) y eta_seconds (espera estimada).
processingGenerándose.
succeededTerminado. El resultado está en data[0].url y el detalle del cobro en usage.
failedFalló. El motivo está en error; los créditos reservados se devuelven íntegros.
curl · Enviar un trabajo
curl https://nezhagate.com/v1/images/generations \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"model": "nano-banana-2", "prompt": "a lighthouse at dawn, watercolor", "size": "16:9"}'

# HTTP 202
{"id": "img_3f9a...c2", "object": "image.generation.job", "status": "queued", "model": "nano-banana-2"}
curl · Consultar el trabajo
curl https://nezhagate.com/v1/images/jobs/img_3f9a...c2 -H "Authorization: Bearer YOUR_API_KEY"
Respuesta al terminar
{
  "id": "img_3f9a...c2",
  "object": "image.generation.job",
  "status": "succeeded",
  "created": 1791199400,
  "model": "nano-banana-2",
  "data": [{"url": "https://img.nezhagate.com/i/9f86d081a8....png"}],
  "usage": {"images": 1, "resolution": "1K", "model": "nano-banana-2"}
}
  • Consulta las imágenes cada 2–3 segundos y los vídeos cada 5–10 segundos. Las consultas son gratis.
  • data[0].url es un enlace de nuestro alojamiento de medios que se guarda 60 días y luego se borra; descarga lo que quieras conservar.
  • Añade callback_url al enviar y, cuando termine el trabajo, el mismo resultado que da la consulta llegará a esa URL. Documentación de webhooks →

Lista de modelos

Devuelve todos los ID de modelo a la venta, con el formato de OpenAI. Los modelos retirados no aparecen; un modelo que llega pronto sí aparece, pero responde 400 model_coming_soon hasta que se abra.

curl · GET /v1/models
curl https://nezhagate.com/v1/models -H "Authorization: Bearer YOUR_API_KEY"
200 · JSON
{"object": "list", "data": [{"id": "gpt-5.5", "object": "model", "owned_by": "..."}, {"id": "claude-sonnet-5", "object": "model", "owned_by": "..."}]}

Saldo y consumo

Cualquier clave de API puede leer el saldo y el gasto de la cuenta, sin entrar en la consola.

curl · GET /v1/usage
curl https://nezhagate.com/v1/usage -H "Authorization: Bearer YOUR_API_KEY"
200 · JSON
{
  "object": "usage",
  "balance": {"usd": 12.5, "credits": 2500},
  "total": {"cost_usd": 37.5, "requests": 1840, "billed_requests": 1822, "failed_requests": 18},
  "today": {"cost_usd": 1.2, "requests": 64, "billed_requests": 63, "failed_requests": 1},
  "by_model": [
    {"model": "gpt-5.5", "cost_usd": 20.1, "requests": 900, "billed_requests": 896, "failed_requests": 4,
     "prompt_tokens": 1520000, "completion_tokens": 410000, "image_count": 0}
  ]
}

balance.usd es el saldo en dólares y balance.credits el mismo saldo en créditos (1 USD = 200 créditos).

Para herramientas que ya saben consultar un saldo de OpenAI, usa el endpoint al estilo de OpenAI; el saldo es total_available.

curl · GET /v1/dashboard/billing/credit_grants
curl https://nezhagate.com/v1/dashboard/billing/credit_grants -H "Authorization: Bearer YOUR_API_KEY"

Formato de error

Todos los errores tienen la misma forma. code es un identificador estable y legible por máquina: decide según code, nunca según el texto de message.

400 · JSON
{
  "error": {
    "message": "Model not enabled: gpt-9",
    "type": "invalid_request_error",
    "code": "model_not_found",
    "param": "model"
  }
}
HTTPCuándo aparece
400Un parámetro incorrecto o un modelo desconocido (como model_not_found); error.param indica el campo.
401Falta la clave, o es inválida o está desactivada (missing_api_key, invalid_api_key).
402Saldo insuficiente, o la clave llegó a su presupuesto (insufficient_quota).
403El modelo no está en la lista de modelos permitidos de esta clave.
404El trabajo no existe o pertenece a otra clave (job_not_found).
429Límite de peticiones, o todas las líneas de este modelo están ocupadas. Espera los segundos que indica la cabecera Retry-After y reintenta.
502El proveedor falló o tardó demasiado (upstream_error). No se cobra; puedes reintentar.
503El modelo está en mantenimiento (model_maintenance) y no acepta trabajos hasta que vuelva.

Lista completa de códigos de error →

Límites y reintentos

  • Las cuentas no tienen un límite de peticiones por defecto. En la consola puedes dar a cada clave su propio tope de peticiones por minuto, presupuesto diario, límite de gasto total, lista de modelos permitidos y lista de IP permitidas.
  • Ante un 429, espera lo que indique la cabecera Retry-After y reintenta. Para 502, 503 y tiempos de espera agotados, reintenta con espera exponencial (por ejemplo 1, 2 y luego 4 segundos).
  • Las peticiones fallidas nunca se cobran. Si un streaming se corta a medias, solo pagas lo que llegó.
  • Si necesitas alta concurrencia de forma sostenida, avísanos con antelación y ampliaremos la capacidad para tu volumen.

SDK y ejemplos

No hace falta un SDK propio: los SDK oficiales de OpenAI y Anthropic funcionan cambiando base_url.

Python · openai
from openai import OpenAI

client = OpenAI(base_url="https://nezhagate.com/v1", api_key="YOUR_API_KEY")
resp = client.chat.completions.create(
    model="gpt-5.5",
    messages=[{"role": "user", "content": "Hello"}],
    stream=True,
)
for chunk in resp:
    print(chunk.choices[0].delta.content or "", end="")

Más ejemplos listos para ejecutar (Python, Node.js, curl, incluido el flujo asíncrono de imagen y vídeo): github.com/gaoorange/nezhagate-api-examples

Documentación de cada modelo

Cada modelo tiene su propia página: valores admitidos de los parámetros, código de ejemplo, formato de respuesta y forma de cobro.

Modelos de chat

Modelos de imagen

Modelos de vídeo