API-Dokumentation

Einheitlicher Zugriff auf erstklassige AI-Modelle. OpenAI-compatible API — ein Schlüssel für alle Modelle.

API-Basis-URL

https://tokenhub.store/api/v1

Alle API-Anfragen verwenden diese Basis-URL. Vollständig kompatibel mit OpenAI SDKs.

Schnellstart

In wenigen Minuten starten

  1. Ein Konto erstellen und sich im Dashboard anmelden
  2. Gehen Sie zu API Keys und erstellen Sie einen neuen API key
  3. Besuchen Sie Abrechnung um Credits zu Ihrem Konto hinzuzufügen
  4. Beginnen Sie mit API-Aufrufen mit jedem unterstützten model

Unterstützte Modelle

Klicken Sie auf einen Anbieter, um verfügbare Modelle und Code-Beispiele anzuzeigen.

OpenAI

10 Modelle

Führendes AI-Forschungsunternehmen, Entwickler der GPT-Serie. Bekannt für modernste Sprachmodelle mit außergewöhnlichen Fähigkeiten in Reasoning und Code.

Anthropic

8 Modelle

AI-Sicherheitsunternehmen, bekannt für Claude-Modelle. Hervorragend in nuancierten Gesprächen, Code und komplexem Reasoning mit starken Sicherheitsfunktionen.

Google

9 Modelle

Die Gemini-Familie von Google bietet modernste multimodale Fähigkeiten mit branchenführenden Kontextfenstern von bis zu 2M Tokens.

xAI

3 Modelle

AI-Unternehmen von Elon Musk. Grok-Modelle sind bekannt für Echtzeitwissen, witzige Antworten und hervorragende Unterstützung beim Programmieren.

Alibaba (Qwen)

3 Modelle

Alibabas Qwen-Serie bietet leistungsstarke mehrsprachige Modelle mit starker Performance bei englischen und chinesischen Aufgaben.

Zhipu AI (GLM)

3 Modelle

GLM-Serie von Zhipu AI. Fortschrittliche zweisprachige Chinesisch-Englisch-Modelle mit bis zu 200K Kontextfenster.

MiniMax

2 Modelle

M2-Serie von MiniMax. Ultralanger 205K Kontext mit starken mehrsprachigen Fähigkeiten.

Xiaomi (MiMo)

2 Modelle

MiMo V2-Modelle von Xiaomi. Große Kontextfenster mit bis zu 1M Tokens.

Alibaba (Qwen3)

3 Modelle

Qwen3-Serie von Alibaba. Massive MoE-Modelle mit Spezialisierungen für Vision-Language und Coding.

Moonshot AI (Kimi)

2 Modelle

Kimi K2-Serie von Moonshot AI. Starkes Reasoning mit erweiterten Kontextfenstern.

DeepSeek

6 Modelle

Die neuesten Modelle von DeepSeek. Hoch kosteneffizient mit starken Reasoning- und Coding-Fähigkeiten.

ByteDance (Seedance)

2 Modelle

Seedance-Video-Generierungsmodelle von ByteDance. Text-to-Video in Kinoqualität, Image-to-Video und multimodale Videobearbeitung mit Audio-Unterstützung.

ByteDance (Seedream)

2 Modelle

Seedream-Bildgenerierungsmodelle von ByteDance. Hochwertiges Text-to-Image mit fotorealistischen und künstlerischen Stilen.

Kwaivgi (Kling)

2 Modelle

Kling-Video-Generierungsmodelle von Kwaivgi. Hochwertiges Text-to-Video und Image-to-Video mit std/pro-Modi. Dauer 3–15s. std: $0.168/s, pro: $0.224/s (ohne 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.

Responses API: Streaming und Abrechnung

Bei POST /v1/responses kennzeichnet response.completed eine abgeschlossene Antwort. Das anschließende Schließen der Verbindung macht daraus keinen abgebrochenen Auftrag.

Gemeldete Tokenzahlen, einschließlich null, haben Vorrang vor Schätzungen. Nur fehlende Werte werden geschätzt. Bei einem vorzeitigen Abbruch können bereits verarbeitete Tokens berechnet werden.

API-Endpunkte

POST /chat/completions

Eine Chat-Antwort mit Streaming-Unterstützung erstellen

Header

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

Anfrage-Body

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

Eine native OpenAI-Responses-Anfrage mit JSON- und SSE-Durchleitung weiterleiten

Header

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

Anfrage-Body

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

Ein Video aus Text- oder Bild-Prompt generieren (Seedance- & Wan 2.2-Modelle)

Header

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

Anfrage-Body

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

Anfrage-Body (content-Array — 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"
}

Parameter

content (optional): Array von Medien-Assets. Jedes Element hat:

  • type: "image_url"
  • image_url.url: URL des Bildes
  • role: <firstFrame/> (max. 1), <lastFrame/> (max. 1), <refImage/>, <refVideo/>, <refAudio/>

GET /videos/generations/{id}

Den Status einer Video-Generierungsaufgabe abfragen

Header

headers
Authorization: Bearer th-your-api-key

Antwort

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

Bilder aus Texteingaben generieren (Seedream-Modelle)

Header

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

Anforderungstext

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

GET /models

Alle verfügbaren model auflisten

Aktuell veröffentlichte Modelle und Preise finden Sie unter Modelle und Preise. Diese Seiten werden automatisch aktualisiert.

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.

Suchen Sie API-Schlüssel nach Name oder Präfix und blättern Sie durch 20 Schlüssel pro Seite. Neue Schlüssel erscheinen auf der ersten Seite. Aktualisieren Sie die Liste, um Schlüssel aus anderen Fenstern oder der API anzuzeigen. 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.

Code-Beispiele

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

Streaming-Beispiel (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="")

Brauchen Sie Hilfe?

Kontaktieren Sie uns: support@tokenhub.store