API documentation

Arkheon mirrors the OpenAI API. Change base_url on https://arkheonchat.com/v1 and the key — the code keeps working, now with every model and a ruble account.

Quick start

  1. Sign up and confirm your email.
  2. Top up on the page Pricing.
  3. Create a key in your account. A key is shown once.
from openai import OpenAI

client = OpenAI(base_url="https://arkheonchat.com/v1", api_key="ark_...")

resp = client.chat.completions.create(
    model="anthropic/claude-sonnet-4",
    messages=[{"role": "user", "content": "Check this contract for risks"}],
)
print(resp.choices[0].message.content)

Keys

Pass the key in the header Authorization: Bearer ark_…. Up to 10 active keys per account, each can be revoked in your account. A key opens the API only — not the account and not the password.

POST /v1/chat/completions

Supported: model, messages (text, image_url, file), max_tokens / max_completion_tokens, temperature, top_p, stop, stream, tools, tool_choice, parallel_tool_calls, response_format, seed, presence_penalty, frequency_penalty, reasoning, modalities. Other fields are ignored; n must be 1.

The response is the standard OpenAI object. In addition it carries arkheon.credits_charged and arkheon.balance. If max_tokens is not given, 2048 is used; the maximum is 16,384.

Web search is switched on with the suffix :online of the model, for example openai/gpt-4o-mini:online.

Model auto picks the model for the request by itself: code, calculation, analysis of long documents, text or a quick answer. If "ask before expensive models" is on in your account, the API takes a model below the threshold instead of asking; pass "arkheon": {"allow_expensive": true} in the request body to allow an expensive one. The actual model comes back in arkheon.model, the reason for the choice is in arkheon.auto.

Streaming

"stream": true — the answer comes as text/event-stream, the last chunk contains usage, then data: [DONE]. Works with stream=True in the SDK.

GET /v1/models

The list of available models with the price of an answer in credits. Identifiers of the form vendor/model. Below are the cheapest of 209.

idNameClassAnswer
amazon/nova-lite-v1Amazon: Nova Lite 1.0fast≈1 cr
amazon/nova-micro-v1Amazon: Nova Micro 1.0fast≈1 cr
bytedance/ui-tars-1.5-7bByteDance: UI-TARS 7B fast≈1 cr
cohere/command-r-08-2024Cohere: Command R (08-2024)fast≈1 cr
cohere/command-r7b-12-2024Cohere: Command R7B (12-2024)fast≈1 cr
deepseek/deepseek-chat-v3-0324DeepSeek: DeepSeek V3 0324fast≈1 cr
deepseek/deepseek-v3.1-terminusDeepSeek: DeepSeek V3.1 Terminusfast≈1 cr
deepseek/deepseek-v3.2DeepSeek: DeepSeek V3.2fast≈1 cr
deepseek/deepseek-v3.2-expDeepSeek: DeepSeek V3.2 Expfast≈1 cr
deepseek/deepseek-v4-flashDeepSeek: DeepSeek V4 Flash 0423fast≈1 cr
deepseek/deepseek-v4-flash-0731DeepSeek: DeepSeek V4 Flash 0731fast≈1 cr
deepseek/deepseek-v4-flash-vision-expDeepSeek: DeepSeek V4 Flash Vision Expfast≈1 cr
google/gemini-2.5-flash-liteGoogle: Gemini 2.5 Flash Litefast≈1 cr
google/gemma-2-27b-itGoogle: Gemma 2 27Bfast≈1 cr

The full list is in the response /v1/models or in the model picker in the chat.

Billing

Before a request an estimate is held on the balance (it accounts for max_tokens). After the answer the actual cost reported by the provider is charged and the rest of the hold is returned at once. 1 credit ≈ 1 ₽, the minimum charge is 1 credit. Empty answers and provider errors are not charged. Balance: GET /v1/balance.

GET /v1/usage

Statistics for the key the request is signed with: ?days=30 (1–90). The answer contains total (requests, tokens, credits), by_day (a dense series by day), by_model. A key sees only itself; the whole picture of the account is in your account.

curl https://arkheonchat.com/v1/usage?days=7 -H "Authorization: Bearer ark_..."

{"object":"usage","scope":"key","key":{"id":12,"name":"Бот поддержки","prefix":"ark_3f"},
 "period":{"from":"2026-08-27","to":"2026-09-02","days":7},
 "total":{"requests":418,"prompt_tokens":91230,"completion_tokens":40211,"cached_tokens":0,"credits":612},
 "by_day":[{"date":"2026-08-27","requests":51,"credits":80,...}],
 "by_model":[{"model":"openai/gpt-4o-mini","requests":390,"credits":402,...}]}

Errors and limits

Errors have the OpenAI shape: {"error": {"message", "type", "code"}}.

HTTPcodeWhen
401invalid_api_keyThe key is missing, revoked or wrong
402insufficient_creditsNot enough credits for the hold. The response contains needed and available
404model_not_foundModel unavailable
429rate_limitedMore than 60 requests a minute per key, or more than 4 at once
502 / 504upstream_error / upstream_timeoutThe provider returned an error or nothing — no credits charged