Инструкции

Grok API: ключ xAI, подключение Zenith и выбор Grok 4.6/4.5

Для 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 исходного ответа. Затем сопоставьте валюту, период и списанную сумму с расчётом. Универсальные имена денежных полей здесь не заданы: источник подтверждает маршруты, но не неизменную схему их ответа. Если записи не хватает, сохраните время и идентификатор запроса для поддержки, не пересылая ключ. Не включайте автоматический повтор генерации до выяснения результата первой попытки.