Hostlinku

Hostlinku Docs

Dokumentasi

Menu

API Reference

Referensi ringkas satu halaman — rate limit, Anthropic Messages API, OpenAI Chat Completions, kode error, dan daftar model

Base URL: https://api.hostlinku.com. Semua endpoint gateway berada di bawah /v1 dan menerima API key Hostlinku (sk-…) lewat header Authorization: Bearer atau x-api-key.

Rate Limiting

Untuk menjaga kualitas layanan bagi semua pengguna, gateway memberlakukan batas berikut per API key:

Limit TypeQuotaDescription
RPM (Requests/Minute)600 req/minPer API key, dibagi untuk semua model
RPD (Requests/Day)Tidak dibatasiDibatasi saldo akun & limit kredit per API key
TPM (Tokens/Minute)Tidak dibatasimax_tokens wajib ≤ batas output model (ditolak 400 bila melebihi)

Detail rate limit:

  • Jendela 60 detik per API key; request dari semua model dihitung bersama.
  • Request yang ditolak limiter tidak menyentuh saldo (tidak ada reservasi kredit).
  • Endpoint konsol & publik (/api/*) dibatasi 120 req/min per IP; endpoint autentikasi 30 percobaan / 15 menit per IP.

Saat terkena limit:

  • Mengembalikan HTTP 429 Too Many Requests.
  • Header Retry-After berisi jumlah detik yang disarankan sebelum mencoba lagi.
  • Header RateLimit-Limit / RateLimit-Remaining / RateLimit-Reset (format IETF) menunjukkan kuota RPM saat ini.

Anthropic Messages API Format

POST /v1/messages

Panggil model dengan format native Anthropic. Header request harus memuat x-api-key: YOUR_API_KEY (atau Authorization: Bearer). Cocok untuk Anthropic SDK, Claude Code, Cursor, dan Cline — cukup set ANTHROPIC_BASE_URL=https://api.hostlinku.com. Dokumentasi lengkap: Anthropic Messages.

Request Body Parameters

ParameterTypeDescriptionRequired
modelstringSlug model Hostlinku, mis. claude-sonnet-4-6true
messagesarrayArray pesan percakapan (role: user | assistant)true
max_tokensintegerJumlah token output maksimumtrue
systemstring | arrayPrompt sistem (array blok mendukung cache_control)false
streambooleanStreaming SSE, default falsefalse
tools, tool_choice, thinking, temperature, top_p, top_k, stop_sequences, metadata—Sesuai spesifikasi Anthropicfalse

Example Request

curl --request POST \
  --url https://api.hostlinku.com/v1/messages \
  --header 'content-type: application/json' \
  --header 'x-api-key: YOUR_API_KEY' \
  --header 'anthropic-version: 2023-06-01' \
  --data '{
    "model": "claude-sonnet-4-6",
    "max_tokens": 1024,
    "system": "You are a professional coding assistant",
    "messages": [
      { "role": "user", "content": "Write a quicksort in Python" }
    ]
  }'

Response Example

{
  "id": "msg_mv5ujf05qf6ayfbx",
  "type": "message",
  "role": "assistant",
  "model": "claude-sonnet-4-6",
  "content": [
    { "type": "text", "text": "def quicksort(arr):\n    if len(arr) <= 1:\n        return arr\n    ..." }
  ],
  "stop_reason": "end_turn",
  "stop_sequence": null,
  "usage": {
    "input_tokens": 14,
    "output_tokens": 86,
    "cache_creation_input_tokens": 0,
    "cache_read_input_tokens": 0,
    "cache_creation": { "ephemeral_5m_input_tokens": 0, "ephemeral_1h_input_tokens": 0 }
  },
  "hostlinku": { "cost": 0.0013, "currency": "🪙", "serviceMode": "performance", "latencyMs": 2410 }
}

Streaming Output

curl -N --request POST \
  --url https://api.hostlinku.com/v1/messages \
  --header 'content-type: application/json' \
  --header 'x-api-key: YOUR_API_KEY' \
  --header 'accept: text/event-stream' \
  --data '{
    "model": "claude-sonnet-4-6",
    "max_tokens": 1024,
    "messages": [{ "role": "user", "content": [{ "type": "text", "text": "Hello" }] }],
    "stream": true
  }'

Respons dikirim per potongan dalam format SSE:

event: message_start
data: {"type":"message_start","message":{"id":"msg_…","type":"message","role":"assistant","model":"claude-sonnet-4-6","content":[],"stop_reason":null,"usage":{"input_tokens":10,"output_tokens":1}}}

event: content_block_delta
data: {"type":"content_block_delta","index":0,"delta":{"type":"text_delta","text":"Hello"}}

event: message_delta
data: {"type":"message_delta","delta":{"stop_reason":"end_turn","stop_sequence":null},"usage":{"input_tokens":10,"output_tokens":5}}

event: message_stop
data: {"type":"message_stop"}

OpenAI Protocol (Chat Completions API)

POST /v1/chat/completions

Panggil model apa pun dengan format OpenAI Chat Completions. Header request harus memuat Authorization: Bearer YOUR_API_KEY. SDK OpenAI cukup diarahkan ke base_url="https://api.hostlinku.com/v1". Dokumentasi lengkap: Chat Completions.

Request Body Parameters

ParameterTypeDescriptionRequired
modelstringSlug model Hostlinku, mis. gpt-5-5true
messagesarrayArray pesan percakapan (system | user | assistant | tool)true
max_tokensintegerJumlah token output maksimumfalse
streambooleanStreaming SSE, default falsefalse
temperature, top_p, tools, tool_choice, response_format, reasoning_effort, thinking—Sesuai spesifikasi OpenAI (+ ekstensi thinking)false

Example Request

curl https://api.hostlinku.com/v1/chat/completions \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer sk-YOUR_API_KEY" \
  -d '{
    "model": "gpt-5-5",
    "messages": [
      { "role": "user", "content": "Write a quicksort in Python" }
    ],
    "stream": false
  }'

Example Response

{
  "id": "cmpl_mv5strfqh3zktr",
  "object": "chat.completion",
  "created": 1770000000,
  "model": "gpt-5-5",
  "choices": [
    {
      "index": 0,
      "message": { "role": "assistant", "content": "def quicksort(arr):\n    if len(arr) <= 1:\n        return arr\n    ..." },
      "finish_reason": "stop"
    }
  ],
  "usage": { "prompt_tokens": 12, "completion_tokens": 86, "total_tokens": 98 },
  "hostlinku": { "cost": 0.0009, "currency": "🪙", "serviceMode": "performance", "latencyMs": 1890 }
}

Streaming Output

curl -N https://api.hostlinku.com/v1/chat/completions \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer sk-YOUR_API_KEY" \
  -d '{
    "model": "gpt-5-5",
    "messages": [{ "role": "user", "content": "Hello" }],
    "stream": true
  }'
data: {"id":"cmpl_…","object":"chat.completion.chunk","model":"gpt-5-5","choices":[{"index":0,"delta":{"role":"assistant","content":""}}]}

data: {"id":"cmpl_…","object":"chat.completion.chunk","model":"gpt-5-5","choices":[{"index":0,"delta":{"content":"Hello"}}]}

data: {"id":"cmpl_…","object":"chat.completion.chunk","model":"gpt-5-5","choices":[{"index":0,"delta":{},"finish_reason":"stop"}],"usage":{"prompt_tokens":5,"completion_tokens":12,"total_tokens":17}}

data: [DONE]

Error Codes

Envelope error mengikuti protokol endpoint yang dipanggil: /v1/chat/completions → { "status": "error", "error": { "code", "message" } }; /v1/messages → { "type": "error", "error": { "type", "message" } }.

HTTP Status CodeDescriptionExample Error Message
400Body tidak valid, max_tokens melebihi batas output model, atau model tidak tersedia di Service Mode API key.max_tokens (20000) melebihi batas output model 'claude-haiku-4-5' (16000).
401API key tidak dikirim, tidak valid, dicabut, atau kedaluwarsa.API key tidak valid atau sudah dicabut.
402Saldo tidak cukup untuk estimasi biaya request, atau limit kredit API key tercapai.Saldo tidak mencukupi.
403Akun ditangguhkan / akses ditolak.Kamu tidak punya akses ke resource ini.
404Slug model tidak ada di katalog.Model 'xxx' tidak ditemukan.
413Body request melebihi ukuran maksimum.Payload terlalu besar.
422Validasi body gagal (hanya /v1/chat/completions; /v1/messages memakai 400).Request body tidak valid.
429Rate limit terlampaui.Rate limit terlampaui. Tingkat plan untuk limit lebih tinggi.
503Model/upstream sedang tidak tersedia — aman untuk di-retry dengan backoff.Model sedang tidak tersedia. Coba lagi nanti.

Pesan error tidak pernah memuat identitas atau teks mentah provider upstream. Daftar kode lengkap format OpenAI ada di Error.

429 Response Headers

Response HeaderDescription
Retry-AfterWaktu tunggu yang disarankan sebelum mencoba lagi (detik)
RateLimit-LimitBatas RPM
RateLimit-RemainingSisa request pada jendela berjalan
RateLimit-ResetDetik sampai jendela berikutnya dimulai

Query Available Models

GET /v1/models

Mengembalikan model yang tersedia untuk Service Mode API key yang dipakai, beserta harga 🪙 per 1M token pada mode tersebut.

Example Request

curl --request GET \
  --url https://api.hostlinku.com/v1/models \
  --header 'Authorization: Bearer YOUR_API_KEY'

Response Example

{
  "object": "list",
  "service_mode": "performance",
  "data": [
    {
      "id": "claude-haiku-4-5",
      "object": "model",
      "created": 1760000000,
      "owned_by": "hostlinku",
      "context_window": 200000,
      "capabilities": ["chat", "tools", "vision"],
      "service_mode": "performance",
      "pricing": { "input": 0.8, "output": 4, "cache_read": 0.08, "cache_write": 1, "unit": "1M_tokens", "currency": "🪙" }
    },
    {
      "id": "claude-sonnet-4-6",
      "object": "model",
      "created": 1760000000,
      "owned_by": "hostlinku",
      "context_window": 200000,
      "capabilities": ["chat", "tools", "vision"],
      "service_mode": "performance",
      "pricing": { "input": 2.4, "output": 12, "cache_read": 0.24, "cache_write": 3, "unit": "1M_tokens", "currency": "🪙" }
    }
  ]
}