Skip to content

图片生成教程

FoxAPI 支持 gpt-image-2 模型,兼容 OpenAI Images API 格式。

接口地址

POST https://foxapi.chat/v1/images/generations

前置条件

  1. 拥有一个 FoxAPI Key(获取教程
  2. Key 分组建议选 codex专用(0.2x 倍率,最便宜)

基本用法

curl

bash
curl https://foxapi.chat/v1/images/generations \
  -H "Authorization: Bearer sk-你的Key" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "gpt-image-2",
    "prompt": "一只橘猫在阳光下打盹,水彩画风格",
    "size": "1024x1024"
  }'

Python

python
from openai import OpenAI

client = OpenAI(
    api_key="sk-你的Key",
    base_url="https://foxapi.chat/v1"
)

response = client.images.generate(
    model="gpt-image-2",
    prompt="一只橘猫在阳光下打盹,水彩画风格",
    size="1024x1024"
)

# 返回的是 data URL(base64 内联)
print(response.data[0].url)

Node.js

javascript
import OpenAI from 'openai';

const client = new OpenAI({
  apiKey: 'sk-你的Key',
  baseURL: 'https://foxapi.chat/v1',
});

const response = await client.images.generate({
  model: 'gpt-image-2',
  prompt: '一只橘猫在阳光下打盹,水彩画风格',
  size: '1024x1024',
});

console.log(response.data[0].url);

PHP

php
<?php
$ch = curl_init('https://foxapi.chat/v1/images/generations');

curl_setopt_array($ch, [
    CURLOPT_POST           => true,
    CURLOPT_POSTFIELDS     => json_encode([
        'model'  => 'gpt-image-2',
        'prompt' => '一只橘猫在阳光下打盹,水彩画风格',
        'size'   => '1024x1024',
    ]),
    CURLOPT_HTTPHEADER     => [
        'Authorization: Bearer sk-你的Key',
        'Content-Type: application/json',
    ],
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_TIMEOUT        => 300,
]);

$response = curl_exec($ch);
curl_close($ch);

$data = json_decode($response, true);
echo $data['data'][0]['url']; // data:image/png;base64,...

参数说明

参数类型必填默认值说明
modelstringgpt-image-2模型名称
promptstring图片描述,越详细效果越好
ninteger1生成数量,详见下方说明
sizestring1024x1024尺寸:1024x10241024x15361536x1024
qualitystringstandard质量:standardhd
response_formatstringurl返回格式:urlb64_json详见下方说明

返回示例

json
{
  "created": 1749000000,
  "data": [
    {
      "url": "data:image/png;base64,iVBORw0KGgo..."
    }
  ]
}

⚠️ 重要说明

n 参数(生成数量)

上游限制

上游 API 不支持 n>1,无论传多少都只返回 1 张图片。

需要多张图片时,请发多次请求并行生成

python
import asyncio
from openai import AsyncOpenAI

async def generate_multiple(prompt, count):
    client = AsyncOpenAI(
        api_key="sk-你的Key",
        base_url="https://foxapi.chat/v1"
    )
    tasks = [
        client.images.generate(model="gpt-image-2", prompt=prompt, size="1024x1024")
        for _ in range(count)
    ]
    results = await asyncio.gather(*tasks)
    return [r.data[0].url for r in results]

# 生成 4 张图
urls = asyncio.run(generate_multiple("一只橘猫在打盹", 4))
php
<?php
// PHP 并行请求示例(curl_multi)
$apiKey = 'sk-你的Key';
$prompt = '一只橘猫在打盹';
$count = 4;

$mh = curl_multi_init();
$chs = [];

for ($i = 0; $i < $count; $i++) {
    $ch = curl_init('https://foxapi.chat/v1/images/generations');
    curl_setopt_array($ch, [
        CURLOPT_POST           => true,
        CURLOPT_POSTFIELDS     => json_encode([
            'model'  => 'gpt-image-2',
            'prompt' => $prompt,
            'size'   => '1024x1024',
        ]),
        CURLOPT_HTTPHEADER     => [
            "Authorization: Bearer $apiKey",
            'Content-Type: application/json',
        ],
        CURLOPT_RETURNTRANSFER => true,
        CURLOPT_TIMEOUT        => 300,
    ]);
    curl_multi_add_handle($mh, $ch);
    $chs[] = $ch;
}

// 并行执行
$running = null;
do {
    curl_multi_exec($mh, $running);
    curl_multi_select($mh);
} while ($running > 0);

// 收集结果
$results = [];
foreach ($chs as $ch) {
    $data = json_decode(curl_multi_getcontent($ch), true);
    $results[] = $data['data'][0]['url'];
    curl_multi_remove_handle($mh, $ch);
    curl_close($ch);
}
curl_multi_close($mh);

// $results 包含 4 张图片的 data URL
foreach ($results as $i => $url) {
    echo "图片 $i: " . substr($url, 0, 50) . "...\n";
}

💡 并行发 4 个请求,总耗时和发 1 个请求差不多(都是 30-90 秒),不会更慢。

response_format(返回格式)

返回格式说明

请求 response_format: "url" 时,返回的 url 字段值是 data URLdata:image/png;base64,...),不是远程图片链接。

这是因为上游 API 返回的就是 base64 编码的图片数据。

如何使用 data URL:

html
<!-- 浏览器直接显示 -->
<img src="data:image/png;base64,iVBORw0KGgo..." />
python
import base64

# 从 data URL 保存为文件
data_url = response.data[0].url
header, b64data = data_url.split(',', 1)
with open('output.png', 'wb') as f:
    f.write(base64.b64decode(b64data))
php
<?php
// PHP 从 data URL 保存为文件
$dataUrl = $data['data'][0]['url'];
$b64data = explode(',', $dataUrl, 2)[1];
file_put_contents('output.png', base64_decode($b64data));

如果请求 response_format: "b64_json",返回格式略有不同:

json
{
  "data": [
    {
      "b64_json": "iVBORw0KGgo..."
    }
  ]
}

两种格式本质一样,都是 base64,只是 key 名不同。建议直接用默认的 url 格式。

计费说明

gpt-image-2 按次计费,每次消耗约 $0.04(codex专用分组约 $0.014)。

💡 省钱技巧

使用 codex专用 分组的 Key,倍率 0.2x,生图成本最低。

常见问题

提示 "model not found"

检查 Key 分组是否正确。codex专用 和 ChatGPT 分组都可以调用 gpt-image-2

请求超时 (504)

生图需要 30-90 秒,系统会自动重试。如果多次超时,可能是上游繁忙,稍后再试。

返回空白图片

可能是 prompt 触发了内容安全策略,换一个描述试试。

提示余额不足 (403)

充值 后再试。

n=2 但只返回 1 张

上游限制,不支持 n>1。请发多次请求并行生成。详见上方「n 参数」说明。

url 返回的是 base64 不是链接

这是正常行为。返回的 url 是 data URL 格式(data:image/png;base64,...),可以直接在浏览器 <img> 标签中使用。详见上方「response_format」说明。

© 2026 FoxAPI. All rights reserved.