Инструкции

GLM API: ключ Z.ai и подключение GLM-5.3

Коротко: для прямого доступа к GLM-5.3 используйте ключ Z.ai и endpoint выбранного протокола. В примере ниже — OpenAI Chat Completion-совместимый адрес, модель glm-5.3 и явно выбранный для примера параметр reasoning_effort: low. Для GLM-5.3 документация Z.ai указывает по умолчанию max; low рекомендуется в частном сценарии перехода с отключённого thinking. У GLM-5.3 reasoning включён всегда, отключить его нельзя (документация Z.ai).

Zenith — отдельный сервис со своим ключом, адресом https://api.zenithmarket.dev/v1 и каталогом моделей. Ключ Zenith отправляют только на адреса Zenith, а ключ Z.ai — на endpoint Z.ai. Ниже приведены команды для обоих вариантов, разбор ошибок и расчёт расходов на одинаковой условной нагрузке.

Что такое GLM API от Z.ai

GLM API здесь — программный доступ к языковым моделям семейства GLM на платформе Z.ai. Приложение передаёт сообщения на API и получает ответ с учётом прав ключа и тарифов. Статистические generalized linear models, которые тоже сокращают до GLM, к этой инструкции не относятся.

Ключ Z.ai и выбор протокола

Для прямого доступа создайте API-ключ в аккаунте Z.ai и храните его как переменную окружения, а не в исходном коде или публичном репозитории. Документация GLM-5.3 описывает три варианта интеграции: OpenAI Chat Completion, OpenAI Responses и Anthropic Messages. У каждого свой base URL и формат запроса; приведённая далее команда относится к стандартному Chat Completion API Z.ai. Для примера нужен Standard API Key и соответствующий API-баланс. В quickstart Z.ai указаны шаги: зарегистрироваться на платформе, открыть API Keys, создать Standard API Key и при необходимости пополнить Billing. Для Coding Plan применяется его выделенный endpoint из отдельной инструкции; этот пример не подменяет настройку плана.

Один ключ — не любой продуктовый endpoint

Путь из документации GLM-5.3 Base URL
OpenAI Chat Completion Protocol — так названо в Model API-инструкции GLM-5.3 https://api.z.ai/api/coding/paas/v4
Responses https://api.z.ai/api/v1
Anthropic Messages https://api.z.ai/api/anthropic

Источник — How to Use GLM-5.3. Curl ниже использует стандартный адрес https://api.z.ai/api/paas/v4 из общего quickstart, а не coding/paas/v4. Выбирайте адрес и тело по инструкции того продукта, которому принадлежит ваш ключ. Для пользователей, ранее подписывавшихся на GLM Coding Plan, включая истёкшую подписку, документация описывает доступ только через OpenAI Chat Completion-compatible protocol; это отдельное ограничение плана, не перечень всех возможностей Standard API.

GLM-5.3, GLM-5.2 и GLM-5.3 Flash: что подтверждает каталог

В таблице ниже характеристики GLM-5.3 из документа Z.ai относятся к официальному API. Списки режимов GLM-5.2 и GLM-5.3 Flash здесь — только заявления исторического каталога Zenith от 27.10.2026. Метаданные не доказывают работу параметра в запросе и не устанавливают официальный backend.

Z.ai указывает для GLM-5.3 текстовый ввод, окно контекста 1 млн токенов и максимальный вывод 128 тыс. токенов; фактическая доступность зависит от продукта и лимитов аккаунта. Для этой модели reasoning обязателен: доступны уровни low, high и max. При миграции с конфигурации, в которой thinking был выключен, Z.ai рекомендует включить его и задать reasoning_effort как low.

Записи Zenith — параметры каталога отдельного сервиса, а не доказательство идентичного поведения официального API Z.ai. В снимке каталога от 27 октября 2026 года для glm-5.3 перечислены режимы low, high, max; для glm-5.2 — off, low, medium, high, max; для glm-5.3-flash список режимов пуст. У всех трёх в этом снимке указана поддержка Chat Completions и Responses (каталог Zenith).

ID в каталоге Zenith Подтверждённые отличия Практический выбор
glm-5.3 Режимы reasoning: low, high, max. Z.ai отдельно указывает текстовую модель, контекст 1 млн токенов и максимум ответа 128 тыс. Когда нужен этот точный ID; reasoning через Zenith ещё требуется проверить отдельно.
glm-5.2 Каталог Zenith дополнительно перечисляет off и medium. Эти данные не доказывают равенства модели GLM-5.3 по качеству. Режимы off/medium нельзя считать рабочим преимуществом до отдельной проверки; тариф совпадает со строкой 5.3.
glm-5.3-flash Каталог Zenith не перечисляет режимы reasoning; ставки за токены ниже, чем у двух других строк. Для нагрузки, где важен расход по каталожным ставкам и допустим именно этот ID.

