> ## Documentation Index
> Fetch the complete documentation index at: https://docs.viggle.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# 生成图片

> 用文字描述生成 1–6 张 PNG，可选最多 8 张参考图。

使用 `multipart/form-data` 提交 `prompt`，可附带参考图。接口是异步的：立即返回 `queued` 状态、ID 以 `img_` 开头的 Image 对象，之后用[查询图片](/zh/v1/api-reference/images/get)轮询，直到 `status` 为 `ready` 或 `failed`。不带参考图时为文生图，带至少一张参考图时由参考图引导生成。

<Note>
  **计费**（1 积分 = \$0.01）：`1K` 每张 **1 积分（\$0.01）**，`2K` 每张 **2 积分（\$0.02）**。一个任务共 `n` × 单价，例如 `2K`、`n=3` 为 6 积分。创建时一次性预扣，任务失败全额退回。`aspect_ratio`、`seed` 和参考图不影响价格。详见[计费与保留期限](/zh/v1/pricing#viggle-image)。
</Note>

## 请求参数

使用 `multipart/form-data`。

| 参数 | 类型 | 必填 | 默认值 | 说明 |
| - | - | :-: | - | - |
| `prompt` | string | 是 | — | 描述文字，最多 4000 个字符（按 Unicode 字符计，中文一字算一个），不能全是空白。 |
| `model` | string | 否 | `qwen` | 目前只支持 `qwen`。 |
| `aspect_ratio` | string | 否 | `1:1` | `1:1`、`16:9`、`9:16`、`4:3`、`3:4`、`3:2`、`2:3`。与 `resolution` 一起决定输出尺寸，见[输出尺寸](#output-sizes)。 |
| `resolution` | string | 否 | `1K` | `1K` 或 `2K`，不区分大小写。决定输出尺寸档位和单价：`1K` 每张 1 积分，`2K` 每张 2 积分。 |
| `n` | integer | 否 | `1` | 生成张数，1–6。 |
| `seed` | integer | 否 | 随机 | 0–2147483647。第 i 张（从 0 计）使用 `(seed + i) mod 2147483648`；不传则服务端随机选择。每张图都会返回实际使用的 seed。 |
| `reference_image` | file，可重复 | 否 | — | 参考图上传，单张不超过 24 MiB。重复该字段可上传多张。 |
| `reference_image_url` | string，可重复 | 否 | — | 可公开访问的 `http(s)` 图片地址，限制同上。重复该字段可传多个。 |

两种参考图可任意混用，合计最多 **8 张**。模型先收到上传的文件，再收到 URL，各自保持发送顺序。只要带了参考图，`2K` 就会变成较小的一档，见下一节。

<a id="reference-image-limits" />

### 参考图限制

* 单张不超过 24 MiB，长边与短边之比不超过 8。
* 支持 JPEG、PNG、WebP、GIF、BMP、TIFF、HEIC。
* 长边 ≥ 3840 或短边 ≥ 2160 的图会先等比缩小到 1920 × 1080 以内（竖图为 1080 × 1920）。
* `reference_image_url` 必须可公开访问，在创建请求处理期间下载。

<a id="output-sizes" />

## 输出尺寸

输出尺寸由 `aspect_ratio` 和 `resolution` 唯一确定，都是模型的固定尺寸档，请求什么就得到什么。单位：像素（宽 × 高）。

| `aspect_ratio` | `1K` | `2K`（文生图） | `2K`（带参考图） |
| - | - | - | - |
| `1:1` | 1024 × 1024 | 2048 × 2048 | 1536 × 1536 |
| `16:9` | 1376 × 768 | 2720 × 1536 | 2048 × 1152 |
| `9:16` | 768 × 1376 | 1536 × 2720 | 1152 × 2048 |
| `4:3` | 1184 × 896 | 2368 × 1760 | 1760 × 1344 |
| `3:4` | 896 × 1184 | 1760 × 2368 | 1344 × 1760 |
| `3:2` | 1248 × 832 | 2496 × 1664 | 1888 × 1248 |
| `2:3` | 832 × 1248 | 1664 × 2496 | 1248 × 1888 |

带参考图时 `1K` 与文生图相同；`2K` 文生图约为 2048² 像素面积，带参考图约为 1536²，价格不变。响应里每张图的 `width` / `height` 就是实际尺寸。

## 响应参数

返回 `200 OK` 和 `queued` 状态的 Image 对象，结构与[查询图片](/zh/v1/api-reference/images/get)相同。此时 `progress` 为 `0`，`images` 为空，`completed_at` 和 `error` 为 `null`。

```json theme={null}
{
  "id": "img_b16a190d-2d44-41a0-8056-ef68183c3b9e",
  "status": "queued",
  "model": "qwen",
  "progress": 0,
  "images": [],
  "created_at": "2026-10-12T08:20:00Z",
  "completed_at": null,
  "error": null
}
```

## 常见错误

| 错误 | 原因 |
| - | - |
| `400 INVALID_REQUEST` | 参数不合法（`message` 说明是哪一项），或请求体不是 `multipart/form-data`。此时不会创建任务，也不会上传任何文件。 |
| `401 UNAUTHENTICATED` | 缺少或无效的 API 密钥。 |
| `402 INSUFFICIENT_CREDITS` | 余额不足以支付 `n` × 单价，`message` 给出所需积分。任务不会开始生成。 |
| `429 RATE_LIMITED` | 同一密钥并发创建过多，稍后重试。 |
| `500 INTERNAL_ERROR` | 服务端内部错误，可重试。 |
| `503 SERVICE_BUSY` | 服务暂时不可用，可重试。 |

HTTP 错误使用统一结构 `{"error": {"code", "message", "retryable", "request_id", "details", "remediation"}}`，详见[错误与恢复](/zh/v1/production/errors)。任务受理后再失败时，失败原因在 Image 对象的 `error` 字段中，见[查询图片](/zh/v1/api-reference/images/get#status-and-errors)。

<Note>
  请带上自己的 `User-Agent`。实测 Python `urllib` 的默认 `User-Agent` 会被 `apis.viggle.ai` 前端拦截，返回非 JSON 的错误页。

  即使不带参考图，请求体也必须是 `multipart/form-data`，`application/x-www-form-urlencoded` 会返回 `400`。使用 Python `requests` 时，请像下方示例一样通过 `files=` 传字段，不要只用 `data=`。
</Note>

## 示例

<CodeGroup>
  ```bash cURL theme={null}
  curl -X POST https://apis.viggle.ai/v1/images \
    -H "Authorization: Bearer $VIGGLE_API_KEY" \
    -F prompt="A watercolor fox reading a book under a maple tree" \
    -F aspect_ratio=16:9 \
    -F resolution=1K \
    -F n=2
  ```

  ```python Python theme={null}
  import os, requests
  fields = {"prompt": "A watercolor fox reading a book under a maple tree", "aspect_ratio": "16:9", "resolution": "1K", "n": "2"}
  response = requests.post(
      "https://apis.viggle.ai/v1/images",
      headers={"Authorization": f"Bearer {os.environ['VIGGLE_API_KEY']}"},
      files={name: (None, value) for name, value in fields.items()},  # 强制使用 multipart/form-data
  )
  response.raise_for_status()
  image = response.json()
  ```

  ```javascript JavaScript theme={null}
  const form = new FormData();
  form.append("prompt", "A watercolor fox reading a book under a maple tree");
  form.append("aspect_ratio", "16:9");
  form.append("resolution", "1K");
  form.append("n", "2");
  const response = await fetch("https://apis.viggle.ai/v1/images", {
    method: "POST",
    headers: { Authorization: `Bearer ${process.env.VIGGLE_API_KEY}` },
    body: form,
  });
  const image = await response.json();
  ```

  ```go Go theme={null}
  body := &bytes.Buffer{}; w := multipart.NewWriter(body)
  w.WriteField("prompt", "A watercolor fox reading a book under a maple tree"); w.WriteField("aspect_ratio", "16:9"); w.WriteField("resolution", "1K"); w.WriteField("n", "2"); w.Close()
  req, _ := http.NewRequest("POST", "https://apis.viggle.ai/v1/images", body)
  req.Header.Set("Authorization", "Bearer "+os.Getenv("VIGGLE_API_KEY")); req.Header.Set("Content-Type", w.FormDataContentType())
  resp, err := http.DefaultClient.Do(req); if err != nil { panic(err) }; defer resp.Body.Close()
  ```
</CodeGroup>

### 带参考图

上传文件和给 URL 可以混用，两个字段都可以重复：

<CodeGroup>
  ```bash cURL theme={null}
  curl -X POST https://apis.viggle.ai/v1/images \
    -H "Authorization: Bearer $VIGGLE_API_KEY" \
    -F prompt="The same fox, now in winter, snow falling" \
    -F aspect_ratio=1:1 \
    -F resolution=2K \
    -F reference_image=@fox.png \
    -F reference_image_url=https://example.com/style.jpg
  ```

  ```python Python theme={null}
  import os, requests
  with open("fox.png", "rb") as fox:
      response = requests.post(
          "https://apis.viggle.ai/v1/images",
          headers={"Authorization": f"Bearer {os.environ['VIGGLE_API_KEY']}"},
          data={
              "prompt": "The same fox, now in winter, snow falling",
              "aspect_ratio": "1:1",
              "resolution": "2K",
              "reference_image_url": ["https://example.com/style.jpg"],
          },
          files=[("reference_image", ("fox.png", fox, "image/png"))],
      )
  response.raise_for_status()
  image = response.json()
  ```

  ```javascript JavaScript theme={null}
  import { openAsBlob } from "node:fs";

  const form = new FormData();
  form.append("prompt", "The same fox, now in winter, snow falling");
  form.append("aspect_ratio", "1:1");
  form.append("resolution", "2K");
  form.append("reference_image", await openAsBlob("fox.png"), "fox.png");
  form.append("reference_image_url", "https://example.com/style.jpg");
  const response = await fetch("https://apis.viggle.ai/v1/images", {
    method: "POST",
    headers: { Authorization: `Bearer ${process.env.VIGGLE_API_KEY}` },
    body: form,
  });
  const image = await response.json();
  ```
</CodeGroup>

### `@viggle/sdk`

需使用包含 `images` 资源的 `@viggle/sdk` 版本。

```javascript theme={null}
import { Viggle } from "@viggle/sdk";

const viggle = new Viggle({ apiKey: process.env.VIGGLE_API_KEY! });
const image = await viggle.images.create({
  prompt: "A watercolor fox reading a book under a maple tree",
  aspectRatio: "16:9",
  resolution: "1K",
  n: 2,
});
// image.id、image.status（"queued"）；之后用 viggle.images.get(image.id) 轮询
```

## 下一步

使用返回的 `id` 调用[查询图片](/zh/v1/api-reference/images/get)轮询结果。

<CardGroup cols={2}>
  <Card title="快速入门：Viggle Image" icon="rocket" href="/zh/v1/guides/quickstart-image">
    完整的创建、轮询和下载流程。
  </Card>

  <Card title="查询图片" icon="image" href="/zh/v1/api-reference/images/get">
    查看任务状态、图片链接、尺寸和 seed。
  </Card>
</CardGroup>


## OpenAPI

````yaml zh/openapi.yaml POST /v1/images
openapi: 3.0.3
info:
  title: Viggle API
  description: 使用 AI 生成角色动画视频。
  version: 2.0.0
  contact:
    name: Viggle Support
    url: https://viggle.ai
servers:
  - url: https://apis.viggle.ai
    description: 生产服务器
security:
  - bearerAuth: []
tags:
  - name: Renders
    description: 准备输入、创建渲染、观察进度并获取结果。
  - name: Credits
    description: 查询当前调用者可用的积分余额。
  - name: Characters
    description: 创建、列出、查询和删除可复用角色。type 决定是否同时提取 3D vsplat，就绪后通过导出接口获取下载链接。
  - name: Motions
    description: 创建、列出、查询和删除可复用动作，也可从官方模板导入。type 决定是否提取或生成 3D 动画，就绪后通过导出接口获取下载链接。
  - name: Videos
    description: 生成 MiniMax H3 视频（vid_）或角色动画视频（anim_），并统一查询调用者的 H3、角色动画及角色动作渲染（render_）结果。
  - name: Images
    description: Viggle Image：用 qwen 模型从文字描述生成 1–6 张 PNG（img_），可选最多 8 张参考图，并按 ID 查询结果。
paths:
  /v1/images:
    post:
      tags:
        - Images
      summary: 生成图片
      description: >-
        用 qwen 模型从 `prompt` 异步生成 `n` 张（1–6）PNG，可选最多 8 张参考图。`aspect_ratio` 与
        `resolution` 决定输出尺寸（见 CreateImageForm）。返回 `200` 和 queued 状态的 Image，之后轮询
        GET /v1/images/{image_id} 直到 ready 或 failed。1K 每张 1 积分，2K 每张 2
        积分；创建时一次性预扣 `n` × 单价，余额不足返回 `402`，任务失败全额退回。返回 `400` 时不会创建任务，也不会上传任何文件。
      operationId: createImage
      parameters:
        - $ref: '#/components/parameters/RequestId'
        - $ref: '#/components/parameters/SourceChannel'
      requestBody:
        required: true
        content:
          multipart/form-data:
            schema:
              $ref: '#/components/schemas/CreateImageForm'
      responses:
        '200':
          description: 图片生成任务已受理并进入排队。
          headers:
            X-Request-Id:
              $ref: '#/components/headers/RequestId'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Image'
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/V1Unauthorized'
        '402':
          $ref: '#/components/responses/PaymentRequired'
        '403':
          $ref: '#/components/responses/Forbidden'
        '429':
          $ref: '#/components/responses/RateLimited'
        '500':
          $ref: '#/components/responses/InternalServerError'
        '503':
          $ref: '#/components/responses/ServiceUnavailable'
components:
  parameters:
    RequestId:
      name: X-Request-Id
      in: header
      required: false
      description: 可选的调用者自定义关联 ID，最长 128 字符。服务会在响应头返回实际使用的值，便于追踪和支持排查。
      schema:
        type: string
        minLength: 1
        maxLength: 128
    SourceChannel:
      name: X-Viggle-Source
      in: header
      required: false
      description: 可选来源标签，最长 128 字符，用于识别 SDK、集成、产品入口或内部工作流。
      schema:
        type: string
        minLength: 1
        maxLength: 128
  schemas:
    CreateImageForm:
      description: >
        POST /v1/images 的请求体，仅支持
        `multipart/form-data`。不带参考图时为文生图，带至少一张参考图时为参考图生成。`aspect_ratio` 与
        `resolution` 共同选定模型的一个固定输出尺寸（宽 × 高，单位像素）；带参考图时，`2K` 会变成较小的一档：


        | aspect_ratio | 1K | 2K（文生图） | 2K（带参考图） |

        | --- | --- | --- | --- |

        | 1:1 | 1024×1024 | 2048×2048 | 1536×1536 |

        | 16:9 | 1376×768 | 2720×1536 | 2048×1152 |

        | 9:16 | 768×1376 | 1536×2720 | 1152×2048 |

        | 4:3 | 1184×896 | 2368×1760 | 1760×1344 |

        | 3:4 | 896×1184 | 1760×2368 | 1344×1760 |

        | 3:2 | 1248×832 | 2496×1664 | 1888×1248 |

        | 2:3 | 832×1248 | 1664×2496 | 1248×1888 |


        `reference_image` 上传与 `reference_image_url` 地址可任意混用，合计最多 8
        张。模型先收到上传的文件，再收到 URL，各自保持发送顺序。
      type: object
      required:
        - prompt
      properties:
        prompt:
          type: string
          minLength: 1
          maxLength: 4000
          description: 描述文字，最多 4000 个字符（按 Unicode 字符计，中文一字算一个），不能全是空白。
        model:
          type: string
          enum:
            - qwen
          default: qwen
          description: 图片模型，目前只支持 `qwen`。
        aspect_ratio:
          type: string
          enum:
            - '1:1'
            - '16:9'
            - '9:16'
            - '4:3'
            - '3:4'
            - '3:2'
            - '2:3'
          default: '1:1'
          description: 输出宽高比，与 `resolution` 一起决定输出尺寸。
        resolution:
          type: string
          enum:
            - 1K
            - 2K
          default: 1K
          description: >-
            输出尺寸档位，不区分大小写；同时决定单价，`1K` 每张 1 积分，`2K` 每张 2 积分。带参考图时 `2K` 约为 1536²
            像素面积，文生图约为 2048²。
        'n':
          type: integer
          minimum: 1
          maximum: 6
          default: 1
          description: 生成张数。任务预扣 `n` × 单价。
        seed:
          type: integer
          format: int64
          minimum: 0
          maximum: 2147483647
          description: >-
            第 i 张（从 0 计）使用 `(seed + i) mod 2147483648`。不传则服务端随机选择，每张图都会返回实际使用的
            seed。
        reference_image:
          type: array
          maxItems: 8
          items:
            type: string
            format: binary
          description: >-
            参考图上传，可重复该字段。单张不超过 24 MiB，长边与短边之比不超过 8；支持
            JPEG、PNG、WebP、GIF、BMP、TIFF、HEIC。与 `reference_image_url` 合计最多 8 张。
        reference_image_url:
          type: array
          maxItems: 8
          items:
            type: string
            format: uri
          description: >-
            可公开访问的 http(s) 参考图地址，在创建请求处理期间下载，可重复该字段。限制与 `reference_image`
            相同，并计入同一个 8 张上限。
    Image:
      description: >-
        图片生成任务（img_ 前缀），创建接口与查询接口返回同一结构。状态只会向前推进：queued → processing → ready 或
        failed，不会出现 cancelled。ready 前 images 始终为空，ready 后按请求顺序列出全部 n 张。一个任务要么 n
        张全部生成，要么整体失败，不会只返回部分图片。
      type: object
      additionalProperties: false
      required:
        - id
        - status
        - model
        - progress
        - images
        - created_at
        - completed_at
        - error
      properties:
        id:
          type: string
          minLength: 1
          description: 图片任务公开 ID，以 `img_` 开头。
        status:
          type: string
          enum:
            - queued
            - processing
            - ready
            - failed
          description: 任务状态，`ready` 和 `failed` 为终态。
        model:
          type: string
          description: 使用的模型，目前为 `qwen`。
        progress:
          type: integer
          nullable: true
          minimum: 0
          maximum: 100
          description: >-
            已完成张数占比：queued 为 `0`，processing 为 0–99，ready 为 `100`，failed 为
            `null`。
        images:
          type: array
          description: ready 前为空；ready 后按请求顺序列出全部 n 张。
          items:
            $ref: '#/components/schemas/GeneratedImage'
        created_at:
          type: string
          format: date-time
          nullable: true
          description: 创建时间，RFC 3339。
        completed_at:
          type: string
          format: date-time
          nullable: true
          description: 结束时间，ready 或 failed 时有值，之前为 `null`。
        error:
          type: object
          nullable: true
          description: >-
            失败原因，只在 `status` 为 `failed` 时有值。`code` 为
            `SERVICE_BUSY`（可重试：生成服务繁忙或暂时不可用，或任务 15
            分钟内未完成）、`TASK_FAILED`（可重试：其他生成或上传失败）或
            `INVALID_REQUEST`（不可重试：模型拒绝了请求，例如参考图无法使用）。
          allOf:
            - $ref: '#/components/schemas/ErrorBody'
    GeneratedImage:
      type: object
      additionalProperties: false
      required:
        - url
        - width
        - height
        - seed
      properties:
        url:
          type: string
          format: uri
          nullable: true
          description: PNG 的签名下载链接，1 小时内有效，过期后再查询一次任务即可拿到新链接。任务结束 24 小时后文件被删除，此时为 `null`。
        width:
          type: integer
          minimum: 1
          description: 实际宽度（像素）。
        height:
          type: integer
          minimum: 1
          description: 实际高度（像素）。
        seed:
          type: integer
          format: int64
          minimum: 0
          description: 这张图实际使用的 seed。
    ErrorBody:
      type: object
      additionalProperties: false
      required:
        - code
        - message
        - retryable
        - request_id
        - details
        - remediation
      properties:
        code:
          description: 恢复方法
          allOf:
            - $ref: '#/components/schemas/ErrorCode'
        message:
          type: string
          description: 供人阅读的描述，不要解析其文本做逻辑判断。
        retryable:
          type: boolean
          description: 重试相同请求是否可能成功。
        request_id:
          type: string
          description: 用于关联 Viggle 日志与支持排查。仅当异步工作进程无法恢复原请求 ID 时为 `null`。
        details:
          type: object
          description: 补充结构化信息，可能为空。
          additionalProperties: true
        remediation:
          description: >-
            `{action, retry_after_ms}`，表示下一步操作。除非建议定时重试，否则 `retry_after_ms` 为
            `null`。
          allOf:
            - $ref: '#/components/schemas/ErrorRemediation'
    ErrorResponse:
      type: object
      additionalProperties: false
      required:
        - error
      properties:
        error:
          description: 草稿流程的顶层错误，包含稳定错误码、说明、重试建议、关联 ID 和错误详情。
          allOf:
            - $ref: '#/components/schemas/ErrorBody'
    ErrorCode:
      description: 草稿渲染流程的错误码集合。资源操作将相应错误映射为 ResourceError 说明的小写下划线形式。
      type: string
      enum:
        - UNAUTHENTICATED
        - INVALID_CREDENTIAL
        - FORBIDDEN
        - INVALID_REQUEST
        - INVALID_CHARACTER
        - INVALID_MOTION
        - UNSUPPORTED_MEDIA
        - CONTENT_POLICY_VIOLATION
        - UPLOAD_REQUIRED
        - UPLOAD_MISMATCH
        - UPLOAD_EXPIRED
        - DRAFT_NOT_FOUND
        - DRAFT_ALREADY_CONSUMED
        - RENDER_NOT_FOUND
        - RENDER_NOT_CANCELLABLE
        - CHARACTER_NOT_FOUND
        - MOTION_NOT_FOUND
        - MOTION_NOT_READY
        - MOTION_TEMPLATE_NOT_FOUND
        - AVATAR_NOT_FOUND
        - ANIMATION_NOT_FOUND
        - EXTRACTION_UNAVAILABLE
        - EXTRACTION_FAILED
        - IDEMPOTENCY_KEY_REUSED
        - INSUFFICIENT_CREDITS
        - RATE_LIMITED
        - SERVICE_BUSY
        - INTERNAL_ERROR
        - NOT_FOUND
        - TASK_FAILED
    ErrorRemediation:
      type: object
      additionalProperties: false
      required:
        - action
        - retry_after_ms
      properties:
        action:
          type: string
          description: 建议的下一步操作，供程序或人工读取，例如稍后重试、重新上传或修正输入。
        retry_after_ms:
          type: integer
          description: 建议重试等待的毫秒数；无需定时重试时为 null。
          nullable: true
          format: int64
          minimum: 0
  headers:
    RequestId:
      description: 用于支持排查和追踪的稳定请求 ID。
      schema:
        type: string
  responses:
    BadRequest:
      description: 请求失败，详情见错误响应。
      headers:
        X-Request-Id:
          $ref: '#/components/headers/RequestId'
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorResponse'
    V1Unauthorized:
      description: 请求失败，详情见错误响应。
      headers:
        WWW-Authenticate:
          schema:
            type: string
        X-Request-Id:
          $ref: '#/components/headers/RequestId'
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorResponse'
    PaymentRequired:
      description: 请求失败，详情见错误响应。
      headers:
        X-Request-Id:
          $ref: '#/components/headers/RequestId'
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorResponse'
    Forbidden:
      description: 请求失败，详情见错误响应。
      headers:
        X-Request-Id:
          $ref: '#/components/headers/RequestId'
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorResponse'
    RateLimited:
      description: 请求失败，详情见错误响应。
      headers:
        Retry-After:
          schema:
            type: integer
            minimum: 0
        X-Request-Id:
          $ref: '#/components/headers/RequestId'
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorResponse'
    InternalServerError:
      description: 请求失败，详情见错误响应。
      headers:
        X-Request-Id:
          $ref: '#/components/headers/RequestId'
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorResponse'
    ServiceUnavailable:
      description: 请求失败，详情见错误响应。
      headers:
        Retry-After:
          schema:
            type: integer
            minimum: 0
        X-Request-Id:
          $ref: '#/components/headers/RequestId'
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorResponse'
  securitySchemes:
    bearerAuth:
      type: http
      scheme: bearer
      bearerFormat: API key or OAuth access token
      description: 服务端 SDK 使用项目 API 密钥，Remote MCP 使用 OAuth 访问令牌。不要在浏览器代码中暴露项目密钥。

````

This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.