GLM Image API 接口、参数 & 代码示例

z-ai/glm-image

GLM-Image 是智谱新旗舰图像生成模型, 模型全程基于国产芯片完成训练,采用独创的「自回归+扩散解码器」混合架构,兼顾全局指令理解与局部细节刻画,克服了海报、PPT、科普图等知识密集型场景生成难题,是面向以 Nano Banana Pro 为代表的新一代「认知型生成」技术范式的一次重要探索。

模型 ID
z-ai/glm-image
模型系列
GLM
更新日期
模型能力
图片生成
模型价格(每张)
¥ 0.12

GLM Image 模型介绍:

GLM-Image 是智谱新旗舰图像生成模型, 模型全程基于国产芯片完成训练,采用独创的「自回归+扩散解码器」混合架构,兼顾全局指令理解与局部细节刻画,克服了海报、PPT、科普图等知识密集型场景生成难题,是面向以 Nano Banana Pro 为代表的新一代「认知型生成」技术范式的一次重要探索。

一、 模型概览与核心参数

  • 定位:首个开源的工业表现级离散自回归图像生成模型,兼顾全局指令理解与局部细节刻画,尤其擅长攻克海报、PPT、科普图等知识密集型场景的生成难题。
  • 输入模态:文本(最大输入 1000 字符)
  • 输出模态:图像(模型输出形式为图片 URL,用户需通过 URL 下载图片)
  • 多分辨率支持:支持 1:1、3:4、4:3、16:9 等比例。
  • 推荐常用尺寸:1280x1280、1568x1056、1056x1568、1472x1088、1088x1472、1728x960、960x1728。
  • 自定义参数:长宽范围需在 512px - 2048px 之间,且必须为 32 的整数倍。

二、 三大核心优势与技术创新

  1. 架构创新:「自回归 + 扩散解码器」混合架构

GLM-Image 融合了 9B 的自回归模型7B 的 DiT(Diffusion Transformer)扩散解码器

  • 9B 自回归模型:利用其语言模型的底座优势,专注于提升对提示词(Prompt)的语义理解和画面的全局构图(即“读懂指令”)。
  • 7B DiT 扩散解码器:配合 Glyph Encoder(文本编码器),专注于还原图像的高频细节和文字笔画,有效改善了传统模型在图片中“提笔忘字”的现象(即“写对文字”)。
  1. 开源 SOTA:更擅长文字密集生成任务

在文字渲染的权威榜单中,GLM-Image 达到了开源 SOTA(State-of-the-Art)水平:

  • CVTG-2K(复杂视觉文字生成)榜单:核心考察在图像中同时生成多处文字的准确性。GLM-Image 凭借 0.9116 的 Word Accuracy(文字准确率)位列开源模型前列;在 NED(归一化编辑距离)指标上达到 0.9557,表明其错字、漏字情况极少,生成的文字与目标文字高度一致。
  • LongText-Bench(长文本渲染)榜单:考察模型在招牌、海报、PPT、对话框等 8 种文字密集场景下渲染长文本、多行文字的准确性。GLM-Image 取得了英文 0.9524、中文 0.9788 的优异成绩。
  1. 全程基于国产芯片训练

GLM-Image 实现了对国产计算生态的深度探索与验证。从早期的数据预处理到最终的大规模预训练,模型构建的全流程均在昇腾 Atlas 800T A2 设备上完成。作为首个在国产芯片上完成全流程训练的 SOTA 多模态模型,它成功验证了在国产全栈算力底座上训练高性能多模态生成模型的可行性。

三、 推荐应用场景

  • 商业海报:生成构图完整、视觉层次清晰、有整体设计感的节日海报与商业宣传图,支持文字内容的精准嵌入与稳定呈现。
  • 科普插画:绘制包含复杂逻辑关系、流程说明与文字注释的科普插画和原理示意图,清晰、准确地传达知识结构。
  • 多格图画:在生成电商展示图、故事漫画等多格图画时,能有效保持整体画风与主体形象的一致性,并显著提升多处文字生成的准确率。
  • 社交媒体图文:适用于制作封面设计与版式结构较为复杂的图文内容,支持灵活排版与多样化表达。

API 接口地址:

https://wcode.net/api/gpt/v1/images/generations

此 API 接口兼容 OpenAI 的 Images 接口规范,可直接使用 OpenAI 的 SDK 来调用。仅需替换以下配置即可:

  1. base_url 替换为 https://wcode.net/api/gpt/v1
  2. api_key 替换为从 https://platform.wcode.net 获取到的 API Key

