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
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.
The live GET /v1/models price list in US dollars. Minimum per call: $0.00556. Endpoints: /v1/messages, /v1/chat/completions
| Model | Price | Unit |
|---|---|---|
GLM 5.3recommended glm-5.3 · Z.ai | input $0.84 / output $2.64 | per 1M tokens |
GLM 5.2 glm-5.2 · Z.ai | input $0.84 / output $2.64 | per 1M tokens |
Pick a model and a volume — the calculator uses the same formulas as API billing.
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.
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 URLhttps://zerocoder.com /api/v1Anthropic SDK — https://zerocoder.com, 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!"}]}'
From a key to production — six steps based on the real /api/v1 contracts. Each step links to the relevant docs section.
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 →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 →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 →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 →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 →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 →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 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 Zapier → Custom Request action: POST, Data — JSON with model and prompt, Headers — x-api-key. Response fields are available to the following Zap steps.
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.
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.
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.

More than a key: we help wire GLM and other models into your workflows — from audit to production, with invoice payment.
# 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":…}
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.
Tracking since Aug 8, 2026.
Agents with function calling that automate business processes
Summarising and analysing long documents and threads
Writing and fixing code, answering questions over technical docs
Multilingual support and sales chatbots
Extracting structured data from emails and forms into JSON
A/B testing the two versions on one prompt set

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.
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: 400For 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<the customer's message to classify>
system: Return JSON only: {"category": billing | delivery | quality | other, "priority": low | medium | high}max_tokens: 60Translate into German for an Austrian audience, keep formatting and placeholders in curly braces, adapt idioms: <text>
max_tokens: 1500<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
Industries where this kind of generation becomes part of the workflow rather than an experiment.
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.
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.
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.
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.
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.
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.
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.
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.