Documentación de API

Acceso unificado a modelos de IA de clase mundial. API compatible con OpenAI — una clave para todos los model.

URL base de la API

https://tokenhub.store/api/v1

Todas las solicitudes de la API usan esta URL base. Totalmente compatible con los SDK de OpenAI.

Inicio rápido

Empieza en minutos

  1. Crea una cuenta e inicia sesión en tu Dashboard
  2. Ve a API Keys y crea una nueva API key
  3. Visita Facturación para añadir Credits a tu cuenta
  4. Empieza a hacer llamadas a la API con cualquier model compatible

Modelos compatibles

Haz clic en un proveedor para ver los modelos disponibles y ejemplos de código.

OpenAI

10 model

Empresa líder en investigación de IA, creadora de la serie GPT. Conocida por sus model de lenguaje de última generación con capacidades excepcionales de razonamiento y programación.

Anthropic

8 model

Empresa de seguridad en IA conocida por los modelos Claude. Destacan en conversaciones matizadas, código y razonamiento complejo, con sólidas funciones de seguridad.

Google

9 model

La familia Gemini de Google ofrece capacidades multimodales de vanguardia con ventanas de contexto líderes en la industria de hasta 2M tokens.

xAI

3 model

La empresa de IA de Elon Musk. Los modelos Grok son conocidos por su conocimiento en tiempo real, respuestas ingeniosas y excelente ayuda para programar.

Alibaba (Qwen)

3 model

La serie Qwen de Alibaba ofrece modelos multilingües potentes con un rendimiento sólido tanto en tareas en inglés como en chino.

Zhipu AI (GLM)

3 model

La serie GLM de Zhipu AI. Modelos bilingües avanzados chino-inglés con ventana de contexto de hasta 200K.

MiniMax

2 model

La serie M2 de MiniMax. Contexto ultralargo de 205K con sólidas capacidades multilingües.

Xiaomi (MiMo)

2 model

Los modelos MiMo V2 de Xiaomi. Ventanas de contexto grandes de hasta 1M tokens.

Alibaba (Qwen3)

3 model

La serie Qwen3 de Alibaba. Modelos MoE masivos con especializaciones en visión-lenguaje y programación.

Moonshot AI (Kimi)

2 model

La serie Kimi K2 de Moonshot AI. Razonamiento sólido con ventanas de contexto ampliadas.

DeepSeek

6 model

Los últimos modelos de DeepSeek. Muy rentables con sólidas capacidades de razonamiento y programación.

ByteDance (Seedance)

2 model

Modelos de generación de video Seedance de ByteDance. Texto a video, imagen a video y edición de video multimodal con soporte de audio, con calidad cinematográfica.

ByteDance (Seedream)

2 model

Modelos de generación de imágenes Seedream de ByteDance. Texto a imagen de alta calidad con estilos fotorrealistas y artísticos.

Kwaivgi (Kling)

2 model

Modelos de generación de video Kling de Kwaivgi. Texto a video e imagen a video de alta calidad con modos std/pro. Duración de 3 a 15 s. std: $0.168/s, pro: $0.224/s (sin audio).

Gemini API

Gemini 3.5–3.8 Flash and Gemini 4 Argon use /chat/completions. For Argon, use model ID google/gemini-4-argon. GET /models lists published models. For an unlisted model configured by your account administrator, use the exact model ID they provide with the same endpoint.

curl "https://tokenhub.store/api/v1/chat/completions" \
  -H "Authorization: Bearer th-your-api-key" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "google/gemini-3.8-flash",
    "messages": [{"role": "user", "content": "Hello"}],
    "reasoning_effort": "low",
    "max_tokens": 1024,
    "stream": true
  }'

Supports streaming, system instructions, function calling, and base64 image data URLs. reasoning_effort accepts low, medium, or high; max_tokens includes thinking tokens.

For multi-turn tools, keep the complete assistant message, including tool_calls.extra_content or content_blocks, so thought signatures are preserved. Native Gemini endpoints are not exposed by TokenHub.

Gemini Flash and Argon output usage includes thinking tokens. Cached input is counted at the configured cache-read rate when available. See the model catalog for current prices; confirm rates for unlisted models with your account administrator.

Streaming y facturación de Responses API

En POST /v1/responses, response.completed indica que la respuesta ha finalizado. Cerrar la conexión después de este evento no convierte una solicitud exitosa en cancelada.