具体可参考下方的各编程语言代码示例中的 OpenAI SDK 调用示例。

请求方法:

POST

各编程语言代码示例:

# TODO: 以下代码中的 API_KEY 需要替换,获取 API Key 入口:https://platform.wcode.net
curl --request POST 'https://wcode.net/api/gpt/v1/images/generations' \
  --header 'Content-Type: application/json' \
  --header 'Authorization: Bearer API_KEY' \
  --data '{
    "model": "z-ai/glm-image",
    "prompt": "一只可爱的小猫咪,坐在阳光明媚的窗台上,背景是蓝天白云"
  }'
import Foundation

let headers = [
  "Authorization": "Bearer API_KEY",  // TODO: 这里的 API_KEY 需要替换,获取 API Key 入口:https://platform.wcode.net
  "Content-Type": "application/json"
]
let parameters = [
  "model": "z-ai/glm-image",
  "prompt": "一只可爱的小猫咪,坐在阳光明媚的窗台上,背景是蓝天白云"
] as [String : Any]

let postData = try! JSONSerialization.data(withJSONObject: parameters, options: [])
let request = NSMutableURLRequest(url: NSURL(string: "https://wcode.net/api/gpt/v1/images/generations")! as URL,
                                        cachePolicy: .useProtocolCachePolicy,
                                    timeoutInterval: 60.0)
request.httpMethod = "POST"
request.allHTTPHeaderFields = headers
request.httpBody = postData as Data

let session = URLSession.shared
let dataTask = session.dataTask(with: request as URLRequest, completionHandler: { (data, response, error) -> Void in
  if let data = data {
    print(String(data: data, encoding: .utf8) ?? "")
  }
})
dataTask.resume()
import 'dart:convert';
import 'package:http/http.dart' as http;

Future<void> main() async {
  final response = await http.post(
    Uri.parse('https://wcode.net/api/gpt/v1/images/generations'),
    headers: {
      'Authorization': 'Bearer API_KEY',  // TODO: 这里的 API_KEY 需要替换,获取 API Key 入口:https://platform.wcode.net
      'Content-Type': 'application/json',
    },
    body: jsonEncode({
      'model': 'z-ai/glm-image',
      'prompt': '一只可爱的小猫咪,坐在阳光明媚的窗台上,背景是蓝天白云',
    }),
  );

  print(response.body);
}
require 'uri'
require 'json'
require 'net/http'

url = URI("https://wcode.net/api/gpt/v1/images/generations")

http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true

request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer API_KEY'  # TODO: 这里的 API_KEY 需要替换,获取 API Key 入口:https://platform.wcode.net
request["Content-Type"] = 'application/json'
request.body = {
  model: 'z-ai/glm-image',
  prompt: '一只可爱的小猫咪,坐在阳光明媚的窗台上,背景是蓝天白云'
}.to_json

response = http.request(request)
puts response.read_body
#[tokio::main]
pub async fn main() {
  let client = reqwest::Client::new();
  let response = client.post("https://wcode.net/api/gpt/v1/images/generations")
    .header("Authorization", "Bearer API_KEY")  // TODO: 这里的 API_KEY 需要替换,获取 API Key 入口:https://platform.wcode.net
    .header("Content-Type", "application/json")
    .json(&serde_json::json!({
      "model": "z-ai/glm-image",
      "prompt": "一只可爱的小猫咪,坐在阳光明媚的窗台上,背景是蓝天白云"
    }))
    .send()
    .await
    .unwrap();

  println!("{}", response.text().await.unwrap());
}
CURL *hnd = curl_easy_init();

curl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, "POST");
curl_easy_setopt(hnd, CURLOPT_URL, "https://wcode.net/api/gpt/v1/images/generations");

struct curl_slist *headers = NULL;
headers = curl_slist_append(headers, "Content-Type: application/json");
headers = curl_slist_append(headers, "Authorization: Bearer API_KEY");  // TODO: 这里的 API_KEY 需要替换,获取 API Key 入口:https://platform.wcode.net
curl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);

const char *data = "{\"model\":\"z-ai/glm-image\",\"prompt\":\"一只可爱的小猫咪,坐在阳光明媚的窗台上,背景是蓝天白云\"}";
curl_easy_setopt(hnd, CURLOPT_POSTFIELDS, data);

CURLcode ret = curl_easy_perform(hnd);
package main

import (
  "bytes"
  "fmt"
  "io"
  "net/http"
)

