Documentation de l’API

Accès unifié à des modèles d'IA de classe mondiale. API compatible avec OpenAI — une seule clé pour tous les models.

URL de base de l'API

https://tokenhub.store/api/v1

Toutes les requêtes API utilisent cette URL de base. Entièrement compatible avec les SDK OpenAI.

Démarrage rapide

Commencez en quelques minutes

  1. Créez un compte et connectez-vous à votre tableau de bord
  2. Rendez-vous dans API Keys et créez une nouvelle clé d'API
  3. Visitez Facturation pour ajouter des Credits à votre compte
  4. Commencez à effectuer des appels API avec n'importe quel model pris en charge

Models pris en charge

Cliquez sur un fournisseur pour voir les models disponibles et les exemples de code.

OpenAI

10 modeles

Entreprise de recherche en IA de premier plan, créatrice de la série GPT. Réputée pour ses models de langage à la pointe de la technologie, avec d'excellentes capacités de raisonnement et de programmation.

Anthropic

8 modeles

Entreprise de sécurité en IA connue pour les models Claude. Excellente pour les conversations nuancées, le code et le raisonnement complexe, avec de solides fonctionnalités de sécurité.

Google

9 modeles

La famille Gemini de Google offre des capacités multimodales de pointe avec des fenêtres de contexte de référence allant jusqu'à 2M de Tokens.

xAI

3 modeles

Entreprise d'IA d'Elon Musk. Les models Grok sont connus pour leurs connaissances en temps réel, leurs réponses pleines d'esprit et leur excellente assistance au code.

Alibaba (Qwen)

3 modeles

La série Qwen d'Alibaba propose des model puissants multilingues, avec d'excellentes performances pour les tâches en anglais comme en chinois.

Zhipu AI (GLM)

3 modeles

La série GLM de Zhipu AI. Des model bilingues chinois-anglais avancés avec une fenêtre de contexte allant jusqu'à 200K.

MiniMax

2 modeles

La série M2 de MiniMax. Contexte ultra long de 205K avec de solides capacités multilingues.

Xiaomi (MiMo)

2 modeles

Les model MiMo V2 de Xiaomi. Grandes fenêtres de contexte jusqu'à 1M Tokens.

Alibaba (Qwen3)

3 modeles

La série Qwen3 d'Alibaba. D'énormes model MoE avec spécialisations vision-langage et code.

Moonshot AI (Kimi)

2 modeles

La série Kimi K2 de Moonshot AI. Raisonnement robuste avec fenêtres de contexte étendues.

DeepSeek

6 modeles

Les derniers model de DeepSeek. Très rentables avec de fortes capacités de raisonnement et de code.

ByteDance (Seedance)

2 modeles

Les model de génération vidéo Seedance de ByteDance. Texte-vers-vidéo, image-vers-vidéo de qualité cinéma, et édition vidéo multimodale avec prise en charge de l'audio.

ByteDance (Seedream)

2 modeles

Les model de génération d'images Seedream de ByteDance. Texte-vers-image de haute qualité avec styles photoréalistes et artistiques.

Kwaivgi (Kling)

2 modeles

Les model de génération vidéo Kling de Kwaivgi. Texte-vers-vidéo et image-vers-vidéo de haute qualité avec modes std/pro. Durées de 3 à 15 s. std : $0.168/s, pro : $0.224/s (sans 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 et facturation de Responses API

Pour POST /v1/responses, response.completed indique une réponse terminée. Fermer la connexion après cet événement ne transforme pas la réussite en annulation.

Les nombres de tokens fournis en amont, y compris zéro, priment sur les estimations. Seules les valeurs manquantes sont estimées. Une annulation avant la fin peut entraîner la facturation des tokens déjà traités.

Points de terminaison API

POST /chat/completions

Créer une complétion de chat avec prise en charge du streaming

En-têtes

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

Corps de la requête

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

Transmettre une requête OpenAI Responses native avec relais JSON et SSE

En-têtes

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

Corps de la requête

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

Générer une vidéo à partir d'une requête texte ou image (model Seedance et Wan 2.2)

En-têtes

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

Corps de la requête

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

Corps de la requête (tableau content — first_frame et 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"
}

Paramètres

content (facultatif) : tableau d'éléments multimédias. Chaque élément contient :

  • type : "image_url"
  • image_url.url : URL de l'image
  • role : <firstFrame/> (max 1), <lastFrame/> (max 1), <refImage/>, <refVideo/>, <refAudio/>

GET /videos/generations/{id}

Interrogez le statut d'une tâche de génération de vidéo

En-têtes

headers
Authorization: Bearer th-your-api-key

Réponse

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

Générer des images à partir de prompts textuels (modèles Seedream)

En-têtes

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

Corps de la requête

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

GET /models

Lister tous les modèles disponibles

Consultez les modèles et les tarifs publiés. Ces pages se mettent à jour automatiquement.

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.

Recherchez les clés API par nom ou préfixe et parcourez 20 clés par page. Les nouvelles clés apparaissent sur la première page. Actualisez la liste pour voir les clés créées dans une autre fenêtre ou via l’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.

Exemples de code

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);

Exemple 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="")

Besoin d'aide ?

Contactez-nous : support@tokenhub.store