Dokumentasi API

Akses terpadu ke model AI kelas dunia. API kompatibel dengan OpenAI — satu API Key untuk semua model.

URL Dasar API

https://tokenhub.store/api/v1

Semua permintaan API menggunakan URL dasar ini. Sepenuhnya kompatibel dengan SDK OpenAI.

Mulai Cepat

Mulai dalam Hitungan Menit

  1. Buat akun dan masuk ke Dashboard Anda
  2. Buka API Keys dan buat API key baru
  3. Kunjungi Tagihan untuk menambahkan Credits ke akun Anda
  4. Mulai melakukan panggilan API dengan model yang didukung

Model yang Didukung

Klik provider untuk melihat model yang tersedia dan contoh kode.

OpenAI

10 model

Perusahaan riset AI terkemuka, pembuat seri GPT. Dikenal dengan model bahasa mutakhir yang memiliki kemampuan penalaran dan coding yang luar biasa.

Anthropic

8 model

Perusahaan keselamatan AI yang dikenal dengan model Claude. Unggul dalam percakapan bernuansa, coding, dan penalaran kompleks dengan fitur keamanan yang kuat.

Google

9 model

Keluarga Gemini dari Google menawarkan kemampuan multimodal mutakhir dengan jendela konteks terdepan di industri hingga 2M tokens.

xAI

3 model

Perusahaan AI milik Elon Musk. model Grok dikenal dengan pengetahuan real-time, respons jenaka, dan bantuan coding yang sangat baik.

Alibaba (Qwen)

3 model

Seri Qwen dari Alibaba menawarkan model multibahasa yang kuat dengan performa tinggi untuk tugas bahasa Inggris dan Mandarin.

Zhipu AI (GLM)

3 model

Seri GLM dari Zhipu AI. Model bilingual Mandarin-Inggris canggih dengan context window hingga 200K.

MiniMax

2 model

Seri M2 dari MiniMax. Context ultra-panjang 205K dengan kemampuan multibahasa yang kuat.

Xiaomi (MiMo)

2 model

Model MiMo V2 dari Xiaomi. Context window besar hingga 1M Tokens.

Alibaba (Qwen3)

3 model

Seri Qwen3 dari Alibaba. Model MoE masif dengan spesialisasi vision-language dan coding.

Moonshot AI (Kimi)

2 model

Seri Kimi K2 dari Moonshot AI. Penalaran kuat dengan context window yang diperluas.

DeepSeek

6 model

Model terbaru DeepSeek. Sangat hemat biaya dengan kemampuan penalaran dan coding yang kuat.

ByteDance (Seedance)

2 model

Model generasi video Seedance dari ByteDance. Text-to-video berkualitas sinema, image-to-video, dan pengeditan video multimodal dengan dukungan audio.

ByteDance (Seedream)

2 model

Model generasi gambar Seedream dari ByteDance. Text-to-image berkualitas tinggi dengan gaya fotorealistik dan artistik.

Kwaivgi (Kling)

2 model

Model generasi video Kling dari Kwaivgi. Text-to-video dan image-to-video berkualitas tinggi dengan mode std/pro. Durasi 3–15 detik. std: $0.168/s, pro: $0.224/s (tanpa 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 dan penagihan Responses API

Untuk POST /v1/responses, response.completed menandakan respons selesai. Menutup koneksi setelah peristiwa ini tidak mengubah permintaan yang berhasil menjadi dibatalkan.

Jumlah token dari penyedia, termasuk nol, diutamakan daripada perkiraan. Hanya nilai yang tidak tersedia yang diperkirakan. Pembatalan sebelum selesai tetap dapat dikenai biaya untuk token yang telah diproses.

Endpoint API

POST /chat/completions

Buat chat completion dengan dukungan streaming

Header

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

Body Permintaan

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

Teruskan permintaan OpenAI Responses native dengan passthrough JSON dan SSE

Header

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

Body Permintaan

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

Hasilkan video dari prompt teks atau gambar (model Seedance & Wan 2.2)

Header

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

Body Permintaan

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

Body Permintaan (array konten — 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 (opsional): Array aset media. Setiap item memiliki:

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

GET /videos/generations/{id}

Memantau status tugas pembuatan video

Header

headers
Authorization: Bearer th-your-api-key

Respons

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

Membuat gambar dari prompt teks (model Seedream)

Header

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

Body Permintaan

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

GET /models

Daftar semua model yang tersedia

Lihat model yang dipublikasikan dan tarif terkini di Daftar Model dan Harga. Halaman ini diperbarui secara otomatis.

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.

Cari API key berdasarkan nama atau awalan dan telusuri 20 key per halaman. Key baru muncul di halaman pertama. Muat ulang daftar untuk melihat key yang dibuat di jendela lain atau melalui 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.

Contoh Kode

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

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

Perlu Bantuan?