func main() {
  url := "https://wcode.net/api/gpt/v1/images/generations"
  payload := []byte(`{"model":"z-ai/glm-image","prompt":"一只可爱的小猫咪,坐在阳光明媚的窗台上,背景是蓝天白云"}`)

  req, _ := http.NewRequest("POST", url, bytes.NewBuffer(payload))
  req.Header.Add("Authorization", "Bearer API_KEY")  // TODO: 这里的 API_KEY 需要替换,获取 API Key 入口:https://platform.wcode.net
  req.Header.Set("Content-Type", "application/json")

  res, _ := http.DefaultClient.Do(req)
  defer res.Body.Close()
  respBody, _ := io.ReadAll(res.Body)

  fmt.Println(string(respBody))
}
using System.Net.Http.Json;

var client = new HttpClient();
client.DefaultRequestHeaders.Add("Authorization", "Bearer API_KEY");  // TODO: 这里的 API_KEY 需要替换,获取 API Key 入口:https://platform.wcode.net

var payload = new {
  model = "z-ai/glm-image",
  prompt = "一只可爱的小猫咪,坐在阳光明媚的窗台上,背景是蓝天白云"
};

var response = await client.PostAsJsonAsync("https://wcode.net/api/gpt/v1/images/generations", payload);
Console.WriteLine(await response.Content.ReadAsStringAsync());
var client = new RestClient("https://wcode.net/api/gpt/v1/images/generations");

var request = new RestRequest("", Method.Post);
request.AddHeader("Authorization", "Bearer API_KEY");  // TODO: 这里的 API_KEY 需要替换,获取 API Key 入口:https://platform.wcode.net
request.AddHeader("Content-Type", "application/json");
request.AddJsonBody(new {
  model = "z-ai/glm-image",
  prompt = "一只可爱的小猫咪,坐在阳光明媚的窗台上,背景是蓝天白云"
});

var response = client.Execute(request);
Console.WriteLine(response.Content);
const axios = require('axios');

let config = {
  method: 'post',
  maxBodyLength: Infinity,
  url: 'https://wcode.net/api/gpt/v1/images/generations',
  headers: {
    'Authorization': 'Bearer API_KEY',  // TODO: 这里的 API_KEY 需要替换,获取 API Key 入口:https://platform.wcode.net
    'Content-Type': 'application/json'
  },
  data: {
    model: 'z-ai/glm-image',
    prompt: '一只可爱的小猫咪,坐在阳光明媚的窗台上,背景是蓝天白云'
  }
};

axios.request(config).then((response) => {
  console.log(JSON.stringify(response.data));
}).catch((error) => {
  console.log(error);
});
OkHttpClient client = new OkHttpClient();

MediaType mediaType = MediaType.parse("application/json");
RequestBody body = RequestBody.create(mediaType, "{\"model\":\"z-ai/glm-image\",\"prompt\":\"一只可爱的小猫咪,坐在阳光明媚的窗台上,背景是蓝天白云\"}");

Request request = new Request.Builder()
  .url("https://wcode.net/api/gpt/v1/images/generations")
  .post(body)
  .addHeader("Authorization", "Bearer API_KEY")  // TODO: 这里的 API_KEY 需要替换,获取 API Key 入口:https://platform.wcode.net
  .addHeader("Content-Type", "application/json")
  .build();

Response response = client.newCall(request).execute();
$client = new \GuzzleHttp\Client();

$response = $client->post('https://wcode.net/api/gpt/v1/images/generations', [
  'headers' => [
    'Authorization' => 'Bearer API_KEY',  // TODO: 这里的 API_KEY 需要替换,获取 API Key 入口:https://platform.wcode.net
  ],
  'json' => [
    'model' => 'z-ai/glm-image',
    'prompt' => '一只可爱的小猫咪,坐在阳光明媚的窗台上,背景是蓝天白云',
  ],
]);

echo $response->getBody();
$curl = curl_init();

curl_setopt_array($curl, [
  CURLOPT_URL => "https://wcode.net/api/gpt/v1/images/generations",
  CURLOPT_RETURNTRANSFER => true,
  CURLOPT_ENCODING => "",
  CURLOPT_MAXREDIRS => 5,
  CURLOPT_TIMEOUT => 300,
  CURLOPT_CUSTOMREQUEST => "POST",
  CURLOPT_POSTFIELDS => json_encode([
    'model' => 'z-ai/glm-image',
    'prompt' => '一只可爱的小猫咪,坐在阳光明媚的窗台上,背景是蓝天白云',
  ]),
  CURLOPT_HTTPHEADER => [
    "Authorization: Bearer API_KEY",  // TODO: 这里的 API_KEY 需要替换,获取 API Key 入口:https://platform.wcode.net
    "Content-Type: application/json",
  ],
]);

