API de Teinor
Teinor es un gateway de modelos de IA compatible con los SDKs de Anthropic, OpenAI y más. Con una sola API key accedes a los modelos de varios proveedores, con el mismo formato de peticiones y respuestas.
Inicio rápido
- Crea tu cuenta y recarga saldo. La recarga mínima es de $3 en USDC o USDT y se acredita automáticamente al confirmarse en la blockchain. Crear cuenta
- Genera una API key desde tu panel, en la sección API Keys. Guárdala: solo se muestra una vez.
- Instala el SDK de tu lenguaje (por ejemplo, el cliente compatible con Chat Completions) y configura la URL base de Teinor.
from openai import OpenAI
# Solo cambia la URL base y la API key
client = OpenAI(
base_url="https://openrouterperu.teinor.dev/api/v1",
api_key="TEINOR_API_KEY",
)
respuesta = client.chat.completions.create(
model="openai/gpt-oss-20b",
messages=[{"role": "user", "content": "Explica qué es un LLM en una frase."}],
)
print(respuesta.choices[0].message.content)
Autenticación
Envía tu API key en el encabezado Authorization de cada petición. Los SDKs compatibles lo hacen por ti con el parámetro api_key.
Authorization: Bearer TEINOR_API_KEYChat Completions
Genera una respuesta del modelo a partir de una conversación. Usa el formato estándar de Chat Completions, el mismo para todos los modelos del catálogo.
Parámetros del cuerpo
| Parámetro | Descripción |
|---|---|
| modelstringrequerido | ID del modelo, por ejemplo openai/gpt-oss-20b. Consulta los IDs en el catálogo. |
| messagesarrayrequerido | Lista de mensajes con role (system, user o assistant) y content. |
| temperaturenumber | De 0 a 2. Valores bajos dan respuestas más precisas; altos, más creativas. |
| max_tokensinteger | Máximo de tokens a generar. Úsalo para acotar el costo de cada respuesta. |
| streamboolean | Si es true, la respuesta llega por partes (ver Streaming). |
Respuesta
{ "id": "chatcmpl-9f2c…", "object": "chat.completion", "created": 1789580490, "model": "openai/gpt-oss-20b", "choices": [ { "index": 0, "message": { "role": "assistant", "content": "Un LLM es un modelo de lenguaje…" }, "finish_reason": "stop" } ], "usage": { "prompt_tokens": 18, "completion_tokens": 42, "total_tokens": 60 } }
usage: tokens de entrada y de salida multiplicados por el precio del modelo, y se descuenta de tu saldo al terminar la petición.Streaming
Con "stream": true recibes eventos Server-Sent Events a medida que el modelo genera texto. Cada evento trae un fragmento en choices[0].delta.content y el flujo termina con [DONE].
stream = client.chat.completions.create( model="openai/gpt-oss-20b", messages=[{"role": "user", "content": "Escribe un haiku sobre APIs"}], stream=True, ) for chunk in stream: print(chunk.choices[0].delta.content or "", end="", flush=True)
data: {"id":"chatcmpl-…","object":"chat.completion.chunk","choices":[{"index":0,"delta":{"content":"Datos"},"finish_reason":null}]} data: {"id":"chatcmpl-…","object":"chat.completion.chunk","choices":[{"index":0,"delta":{},"finish_reason":"stop"}]} data: [DONE]
Listar modelos
Devuelve los modelos activos con su proveedor, contexto y precio por millón de tokens. No requiere API key.
{ "object": "list", "data": [ { "id": "openai/gpt-oss-20b", "object": "model", "owned_by": "groq", "name": "GPT OSS 20B", "context_length": 131072, "pricing": { "input_per_1m_usd": 0.076, "output_per_1m_usd": 0.3 } } ] }
También puedes explorar y buscar todos los modelos en el catálogo de la página principal.
Errores
Los errores responden con un código HTTP y un cuerpo JSON con el detalle en message.
| Código | Significado y qué hacer |
|---|---|
| 400 | La petición no es válida: falta un campo o tiene un tipo incorrecto. Revisa el cuerpo enviado. |
| 402 | Saldo insuficiente. Recarga desde tu panel para continuar. |
| 404 | La API key no existe o está pausada, o el modelo solicitado no está disponible. |
| 503 | El proveedor del modelo no está disponible en este momento. Reintenta o usa otro modelo. |
| 500 | Error inesperado. Reintenta con espera progresiva; si persiste, contáctanos. |
{ "success": false, "error": "insufficient_balance", "message": "Tu saldo es $0.00. Recarga crédito para continuar usando la API." }
Saldo y límites
Cada petición descuenta su costo exacto de tu saldo. Antes de llamar al proveedor se comprueba que tengas saldo disponible, así nunca se procesa una petición que no puedas pagar.
Desde tu panel puedes crear varias llaves, una por aplicación, y pausarlas o revocarlas cuando quieras. Te recomendamos usar max_tokens para acotar el costo máximo de cada respuesta.