Home Blog

How to Use the GLM 5.3 API

GLM 5.3 via API cover

Aug 19, 2026

EmpirioLabs AI

GLM 5.3 is Z.ai's flagship coding and agentic model, released on August 14, 2026. It runs on the same base model as GLM 5.2, with the gains coming from extended post-training rather than a new pretraining run: Z.ai reports a 50% improvement in coding over GLM 5.2 on its own Code Bench, along with state-of-the-art results among open-source models on Terminal Bench 3.0 and Agents' Last Exam.

GLM 5.3 is live on EmpirioLabs today through an OpenAI-compatible API, with text input and output, a 1M token context, up to 128K output tokens, function calling, JSON mode structured output, built-in web search, and streaming. Try it in the playground or call it from any OpenAI-compatible client. The full spec and current rates live on the GLM 5.3 model page and the API docs.

Pricing

Billing is usage based: input and output tokens are metered per token, and each built-in web search adds a small per-call fee that applies only when a search actually runs. There is no separate cache tier. Current per-token rates always live on the model page and the pricing page, which stay in sync with what you are charged.

Quickstart

Point any OpenAI SDK at the EmpirioLabs base URL and pass glm-5-3 as the model:

from openai import OpenAI

client = OpenAI(
    base_url="https://api.empiriolabs.ai/v1",
    api_key="YOUR_EMPIRIOLABS_API_KEY",
)

resp = client.chat.completions.create(
    model="glm-5-3",
    messages=[
        {"role": "user", "content": "Find the race condition in this worker pool and propose a fix."},
    ],
    reasoning_effort="max",
)

print(resp.choices[0].message.content)

The same model id works on /v1/responses, the Anthropic-shaped /v1/messages, and the Google-compatible /v1beta/models/glm-5-3:generateContent route. Alternate ids glm-5.3, zai/glm-5.3, and zhipu/glm-5.3 resolve to the same model.

Reasoning effort

GLM 5.3 exposes a native reasoning_effort control with three levels: low for lightweight reasoning, high for enhanced reasoning, and max for deep reasoning. The default is max, which is what Z.ai recommends for complex coding and long-horizon agent work. Drop to low for short, latency-sensitive turns.

Web search and tools

Set tool_web_search to true to let the model search the web before answering, and narrow the results with search_recency_filter, search_domain_filter, and count. Function calling uses the standard OpenAI tools array, and tool_stream streams tool-call arguments as they are produced.

Things worth knowing before your first call

  • Reasoning cannot be turned off, so it is always part of your output bill. Unlike GLM 5.2, this model has no thinking-off mode, and reasoning_effort accepts only low, high, and max. A request that asks for a different level, or for thinking to be disabled, is served at the nearest supported level rather than failing, so code written for GLM 5.2 keeps working. Reasoning tokens bill as output tokens, and at max even a one-word answer can spend most of its output budget thinking, so send low explicitly for trivial calls.
  • Structured output is JSON mode, not schema enforcement. Use response_format with {"type": "json_object"} and describe the fields you want in the prompt. Supplying a JSON Schema is accepted but not enforced, so validate the result on your side rather than assuming the shape.
  • It is text only. Images, video, and file parts are rejected. Use a vision model such as GLM 4.6V for multimodal input.

Where to go next

Open the playground to try GLM 5.3 without writing code, read the API reference for the full parameter list, or browse the model catalog to compare it with the rest of the lineup.

Ready to use better endpoints?

Explore our models, or contact us about business inquiries, custom deployments, or anything else.