$response = curl_exec($curl);
$error = curl_error($curl);

curl_close($curl);

if ($error) {
  echo "cURL Error #:" . $error;
} else {
  echo $response;
}
import requests
import json

url = "https://wcode.net/api/gpt/v1/images/generations"

headers = {
  "Authorization": "Bearer API_KEY",  # TODO: 这里的 API_KEY 需要替换,获取 API Key 入口:https://platform.wcode.net
  "Content-Type": "application/json",
}

payload = {
  "model": "z-ai/glm-image",
  "prompt": "一只可爱的小猫咪,坐在阳光明媚的窗台上,背景是蓝天白云"
}

response = requests.post(url, headers=headers, json=payload)

print(json.dumps(response.json(), indent=4, ensure_ascii=False))
from openai import OpenAI

client = OpenAI(
  base_url="https://wcode.net/api/gpt/v1",
  api_key="API_KEY"  # TODO: 这里的 API_KEY 需要替换,获取 API Key 入口:https://platform.wcode.net
)

response = client.images.generate(
  model="z-ai/glm-image",
  prompt="一只可爱的小猫咪,坐在阳光明媚的窗台上,背景是蓝天白云",
)

print(response.data[0].url)

请求参数:

重要提示:由于模型架构不同,部分参数可能仅适用于特定的模型。

model(模型 ID)

  • 参数:model

  • 必选,string

图像生成模型 ID。调用时使用模型详情页的模型 ID。

prompt(提示词)

  • 参数:prompt

  • 必选,string

描述所需生成图像内容的文本提示。

n(生成数量)

  • 参数:n

  • 可选,integer,≥ 1

  • 默认:1

单次请求生成的图片数量。

当前仅支持 n=1;传入大于 1 的值将返回 400 错误。

quality(生成质量)

  • 参数:quality

  • 可选,string

  • 取值范围:hd | standard

  • 默认:hd

控制生成图像的质量档位。

glm-image 仅支持 hdhd 生成更精细的图像;standard 适用于其他 CogView 系列模型。

size(图片尺寸)

  • 参数:size

  • 可选,string

  • 取值范围:1280x1280 | 1568x1056 | 1056x1568 | 1472x1088 | 1088x1472 | 1728x960 | 960x1728

  • 默认:1280x1280

生成图像的尺寸。

自定义尺寸时长宽均需在 1024px–2048px 范围内,且为 32 的整数倍。

response_format(图像的返回格式)

  • 参数:response_format

  • 可选,string

  • 取值范围:url | b64_json

  • 默认:url

指定生成图像的返回格式。

支持以下两种返回方式:

  • url:返回图片下载链接;链接在图片生成后 2 小时内有效,请及时下载图片。
  • b64_json:以 Base64 编码字符串的 JSON 格式返回图像数据。

以上文档为标准版 API 接口文档,可直接用于项目开发和系统调用。如果标准版 API 接口无法满足您的需求,需要定制开发 API 接口,请联系我们的 IT 技术支持工程师:

(沟通需求✅ → 确认技术方案✅ → 沟通费用与工期✅ → 开发&测试✅ → 验收交付✅ → 维护升级✅)

最受关注模型

DeepSeek V4 Pro

文本生成、深度思考

DeepSeek V4 Flash

文本生成、深度思考

Qwen 3.6 Plus

文本生成、深度思考、视觉理解

XiaoMi MiMo V2.5 Pro

文本生成、深度思考

Kimi K2.6

文本生成、深度思考、工具调用

最新发布模型

Doubao Seedream 5.0 Lite

图片生成

GLM Image

图片生成

CosyVoice V3 Plus

语音合成

DeepSeek V4 Flash

文本生成、深度思考

Qwen3 ASR Flash

语音识别

向量化模型

GLM Embedding 3

文本向量化

Qwen3 Embedding 8B

文本嵌入、文本向量化

Doubao Embedding Large Text 250515

文本向量化

Qwen Text Embedding V4

文本向量化

Qwen Text Embedding V1

文本向量化

语音识别模型

Fun ASR Flash

语音识别、方言识别

Qwen3 ASR Flash

语音识别

GLM ASR 2512

语音识别

语音合成模型

CosyVoice V3 Plus

语音合成

CosyVoice V3 Flash

语音合成

GLM TTS

语音合成