Сравнительного теста качества в использованных источниках нет. Таблица сопоставляет метаданные и тарифы. Она не позволяет выбрать более точную модель или рабочий reasoning-режим Zenith.

Первый запрос к Z.ai через Chat Completion

Источник тела запроса — официальном Standard-примере GLM 5.3. Сохраните ключ в переменной окружения. Команды запускаются в Bash. Команда ниже — иллюстрация настройки, а не сообщение о выполненном тесте. Она отправляет короткий текст и просит ответить одним словом.

read -rsp "Z.ai API key: " ZAI_API_KEY; echo
export ZAI_API_KEY

curl 'https://api.z.ai/api/paas/v4/chat/completions' \
  -H "Authorization: Bearer ${ZAI_API_KEY}" \
  -H 'Content-Type: application/json' \
  --data '{
    "model": "glm-5.3",
    "messages": [
      {"role": "user", "content": "Ответь ровно одним словом: ok"}
    ],
    "thinking": {"type": "enabled"},
    "reasoning_effort": "low"
  }'

Ожидаемый формат успешного результата — HTTP 2 xx с JSON Chat Completion; текст ответа находится в choices[0].message.content. Иллюстративный текст там может быть, например, ok, но это ожидаемое значение запроса, а не реально полученный ответ модели.

Если вы вызываете Responses или Anthropic Messages, не подменяйте только URL: используйте их собственные base URL и формат тела. Параметр и маршрут из команды выше относятся к выбранному варианту Chat Completion.

Подключение GLM через Zenith

Для Zenith получите API-ключ в Telegram-боте сервиса и используйте его только с Zenith API. Документированный OpenAI-совместимый адрес — https://api.zenithmarket.dev/v1. Текущие доступные ID проверяются через GET /v1/models; документация также перечисляет маршрут POST /v1/chat/completions и формат минимального OpenAI-совместимого запроса (интеграционная документация Zenith).

read -rsp "Zenith API key: " ZENITH_API_KEY; echo
export ZENITH_API_KEY

curl --dump-header zenith-response-headers.txt 'https://api.zenithmarket.dev/v1/chat/completions' \
  -H "Authorization: Bearer ${ZENITH_API_KEY}" \
  -H 'Content-Type: application/json' \
  --data '{
    "model": "glm-5.3",
    "messages": [
      {"role": "user", "content": "Ответь ровно одним словом: ok"}
    ]
  }'

В примере Zenith указан только ID; reasoning_effort намеренно не передаётся. Списки режимов ниже — метаданные, не проверенный рабочий параметр. ID взят из снимка каталога Zenith от 27 октября 2026 года. Перед запросом убедитесь, что актуальный ответ GET /v1/models содержит выбранный ID и нужный тип endpoint: каталог, цены и доступность могут меняться. Совпадающее название модели в каталогах разных сервисов не подтверждает одинаковый backend или одинаковые лимиты.

Ошибки запроса и безопасный повтор

  1. Ошибка авторизации. Проверьте, что ключ принадлежит именно тому сервису, на адрес которого отправляется запрос, и что в переменной нет лишних пробелов. Не меняйте ключ Z.ai на ключ Zenith, оставляя прежний URL: это разные пары «ключ — сервис».
  2. Неверный режим reasoning. Для GLM-5.3 не задавайте отключение thinking. При миграции с выключенного thinking Z.ai рекомендует явно задать low; в остальных случаях учитывайте значение max по умолчанию. Каталожные режимы Zenith для GLM-5.2 и Flash нельзя автоматически переносить в официальный API.
  3. Неизвестная модель или endpoint. Сверьте выбранный протокол Z.ai и соответствующий ему base URL. Для Zenith заново получите список через GET /v1/models и проверьте доступные типы endpoint.
  4. HTTP-ошибка. Для Zenith документация советует прочитать тело ответа и исправить проблемы запроса, ключа или баланса перед повтором. При ошибке или тайм-ауте не считайте списание автоматически исключённым: сначала сверьте usage и историю запросов конкретного сервиса.

Расчёт стоимости по каталогу Zenith

В снимке Zenith от 27 октября 2026 года цены заданы в microUSD за миллион токенов: 1 USD = 1 000 000 microUSD. Для glm-5.3 указаны ставки $0,07 за миллион входных и $0,22 за миллион выходных токенов. Например, при 4 000 входных и 800 выходных токенах расчёт одной строки такой: 4000 × $0,07 / 1 000 000 + 800 × $0,22 / 1 000 000 = $0,000456. Это условный расчёт без кэширования, комиссий и внешних инструментов.

