Z.ai · Text · API

GLM API — live pricing and a 5-minute setup

GLM API (Zhipu AI): GLM 5.3 and GLM 5.2 through one Zerocoder key. OpenAI-compatible chat/completions, streaming, function calling.

GLM is the family of language models from the Chinese lab Zhipu AI: general-purpose models for text, code, document analysis and agent scenarios. Through Zerocoder, GLM 5.3 and GLM 5.2 are served on the OpenAI-compatible /v1/chat/completions with streaming and function calling — no vendor account needed.

You pay per token — input and output at their own prices — with a minimum per call, and a response that never starts is refunded. Below are the live prices of both versions, a cost calculator and code samples.

Models and prices

The live GET /v1/models price list in US dollars. Minimum per call: $0.00556. Endpoints: /v1/messages, /v1/chat/completions

Model prices in US dollars; where we are cheaper, the vendor's official price for the same unit is struck through
ModelPriceUnit
GLM 5.3recommendedglm-5.3 · Z.ai
input $0.84 / output $2.64per 1M tokens
GLM 5.2glm-5.2 · Z.ai
input $0.84 / output $2.64per 1M tokens
All prices are in US dollars; Zerocoder prices are converted at the internal rate.

Cost calculator

Pick a model and a volume — the calculator uses the same formulas as API billing.

per call$0.00556
per month · 1,000$5.56

input $0.84 / output $2.64 per 1M tokens

minimum per call: $0.00556

Prices from GET /v1/models in US dollars at the internal rate. Failed generations are not charged.

  1. Get a keyin the API dashboard
  2. Top up the walletby card or invoice
  3. Make the callPOST /v1/chat/completions, model glm‑5.3
First request

Connect the GLM API: change two values

The OpenAI SDK in Python and Node.js, the Anthropic SDK or curl: swap the base URL and the key — requests, streaming and response handling stay as they are. GLM answers on POST /v1/messages and /v1/chat/completions.

Base URL
https://zerocoder.com/api/v1

Anthropic SDK — https://zerocoder.com/api, without /v1

Model in the samples — glm-5.3; any model from the table works

