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





