From a key to the first request
llmka.dev is an OpenAI- and Anthropic-compatible gateway: one key and one balance for every model. Point your agent, IDE or script at the address below - no other changes needed.
Sign in to the dashboard and create a key on the Keys page. Top up your balance in USDT (TRC20, BEP20, TON). Minimum top-up is $5.
One base URL for everything. Tools that speak the Anthropic format (Claude Code) use the origin without /v1.
A reply with an "id" field means the key works. The model value is any id from /v1/models.
curl https://api.llmka.dev/v1/chat/completions \
-H "Authorization: Bearer $LLMKA_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "claude-sonnet-5",
"messages": [{"role": "user", "content": "Hello!"}],
"stream": false
}'Copy-paste configs
The gateway is compatible with OpenAI Chat Completions and the Anthropic Messages format, including streaming and tool calling - so coding agents work as usual.
# ~/.hermes/config.yaml
custom_providers:
- name: llmka
base_url: https://api.llmka.dev/v1
key_env: LLMKA_API_KEY
models:
claude-sonnet-5: {}
gpt-5.6-luna: {}
model:
default: claude-sonnet-5
provider: custom:llmka
# ~/.hermes/.env
LLMKA_API_KEY=sk-...All examples use the same key: the model name is the only thing that changes between tools.
Code and no-code
Python, Node.js, LangChain, CrewAI and low-code platforms connect through the same OpenAI-compatible endpoint - from a script to a visual flow.
pip install openai
from openai import OpenAI
client = OpenAI(api_key="sk-...", base_url="https://api.llmka.dev/v1")
stream = client.chat.completions.create(
model="claude-sonnet-5",
messages=[{"role": "user", "content": "Explain SSE in two paragraphs."}],
stream=True,
)
for chunk in stream:
print(chunk.choices[0].delta.content or "", end="")