from openai import OpenAI client = OpenAI(    base_url="https://zerocoder.com/api/v1",    api_key="zc-sk-…",) r = client.chat.completions.create(    model="glm-5.3",    messages=[{"role": "user", "content": "Hello!"}],)print(r.choices[0].message.content)
import OpenAI from "openai"; const client = new OpenAI({  baseURL: "https://zerocoder.com/api/v1",  apiKey: "zc-sk-…",}); const r = await client.chat.completions.create({  model: "glm-5.3",  messages: [{ role: "user", content: "Hello!" }],});console.log(r.choices[0].message.content);
import Anthropic from "@anthropic-ai/sdk"; const client = new Anthropic({  // without /v1: the SDK appends /v1/messages itself  baseURL: "https://zerocoder.com/api",  apiKey: "zc-sk-…",}); const msg = await client.messages.create({  model: "glm-5.3",  max_tokens: 300,  messages: [{ role: "user", content: "Hello!" }],});console.log(msg.content[0].text);
# Anthropic Messages formatcurl https://zerocoder.com/api/v1/messages \  -H "x-api-key: zc-sk-…" \  -H "content-type: application/json" \  -d '{"model": "glm-5.3", "max_tokens": 400,       "messages": [{"role": "user", "content": "Hello!"}]}' # OpenAI chat/completions format, streamingcurl -N https://zerocoder.com/api/v1/chat/completions \  -H "authorization: Bearer zc-sk-…" \  -H "content-type: application/json" \  -d '{"model": "glm-5.3", "stream": true,       "messages": [{"role": "user", "content": "Hello!"}]}'

How to connect the GLM API: first request in 5 minutes

From a key to production — six steps based on the real /api/v1 contracts. Each step links to the relevant docs section.

  1. 1

    Get a key in your account

    Sign up, open the API section of your account, top up the balance and create a zc-sk-… key. One key unlocks GLM and every other model in the catalogue.

    Read more →
  2. 2

    Send the first request

    POST /v1/chat/completions (Bearer) or /v1/messages (x-api-key) with model and messages — OpenAI and Anthropic shapes, the SDKs work with a swapped base URL.

    Read more →
  3. 3

    Turn on streaming

    stream: true — the answer arrives as SSE chunks with a final billing event showing the real charge. The reserve is taken by max_tokens (default 8192), so set it to fit the task.

    Read more →
  4. 4

    Handle limits and errors

    30 requests per minute per key: on 429 wait and retry with a growing pause; 402 — top up the balance; 400 — check model against GET /v1/models. Failed generations are not charged, so retrying is safe.

    Read more →
  5. 5

    Watch the budget

    GET /v1/balance returns the balance and 30-day spend; every call's price comes back in the response — write it to your logs and set an alert threshold in your own monitoring.

    Read more →
  6. 6

    Ship to production

    Keep the key in server secrets, never in the frontend. For high GLM volumes contact us — the limit is raised individually and companies can pay by invoice. Check the observed stability on the status page.

    Read more →

No code

Any tool that can make an HTTP request can call our API: one POST with the x-api-key header.
HTTP Requestn8n

HTTP Request node: POST to the /api/v1 endpoint, x-api-key header and a JSON body built from workflow fields. For video add a Wait node and a second HTTP Request on GET ?id= in a loop until completed.

HTTP → Make a requestMake

HTTP “Make a request” module: POST, Body type JSON, x-api-key header. The response is parsed automatically — the image url or the answer text flows into the next modules.

Webhooks by ZapierZapier

Webhooks by Zapier → Custom Request action: POST, Data — JSON with model and prompt, Headers — x-api-key. Response fields are available to the following Zap steps.

Apps ScriptGoogle Sheets

In Apps Script use UrlFetchApp.fetch with method post, contentType application/json and a payload from the cells: prompts in one column, results written to the next one.

any bot frameworkTelegram bot

A bot on aiogram, grammY or Telegraf calls the same HTTP API: user message → model request → reply in the chat. For video — poll the status and send the file from the finished URL.

OpenAI-compatible base URLPython / Node SDK

For text models the official OpenAI and Anthropic SDKs work with a swapped base URL and our key — your application code stays the same. Images and video are a plain HTTP call from any language.

For business

We'll help bring AI into your business

More than a key: we help wire GLM and other models into your workflows — from audit to production, with invoice payment.

  • Process auditWe find where AI pays off in your workflows: support, sales, content, documents — and name specific scenarios and models.
  • Integration into CRM, website, Telegram, n8nWired through our API or ready no-code scenarios; one key and a shared balance for every model.
  • Payment by invoiceCompanies get an invoice for bank transfer, accounting documents and a top-up of the API balance.
  • Support and limitsHelp with prompts and architecture, request limits raised individually for your load.

Inputs, limits and refunds

  • Two shapes: Anthropic Messages (/v1/messages, x-api-key) and OpenAI chat/completions (Bearer)
  • Streaming: Anthropic SSE with a billing event at the end; OpenAI chunks and data: [DONE]
  • Input and output tokens are billed at their own per-1M prices (output costs more), minimum per call in min_rub
  • A reserve by max_tokens (default 8192) is taken before the answer and settled after
  • Failure before the first token — the reserve is refunded
  • Image input only via the separate vision model (model: vision); images sent to the models on this page return 400 model_no_vision with nothing charged
  • 30 requests per minute per key (all endpoints combined); model: smart picks the model tier itself

Error responses and refunds

# 401 {"type":"error","error":{"type":"authentication_error","message":"Invalid or revoked API key."}}
# 402 {"type":"error","error":{"type":"billing_error","message":"Not enough API balance: …"}}
# 429 {"type":"error","error":{"type":"rate_limit_error","message":"…"}}   ← 30 requests/min per key
# 400 {"type":"error","error":{"type":"invalid_request_error","message":"Unknown model \"…\". See GET /v1/models."}}
# /chat/completions uses the OpenAI envelope: {"error":{"message":"…","type":"…","code":"insufficient_balance"}}
# streaming: the reserve (by max_tokens) is settled after the answer; a failure before the first token is refunded
# event: billing {"charged_rub":…,"reserved_rub":…,"balance_rub":…,"unit":"1M_tokens","rub_per_mtok_in":…,"rub_per_mtok_out":…,"rub_per_mtok":…}

Observed stability of the API and text models

Numbers come from the public /status summary: the share of successful requests over a period for the whole API and for the category as a whole (the summary has no per-model breakdown), no SLA promises. Failed generations are not charged, so retrying is safe.

Developer APIoperational

—now (2 h window)
74.5%last 30 days
74%last 90 days

Text & chatoperational

—now (2 h window)
99%last 30 days
94.5%last 90 days

Refunds and charges

  • Failure before the first token — the reserve is refunded in full
  • The max_tokens reserve is settled after the answer — only the real volume is charged
  • In streaming the real charge arrives as the billing event

Tracking since Aug 8, 2026.

Use cases

1

Agents with function calling that automate business processes

2

Summarising and analysing long documents and threads

3

Writing and fixing code, answering questions over technical docs

4

Multilingual support and sales chatbots

5

Extracting structured data from emails and forms into JSON

6

A/B testing the two versions on one prompt set

Prompting tips

  • Run the same prompts on both versions first and pin the one that wins on your data.
  • Set the response format with a JSON example and ask for nothing outside it.
  • Describe functions in tools with clear names and typed parameters.
  • For long documents ask for a short summary first, then for answers based on it.
  • Cap max_tokens to the expected answer length.
  • Enable stream: true in chat UIs so the answer appears right away.

Ready-made prompts for GLM

Copy the prompt and the parameters into the request body — the fields are named exactly as in the /api/v1 contract. Replace the angle-bracket placeholders with your material.

Product descriptions in bulk

Write a product description under 60 words and five benefit bullets strictly from the specs:

<specs>
system: You write for an online store: specific, no superlatives.max_tokens: 400

SEO: title and description

For the page below suggest three title options under 60 characters and a description under 155 characters with the key phrase “<phrase>”:

<page text>
max_tokens: 400

Ticket classification

<the customer's message to classify>
system: Return JSON only: {"category": billing | delivery | quality | other, "priority": low | medium | high}max_tokens: 60

Translation with localisation

Translate into German for an Austrian audience, keep formatting and placeholders in curly braces, adapt idioms:

<text>
max_tokens: 1500

Chatbot with a system prompt

<conversation history in messages, last turn from the user>
system: You are a consultant at a bicycle shop. Keep it short, ask about height and budget, suggest at most two models.stream: truemax_tokens: 500

Who the GLM API is for

Industries where this kind of generation becomes part of the workflow rather than an experiment.

SaaS & appsAn AI assistant inside your product: OpenAI or Anthropic shape, GLM via a swapped base URL.
Support & CRMTicket replies, classification, conversation summaries for managers.
E-commerceProduct descriptions, SEO copy, review replies — in bulk across the catalogue.
EdTechGrading, explanations at the learner's level, quiz generation.
Documents & legalDigests, version comparison, field extraction into structured data.
Media & contentArticle drafts, rewrites, headlines and translations — GLM in the editorial pipeline.

FAQ

What is the GLM API token rate?

GLM is billed per token: each version has two prices per million tokens — input and output — in the table above and in GET /v1/models, with the per-call minimum in min_rub. A reserve by max_tokens is taken before the answer and settled after it by the actual usage.

How do I start with the GLM API in Python?

Install the OpenAI SDK, set base_url to zerocoder.com/api/v1 and a zc-sk-… key, and put the GLM version id from the table into model. The /v1/chat/completions request format is standard: messages with system, user and assistant roles, optionally stream and tools. Samples are in the “First request” block.

Which GLM version should I choose?

Two GLM versions are available: the newer 5.3 and the previous 5.2. Run the same prompts on both, compare quality and price in the table and pin the better id in code — switching between them is just a change of the model field.

Does the GLM API support function calling?

Yes. On /v1/chat/completions GLM accepts OpenAI tools and tool_choice and returns tool_calls; the function result goes back as a tool message. In the Anthropic format (/v1/messages) the model answers, but without tools.

What limits and refunds apply to the GLM API?

A shared key limit of 30 requests per minute across all API endpoints; above it, 429 rate_limit_error. If the GLM answer never starts, the reserve is refunded automatically; if a stream breaks, only generated tokens are charged. These models take no image input — such a request returns 400 with nothing charged.

Can the GLM API be paid by a company?

Yes. A legal entity requests an invoice in the API dashboard and pays it by bank transfer; once credited, the amount is spent on GLM and other models with one key. A card top-up is credited at once, and accounting documents are available on request.

Is there a free plan for the GLM API?

There is no free tier: the API wallet opens with a minimum first top-up, then GLM is charged per token with a per-call minimum. To spend little on a test, use short prompts and a small max_tokens — the cost shows in the billing block of the response.

Can the GLM API return the answer as a stream?

Yes. With stream: true the GLM answer arrives in OpenAI-format chunks and ends with data: [DONE], preceded by a billing block with the actual charge. Streaming also works in the Anthropic format and ends with a billing event.

AI API for your product

One key for every model, pay per call