Для Grok API выберите один из двух отдельных путей: ключ xAI и https://api.x.ai/v1 либо ключ Zenith и https://api.zenithmarket.dev/v1. Они имеют разные балансы и каталоги. Оплата доступа к чату Grok не служит доказательством наличия средств в API.
Ниже — порядок получения официального ключа, законченный текстовый пример Zenith и расчёт Grok 4.6/4.5 по снимку продавца от 27 октября 2026 года. Поиск, инструменты, reasoning и streaming рассматриваются отдельно: успешный текстовый ответ не подтверждает все эти функции.
Прямой xAI API: ключ и первый вызов
Прямой официальный API xAI использует базовый URL https://api.x.ai/v1, а первый запрос можно отправить на endpoint /responses с моделью Grok. Источник.
Войдите в console.x.ai, откройте API Keys, создайте ключ и проверьте кредитный баланс. Для прямого пути используйте официальный SDK-совместимый адрес xAI. Установите python -m pip install openai, сохраните файл как xai_first.py и выполните python xai_first.py.
import getpass
from openai import OpenAI
key = getpass.getpass("xAI API key: ")
client = OpenAI(api_key=key, base_url="https://api.x.ai/v1", max_retries=0, timeout=60)
result = client.responses.create(model="grok-4.6", input="Ответь ровно: ok")
print(result.output_text)
print("usage:", result.usage)
Пример следует формату quickstart xAI. Ожидается короткое ok через output_text; это не результат нашего запуска. Проверьте доступ к выбранному ID в своём аккаунте: наличие примера в документации не гарантирует квоту проекта.
Grok 4.6 и 4.5: что различается
| Критерий | Официальный xAI | Zenith, снимок 27.10.2026 |
|---|---|---|
| Ключ и баланс | xAI Console | Отдельный ключ и баланс Zenith |
| Текстовые endpoint-ы | По спецификации выбранной модели xAI | Для обоих ID указаны chat_completions и responses |
| reasoning у 4.6 | low, medium, high, xhigh; default high | low, medium, high, xhigh в карточке |
| reasoning у 4.5 | Паспорт xAI также содержит xhigh | Карточка перечисляет low, medium, high |
| Поиск и X | Отдельная функция API, не следствие названия Grok | Для выбранных ID в этом материале не подтверждён |
Источники: Grok 4.6, Grok 4.5, каталог Zenith. Если приложению нужен именно xhigh, строку 4.5 Zenith нельзя считать полным эквивалентом официальной конфигурации.
Первый текстовый запрос через Zenith
Получите ключ в боте из документации Zenith. Сохраните код как grok_zenith.py и запустите python grok_zenith.py после установки SDK. Скрипт сначала проверяет ID и маршрут в каталоге.
import getpass
import json
import os
from openai import OpenAI, APIError
key = os.environ.get("ZENITH_API_KEY") or getpass.getpass("Zenith API key: ")
client = OpenAI(api_key=key, base_url="https://api.zenithmarket.dev/v1",
timeout=60, max_retries=0)
model_id = "grok-4.6"
try:
import json
import urllib.request
catalog_request = urllib.request.Request("https://api.zenithmarket.dev/v1/models",
headers={"Authorization": "Bearer " + key})
with urllib.request.urlopen(catalog_request, timeout=30) as catalog_response:
catalog = json.load(catalog_response)
rows = catalog if isinstance(catalog, list) else catalog.get("data", [])
row = next((r for r in rows if r.get("id") == model_id), None)
if not row or "chat_completions" not in row.get("supported_endpoint_types", []):
raise SystemExit("Нет нужного ID или chat_completions в каталоге")
result = client.chat.completions.create(model=model_id,
messages=[{"role":"user","content":"Ответь ровно одним словом: ok"}],
max_tokens=128, stream=False)
except APIError as error:
print(type(error).__name__, getattr(error, "status_code", None))
raise SystemExit(1)
if not result.choices:
raise SystemExit("Ошибка контракта: нет choices")
print(result.choices[0].message.content)
print("usage:", result.usage)
Ожидается ok в choices[0].message.content. При 401 проверьте ключ и домен; при отсутствии ID остановитесь и выберите доступную модель сознательно, без скрытой подмены. Этот пример не выполнялся на платном API.
Как проверить дополнительные функции
| Функция | Отдельный критерий проверки |
|---|---|
| Tools | Модель возвращает вызов объявленной функции; приложение исполняет её и возвращает результат в следующем ходе |
| Streaming | Клиент разбирает последовательные события выбранного протокола, включая завершение и ошибку |
| Reasoning | Маршрут принимает конкретное документированное значение; его нельзя подтверждать только текстом «я рассуждаю» |
| Поиск | Запрос использует отдельно документированный инструмент, а ответ содержит проверяемые источники и даты |
Это план контрактных проверок, не утверждение о поддержке Zenith всех перечисленных операций. Пока нет схемы конкретного инструмента, не добавляйте выдуманные поля web_search или x_search в запрос.
Расчёт стоимости
В снимке Zenith обе строки Grok имеют $0,07 за миллион входных и $0,20 за миллион выходных токенов. При 4 000/800: 4000 × 0,07 / 1 000 000 + 800 × 0,20 / 1 000 000 = $0,00044. Для 10 000 запросов — $4,40. Это текстовый расчёт без кэша, комиссий и поиска, а не официальный прайс xAI. В официальном xAI есть порог длинного prompt: его условия нужно считать по отдельному тарифу.
Сверить расчёт с историей Zenith
Документация перечисляет GET /v1/zenith/key/stats и GET /v1/zenith/key/usage. Следующий скрипт делает только запросы статистики, без генерации текста. Сохраните его как zenith_usage.py и выполните python zenith_usage.py. Используйте ключ Zenith; не публикуйте полученную историю, если она содержит данные проекта.
import getpass
import json
import os
import urllib.error
import urllib.request
key = os.environ.get("ZENITH_API_KEY") or getpass.getpass("Zenith API key: ")
if not key:
raise SystemExit("Ключ не введён")
for path in ("stats", "usage"):
request = urllib.request.Request(
"https://api.zenithmarket.dev/v1/zenith/key/" + path,
headers={"Authorization": "Bearer " + key},
)
try:
with urllib.request.urlopen(request, timeout=30) as response:
data = json.load(response)
except urllib.error.HTTPError as error:
print(path, "HTTP", error.code)
continue
print(path, json.dumps(data, ensure_ascii=False, indent=2))
В ответе найдите запись своего вызова по времени и ID модели, если эти поля возвращены. Сравните вход, выход и отдельно учтённый кэш с данными usage исходного ответа. Затем сопоставьте валюту, период и списанную сумму с расчётом. Универсальные имена денежных полей здесь не заданы: источник подтверждает маршруты, но не неизменную схему их ответа. Если записи не хватает, сохраните время и идентификатор запроса для поддержки, не пересылая ключ. Не включайте автоматический повтор генерации до выяснения результата первой попытки.