Los tokens comunicados por el proveedor, incluido cero, tienen prioridad sobre las estimaciones. Solo se estiman los valores ausentes. Cancelar antes de finalizar puede generar cargos por los tokens ya procesados.

Endpoints de API

POST /chat/completions

Crear una completación de chat con soporte de streaming

Encabezados

headers
Authorization: Bearer th-your-api-key
Content-Type: application/json

Cuerpo de la solicitud

json
{
  "model": "openai/gpt-4.1",
  "messages": [
    {"role": "system", "content": "You are a helpful assistant."},
    {"role": "user", "content": "Hello!"}
  ],
  "temperature": 0.7,
  "max_tokens": 1000,
  "stream": false
}

POST /responses

Reenviar una solicitud nativa de OpenAI Responses con transferencia JSON y SSE

Encabezados

headers
Authorization: Bearer th-your-api-key
Content-Type: application/json

Cuerpo de la solicitud

json
{
  "model": "openai/gpt-5.6-terra",
  "input": "Explain why the sky is blue in one sentence.",
  "reasoning": { "effort": "medium" },
  "max_output_tokens": 256,
  "stream": false
}

POST /videos/generations

Generar un video a partir de texto o de una imagen prompt (modelos Seedance y Wan 2.2)

Encabezados

headers
Authorization: Bearer th-your-api-key
Content-Type: application/json

Cuerpo de la solicitud

json
{
  "model": "bytedance/doubao-seedance-2.0",
  "prompt": "A golden retriever running on a sunny beach",
  "duration": 5,
  "resolution": "720p",
  "aspect_ratio": "16:9"
}

Cuerpo de la solicitud (array de contenido — first_frame & last_frame)

json
{
  "model": "bytedance/doubao-seedance-2.0",
  "prompt": "Hand picks a fresh apple from the tree, the scene smoothly transitions to a hand holding an apple smoothie drink, cinematic lighting in an orchard",
  "content": [
    {
      "type": "image_url",
      "image_url": { "url": "https://ark-project.tos-cn-beijing.volces.com/doc_image/r2v_tea_pic1.jpg" },
      "role": "first_frame"
    },
    {
      "type": "image_url",
      "image_url": { "url": "https://ark-project.tos-cn-beijing.volces.com/doc_image/r2v_tea_pic2.jpg" },
      "role": "last_frame"
    }
  ],
  "duration": 5,
  "resolution": "720p"
}

Parámetros

content (opcional): Array de recursos multimedia. Cada elemento tiene:

  • tipo: "image_url"
  • image_url.url: URL de la imagen
  • role: <firstFrame/> (máx. 1), <lastFrame/> (máx. 1), <refImage/>, <refVideo/>, <refAudio/>

GET /videos/generations/{id}

Consulta el estado de una tarea de generación de video

Encabezados

headers
Authorization: Bearer th-your-api-key

Respuesta

json
{
  "id": "tsk-xxx",
  "object": "video.generation.task",
  "model": "bytedance/doubao-seedance-2.0",
  "status": "succeeded",  // "queued" | "running" | "succeeded" | "failed"
  "data": [
    {
      "video_url": "https://..."
    }
  ]
}

POST /images/generations

Genera imágenes a partir de prompts de texto (modelos Seedream)

Encabezados

headers
Authorization: Bearer th-your-api-key
Content-Type: application/json

Cuerpo de la solicitud

json
{
  "model": "bytedance/doubao-seedream-5.0",
  "prompt": "A serene mountain landscape at sunset",
  "n": 1,
  "size": "2048x2048"
}

GET /models

Lista todos los model disponibles

Consulta los modelos y precios publicados. Estas páginas se actualizan automáticamente.

Account management API

Generate an access token in Settings → Account information. Send Authorization: Bearer YOUR_ACCESS_TOKEN and TokenHub-User: YOUR_USER_ID. New-Api-User is also accepted; if both user headers are supplied, they must match. Open settings

Access tokens manage your account. Continue using th- API keys for model requests.

HTTPEndpointDescription
GET/api/balanceAccount credit balance (1 credit = 1 USD)
GET / POST/api/keysList keys or create a key
GET / PATCH / DELETE/api/keys/{id}Get a key, edit its name/status/budget, or delete it
GET/api/keys/{id}/discountsRead the effective discounts for your key
GET / PATCH/api/user/profileRead account details or update your name
GET/api/usageRequest details and usage totals, filterable by key, model, and time
GET/api/v1/billing/usageRequest details and usage totals, filterable by key, model, and time
GET/api/v1/billing/spendingAccount spending trends
GET/api/v1/billing/invoicesList invoices
GET / POST/api/v1/billing/budgetRead or configure account budgets
export TOKENHUB_ACCESS_TOKEN="YOUR_ACCESS_TOKEN"
export TOKENHUB_USER_ID="YOUR_USER_ID"

