Saltar al contenido principal

API de InferNode

Ruta base: https://api.<tu-dominio>/infernode/v1. Autenticación con Authorization: Bearer sk-saptiva-.... Compatible con el SDK de OpenAI (ver Usar la API desde código).

Inferencia

Método y rutaDescripción
POST /v1/chat/completionsChat. Campos: model, messages, stream, temperature, top_p, max_tokens, n, stop, presence_penalty, frequency_penalty, seed, tools, tool_choice, response_format, logprobs, top_logprobs. Con stream: true responde por SSE con el formato de chunks de OpenAI.
POST /v1/embeddingsVectores. model, input (string o lista).
POST /v1/images/generationsGenera imágenes. Cuerpo: preset (nombre del modelo de imagen del Catálogo), prompt (hasta 4096 caracteres), n (1 a 4), size (por defecto 1024x1024). Devuelve el resultado o un trabajo con job_id si la generación es asíncrona. Cuenta contra el límite de imágenes por minuto.
GET /v1/images/generations/{job_id}Estado y resultado del trabajo.
POST /v1/guardEvalúa un texto contra las categorías de riesgo.
GET /v1/guard/eventsEvaluaciones registradas de tu Cliente.

Ejemplo de petición y respuesta

curl https://api.<tu-dominio>/infernode/v1/chat/completions -i \
-H "Authorization: Bearer sk-saptiva-..." -H "Content-Type: application/json" \
-d '{"model": "Qwen/Qwen3.6-27B-FP8", "messages": [{"role": "user", "content": "Hola"}], "max_tokens": 64}'
HTTP/1.1 200 OK
X-Request-Id: req_01J9X4M2K7
X-RateLimit-Remaining-Requests: 58
X-RateLimit-Remaining-Tokens: 199872
X-Request-Cost: 0.0004
X-Credits-Remaining: 1249.31
{
"id": "chatcmpl-...",
"object": "chat.completion",
"model": "Qwen/Qwen3.6-27B-FP8",
"choices": [{ "index": 0, "message": { "role": "assistant", "content": "Hola, ¿en qué puedo ayudarte?" }, "finish_reason": "stop" }],
"usage": { "prompt_tokens": 9, "completion_tokens": 11, "total_tokens": 20 }
}

Un error usa la envoltura de OpenAI con request_id:

{ "error": { "type": "rate_limit_error", "code": "rate_limit_exceeded", "message": "Token limit exceeded, resets in 42s", "request_id": "req_01J9X4M2K7" } }

Modelos

Método y rutaDescripción
GET /v1/modelsModelos disponibles para la llave.
GET /v1/models/{name}Detalle: type, provider, capabilities, context_window, max_output_tokens, pricing (input, output, unit, currency) y deprecation (deprecated_at, retires_at). Con un alias, cabecera X-Alias-Of.
GET /v1/models/aliasesAlias públicos y el modelo al que apuntan.

Cuenta y llaves

Método y rutaDescripción
GET /v1/meorg, user, membership, plan (con is_billing_exempt y has_rate_limits) y api_key con la que llamaste.
GET /v1/me/orgsOrganizaciones a las que perteneces.
GET /v1/me/api-keysLlaves del usuario (sin el secreto).
POST /v1/me/api-keysCrear una llave. El secreto se muestra una sola vez.
POST /v1/me/api-keys/{id}/rotateRotar: nueva llave, la anterior deja de valer.
DELETE /v1/me/api-keys/{id}Revocar.

Consumo

Método y rutaDescripción
GET /v1/billing/balancecredits_remaining, initial_credits, spending_caps, usage_this_month, last_event; is_billing_exempt indica si el plan descuenta créditos.
GET /v1/billing/usage?period=AAAA-MMtotal_requests, total_tokens_in, total_tokens_out, total_cost, by_model, by_api_key, daily_breakdown (y by_user para administradores).
GET /v1/billing/transactionsMovimientos de créditos.

Cabeceras de respuesta

X-Request-Id, X-RateLimit-Limit-Requests, X-RateLimit-Remaining-Requests, X-RateLimit-Reset-Requests, X-RateLimit-Limit-Tokens, X-RateLimit-Remaining-Tokens, X-RateLimit-Reset-Tokens, X-Request-Cost, X-Credits-Remaining, X-Credits-Warning, X-Model-Deprecated, X-Model-Retires-At, X-Alias-Of, X-Saptiva-Passthrough, X-Saptiva-Model-Defaults; en un 429, además Retry-After. En respuestas en streaming las cabeceras de tokens no se envían (el conteo ocurre después de emitir la cabecera). Significado en InferNode.

Errores

Envoltura OpenAI ampliada: {"error": {"type", "code", "message", "param", "request_id", "details"}}. code lleva el módulo como prefijo cuando aplica (identity.invalid_token, identity.org_suspended) o es plano (model_not_found, rate_limit_exceeded, insufficient_credits, parameter_not_supported). Tipos: invalid_request_error, authentication_error, permission_error, not_found_error, billing_error, rate_limit_error, provider_error, maintenance_error, internal_error. Un 429 trae details.dimension (rpm, rpd, tpm, tpd, ipm). Detalle en Códigos de error.

Las operaciones de administración de la plataforma (alta de modelos, límites por Cliente, créditos, auditoría) están bajo /v1/admin/* y /v1/billing/admin/*, reservadas al operador.