Dokumentasi API
Panduan lengkap menggunakan API key OpenHeimer di berbagai IDE dan tools. Compatible dengan OpenAI SDK, Anthropic SDK, dan semua tools yang mendukung format OpenAI.
Mulai Cepat
3 langkah untuk mulai menggunakan OpenHeimer API.
- 1Buat API Key di dashboard OpenHeimer.
- 2Pasang OpenAI SDK atau Anthropic SDK di project kamu.
- 3Ganti
base_urldanapi_key, langsung jalan.
from openai import OpenAI
client = OpenAI(
api_key="sk-oppenheimer-...",
base_url="https://api.openheimer.id/v1"
)
response = client.chat.completions.create(
model="claude-sonnet-5",
messages=[{"role": "user", "content": "Halo!"}]
)
print(response.choices[0].message.content)Base URL & Endpoint
Semua request dikirim ke base URL berikut:
https://api.openheimer.id| Endpoint | Method | Keterangan |
|---|---|---|
| /v1/chat/completions | POST | OpenAI Chat format |
| /v1/messages | POST | Anthropic Messages format |
| /v1/models | GET | Daftar model tersedia |
| /v1/images/generations | POST | Image generation |
Autentikasi
Sertakan API key di header Authorization setiap request.
Authorization: Bearer sk-oppenheimer-YOUR_API_KEYChat Completions
POST /v1/chat/completions
Compatible dengan OpenAI SDK. Tinggal ganti base URL dan API key.
{
"model": "claude-sonnet-5",
"messages": [
{ "role": "system", "content": "Kamu adalah asisten yang membantu." },
{ "role": "user", "content": "Jelaskan apa itu API?" }
],
"temperature": 0.7,
"max_tokens": 1024
}Messages (Anthropic)
POST /v1/messages
Format Anthropic SDK. Drop-in replacement — ganti base URL saja.
import anthropic
client = anthropic.Anthropic(
api_key="sk-oppenheimer-...",
base_url="https://api.openheimer.id"
)
message = client.messages.create(
model="claude-sonnet-5",
max_tokens=1024,
messages=[{"role": "user", "content": "Halo Claude!"}]
)
print(message.content[0].text)Streaming
Tambahkan "stream": true untuk mendapat response real-time via Server-Sent Events.
from openai import OpenAI
client = OpenAI(
api_key="sk-oppenheimer-...",
base_url="https://api.openheimer.id/v1"
)
with client.chat.completions.stream(
model="claude-sonnet-5",
messages=[{"role": "user", "content": "Ceritakan sejarah Indonesia."}]
) as stream:
for text in stream.text_stream:
print(text, end="", flush=True)Model Tersedia
37+ model dari berbagai provider, semua lewat satu API key.
| Model ID | Provider | Konteks | Keterangan |
|---|---|---|---|
| claude-sonnet-5 | Anthropic | 200K | Terbaru, terbaik |
| claude-opus-4-8 | Anthropic | 200K | Paling powerful |
| claude-haiku-4-5-20251001 | Anthropic | 200K | Paling cepat |
| gpt-4o | OpenAI | 128K | Multimodal |
| gpt-4o-mini | OpenAI | 128K | Hemat biaya |
| o3-mini | OpenAI | 200K | Reasoning |
| gemini-2.5-pro | 1M | Konteks panjang | |
| gemini-2.5-flash | 1M | Cepat & hemat |
Lihat semua model via GET /v1/models.
VS Code
Ekstensi: Continue, Cline, Roo Code
// ~/.continue/config.json
{
"models": [
{
"title": "OpenHeimer - Claude Sonnet",
"provider": "openai",
"model": "claude-sonnet-5",
"apiKey": "sk-oppenheimer-...",
"apiBase": "https://api.openheimer.id/v1"
}
]
}Cursor
Settings > Models > OpenAI API Key
// Cursor Settings > Models > Add Model
// OpenAI API Key: sk-oppenheimer-...
// Override URL: https://api.openheimer.id/v1
// Model name: claude-sonnet-5Windsurf
Custom Provider
// Windsurf Settings > AI Providers > Add Custom Provider
Provider Name: OpenHeimer
API Key: sk-oppenheimer-...
Base URL: https://api.openheimer.id/v1
Model: claude-sonnet-5OpenCode
opencode.json config
// opencode.json
{
"provider": {
"oppenheimer": {
"name": "OpenHeimer",
"api": "openai",
"base_url": "https://api.openheimer.id/v1",
"api_key": "sk-oppenheimer-...",
"models": ["claude-sonnet-5", "gpt-4o"]
}
},
"model": "oppenheimer/claude-sonnet-5"
}Claude Code
Environment variables
export ANTHROPIC_BASE_URL="https://api.openheimer.id"
export ANTHROPIC_API_KEY="sk-oppenheimer-..."
claudeKiloCode
OpenAI Compatible provider
// KiloCode Settings > API Provider: OpenAI Compatible
Base URL: https://api.openheimer.id/v1
API Key: sk-oppenheimer-...
Model: claude-sonnet-5Hermes Agent
config.yaml
# ~/.hermes/config.yaml
provider:
name: oppenheimer
type: openai
base_url: https://api.openheimer.id/v1
api_key: sk-oppenheimer-...
default_model: claude-sonnet-5Antigravity
Custom OpenAI provider
# Antigravity > Settings > Providers > Add OpenAI Compatible
Name: OpenHeimer
Base URL: https://api.openheimer.id/v1
API Key: sk-oppenheimer-...
Model: claude-sonnet-5OpenClaw
API Provider config
# ~/.openclaw/config.yaml
api_provider: openai_compatible
base_url: https://api.openheimer.id/v1
api_key: sk-oppenheimer-...
model: claude-sonnet-5Generic / OpenAI-Compatible Tools
Berlaku untuk semua tools yang support OpenAI format
Base URL : https://api.openheimer.id/v1
API Key : sk-oppenheimer-YOUR_KEY
Model : claude-sonnet-5 (atau model lain)Image Generation
POST /v1/images/generations
Compatible dengan OpenAI Images API.
from openai import OpenAI
client = OpenAI(
api_key="sk-oppenheimer-...",
base_url="https://api.openheimer.id/v1"
)
response = client.images.generate(
model="dall-e-3",
prompt="Pemandangan Bali saat matahari terbenam, digital art",
n=1,
size="1024x1024"
)
print(response.data[0].url)MCP Server
Gunakan OpenHeimer sebagai provider di tools yang support Model Context Protocol (MCP).
# claude mcp add oppenheimer-proxy
# atau di ~/.claude/settings.json:
{
"mcpServers": {
"oppenheimer": {
"env": {
"ANTHROPIC_BASE_URL": "https://api.openheimer.id",
"ANTHROPIC_API_KEY": "sk-oppenheimer-..."
}
}
}
}Rate Limits
Header response menyertakan info rate limit:
X-RateLimit-Limit: 1000
X-RateLimit-Remaining: 995
X-RateLimit-Reset: 1706745600Kena limit? Coba exponential backoff atau upgrade plan di halaman pricing.
Error Codes
| Kode | Arti | Solusi |
|---|---|---|
| 401 | Unauthorized | Cek API key, pastikan ada di header Authorization |
| 403 | Forbidden | API key tidak punya akses ke model ini |
| 429 | Too Many Requests | Rate limit kena, tunggu atau upgrade plan |
| 500 | Internal Server Error | Coba lagi, laporkan jika berulang |