curl "https://tokenhub.store/api/balance" \
  -H "Authorization: Bearer $TOKENHUB_ACCESS_TOKEN" \
  -H "TokenHub-User: $TOKENHUB_USER_ID"

curl "https://tokenhub.store/api/keys" \
  -H "Authorization: Bearer $TOKENHUB_ACCESS_TOKEN" \
  -H "TokenHub-User: $TOKENHUB_USER_ID" \
  -H "Content-Type: application/json" \
  -d '{"name":"My application","spendLimit":10}'

curl --get "https://tokenhub.store/api/v1/billing/usage" \
  -H "Authorization: Bearer $TOKENHUB_ACCESS_TOKEN" \
  -H "TokenHub-User: $TOKENHUB_USER_ID" \
  --data-urlencode "apiKeyId=YOUR_API_KEY_ID" \
  --data-urlencode "model=alibaba/qwen-turbo" \
  --data-urlencode "startDate=2026-09-07T00:00:00Z" \
  --data-urlencode "endDate=2026-09-08T00:00:00Z" \
  --data-urlencode "page=1" \
  --data-urlencode "limit=20"

Usage filters: apiKeyId is the ID returned by /api/keys, not the th- secret. model matches the full model ID exactly. Send startDate and endDate together as ISO timestamps with a timezone (inclusive boundaries). page defaults to 1; limit defaults to 20, maximum 100. Summary covers all matching records. Omit apiKeyId to query the account. An unknown key or a key owned by another account returns 404. API keys retain their existing account-wide billing access. /api/usage also accepts start_date/end_date, one-sided ranges, limit (default 100, maximum 1000), and offset (default 0).

Create: name=My application, spendLimit=10; omit spendLimit for the shared wallet. PATCH accepts name, isActive, and action (set_limit, add_budget, clear_limit, reset_spent); set_limit/add_budget also need a non-negative value. set_limit resets spent; add_budget preserves spent for an existing cap. GET /api/keys/:id returns the full model key. Deleting a key removes its UsageLog association; use isActive:false to retain usage filtering by key.

Busca claves API por nombre o prefijo y consulta 20 claves por página. Las nuevas claves aparecen en la primera página. Actualiza la lista para ver claves creadas en otra ventana o mediante la API. API Keys

One active access token per account. It remains valid until regenerated or revoked; the database stores only its hash. Token lifecycle endpoints GET/POST/DELETE /api/user/access-token require a browser login. Tokens cannot manage their own lifecycle or authorize admin, password, account-deletion, or model-generation endpoints. Invalid tokens or mismatched user IDs return 401. Existing browser-session authentication continues to work.

Ejemplos de código

cURL

bash
curl https://tokenhub.store/api/v1/chat/completions \
  -H "Authorization: Bearer th-your-api-key" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "openai/gpt-4.1",
    "messages": [{"role": "user", "content": "Hello!"}]
  }'

Python (OpenAI SDK)

python
from openai import OpenAI

client = OpenAI(
    api_key="th-your-api-key",
    base_url="https://tokenhub.store/api/v1"
)

# Use any supported model
response = client.chat.completions.create(
    model="openai/gpt-5.4",  # Or any other model
    messages=[{"role": "user", "content": "Hello!"}]
)

print(response.choices[0].message.content)

JavaScript / TypeScript

typescript
import OpenAI from 'openai';

const client = new OpenAI({
  apiKey: 'th-your-api-key',
  baseURL: 'https://tokenhub.store/api/v1',
});

// Use any supported model
const response = await client.chat.completions.create({
  model: 'anthropic/claude-sonnet-4-6',
  messages: [{ role: 'user', content: 'Hello!' }],
});

console.log(response.choices[0].message.content);

Ejemplo de streaming (Python)

python
from openai import OpenAI

client = OpenAI(
    api_key="th-your-api-key",
    base_url="https://tokenhub.store/api/v1"
)

stream = client.chat.completions.create(
    model="google/gemini-2.5-pro",
    messages=[{"role": "user", "content": "Write a short story."}],
    stream=True
)

for chunk in stream:
    if chunk.choices[0].delta.content:
        print(chunk.choices[0].delta.content, end="")

¿Necesitas ayuda?