ID в снимке Zenith Вход, $ за 1 млн Выход, $ за 1 млн Один запрос 4 000/800 10 000 таких запросов
glm-5.3 0,07 0,22 $0,000456 $4,56
glm-5.2 0,07 0,22 $0,000456 $4,56
glm-5.3-flash 0,038 0,125 $0,000252 $2,52

Тарифы в таблице — расчёт по предоставленному Comrad 404 прайсу Zenith и снимку каталога от 27 октября 2026 года, а не независимо подтверждённые действующие цены и не сравнение качества. Условия тарификации кэшированного ввода здесь не учитываются. Перед оплатой в Zenith прочитайте условия предложенной в боте операции, сумму и возможную комиссию платёжного канала. Баланс предназначен для цифрового доступа внутри сервиса (условия Zenith).

Какой вариант выбрать

Для прямого доступа выбирайте ключ и инструкцию продукта Z.ai; для Zenith — его ключ и актуальный ID. Разница каталожных ставок позволяет посчитать бюджет, но не заменяет проверку задачи. Не отправляйте ключ одного сервиса другому.

Если нужно подробнее сравнить конкретные версии, см. профили GLM-5.3, GLM-5.2 и GLM-5.3 Flash. Для собственного приложения ориентируйтесь на схему ответа фактически выбранного endpoint: JSON Schema может проверить структуру результата, но сама по себе не устанавливает, правдивы ли значения в ответе.

Смета 4 000/800 исключает кэш: это цена обычного входа. Например, у GLM-5.3 в снимке Zenith чтение кэшированного входа стоит отдельно $0,013 за миллион. При наличии учтённых кэшированных токенов соответствующую часть входа нужно пересчитать; их число нельзя определить по одному сходству текстов.

Необязательная сверка по заранее полученному requestId

28.10.2026 редакция получила HTTP200 от stats и usage. В этом ответе баланс находится в data.balanceMicrousd, записи — в data.usage; у записи есть requestId, model, createdAt, status, inputTokens, outputTokens, cachedInputTokens, cacheCreationInputTokens и costMicrousd. Один доллар равен миллиону microUSD. Это наблюдение одного ключа и клиента, не обещание неизменной схемы.

Curl выше сохраняет заголовки в zenith-response-headers.txt. Если сервис вернул x-request-id, сохраните его для сверки. Наличие этого заголовка у текстового GLM-запроса редакция не проверяла. Следующий необязательный пример применим только при уже полученном requestId; если заголовка нет и сервис не предоставил идентификатор иначе, этот способ неприменим. Не делайте приблизительное совпадение доказательством конкретного списания. Следующий файл zenith_usage.py читает историю и ищет только точное совпадение requestId; генерацию он не повторяет. Запустите python zenith_usage.py, введите ключ и идентификатор. Если ID не получен или совпадения нет, исход остаётся неопределённым: не заменяйте его догадкой по одному изменению баланса.

import getpass, json, urllib.request, urllib.error
key=getpass.getpass("Zenith API key: ")
request_id=input("x-request-id исходного ответа: ").strip()
if not key or not request_id: raise SystemExit("Нужны ключ и ID")
req=urllib.request.Request("https://api.zenithmarket.dev/v1/zenith/key/usage",
    headers={"Authorization":"Bearer "+key,"User-Agent":"Comrad404SourceReview/1.0"})
try:
    with urllib.request.urlopen(req,timeout=30) as response: obj=json.load(response)
except urllib.error.HTTPError as error:
    print("HTTP",error.code,error.read().decode(errors="replace").replace(key,"[REDACTED]")[:700])
    raise SystemExit(1)
rows=obj.get("data",{}).get("usage") if isinstance(obj,dict) else None
if not isinstance(rows,list): raise SystemExit("Неизвестная схема истории; повтор остановлен")
matches=[r for r in rows if r.get("requestId")==request_id]
if len(matches)!=1: raise SystemExit("Нет единственной записи; проверьте период/историю в сервисе")
r=matches[0]
print({k:r.get(k) for k in ("requestId","model","createdAt","status","inputTokens",
    "outputTokens","cachedInputTokens","cacheCreationInputTokens","costMicrousd")})
if isinstance(r.get("costMicrousd"),int): print("USD:",r["costMicrousd"]/1_000_000)

Для текстового запроса сопоставьте ID, модель, время, статус и счётчики с исходным usage, сверьте отображённую стоимость операции; этот скрипт не выполняет автоматический тарифный пересчёт. История ограничена возвращённой выборкой: отсутствие записи не доказывает бесплатность или отмену.

Чтение общего каталога проверено редакцией 28.10.2026: GET /v1/models с Bearer-ключом и User-Agent Comrad404SourceReview/1.0 вернул HTTP200, JSON-объект с массивом data. Это проверка чтения каталога, не генерации каждого ID. Неизвестная форма должна останавливать пример до платного вызова.