BUILD SOMETHING LOVELY

API 文档v1.0

把文字和图片,变成你应用里的下一个 SVG。

YOUR FIRST REQUEST

快速开始

整个流程很简单:创建密钥,提交任务,等待完成,再下载 SVG。文档公开可读,实际调用需要 API Key。

Base URLhttps://momovector.com/api/v1
  1. 01在 API 管理页 创建密钥,并保存为服务端环境变量 MOMOVECTOR_API_KEY。
  2. 02设置地址 MOMOVECTOR_BASE_URL;每个新任务生成一次 MOMOVECTOR_REQUEST_ID,重试时保留。
  3. 03提交后保存 job.id,每 2–3 秒查询状态,完成后携带密钥下载。
准备环境变量(先配置 MOMOVECTOR_API_KEY)
export MOMOVECTOR_BASE_URL='https://momovector.com'
# 每个新任务只生成一次;网络重试不要重新执行下面这行
export MOMOVECTOR_REQUEST_ID="$(python3 -c 'import uuid; print(uuid.uuid4())')"
提交 → 查询 → 下载
curl 'https://momovector.com/api/v1/generations' \
  -H "Authorization: Bearer $MOMOVECTOR_API_KEY" \
  -H "Content-Type: application/json" \
  -H "Idempotency-Key: $MOMOVECTOR_REQUEST_ID" \
  -d '{"mode":"text","prompt":"一只可爱的小橘猫","style":"playful"}'

# 把响应中的 job.id 设置为 JOB_ID
export JOB_ID='替换为实际任务 ID'
curl "$MOMOVECTOR_BASE_URL/api/v1/generations/$JOB_ID" \
  -H "Authorization: Bearer $MOMOVECTOR_API_KEY"

# 等待 status 为 completed 后下载
curl "$MOMOVECTOR_BASE_URL/api/v1/generations/$JOB_ID/file" \
  -H "Authorization: Bearer $MOMOVECTOR_API_KEY" \
  --output artwork.svg
示例中的响应与图片 Base64 是说明用途。当前本地演示会返回 demo: true 并使用内置素材;真实生成需要配置模型服务。

鉴权与密钥

所有数据接口都要求请求头 Authorization: Bearer <API_KEY>。密钥只能在创建时查看一次;可设置有效期,并在管理页随时撤销。

请求头
Authorization: Bearer mv_sk_...
Content-Type: application/json
Idempotency-Key: 仅提交新任务时必填
  • 默认有效期为 90 天,可选 30、90、365 天或永久。每账户最多 10 个有效密钥。
  • 密钥用于生成、查询和下载本账户作品;不能用于购买额度、删除作品或管理其他密钥。
  • 公共 API 不接受 Cookie 或 URL 参数代替 Bearer Key,面向服务端和脚本调用。
  • 正式环境使用 HTTPS;密钥存放在服务端环境变量中,不放进前端代码。
  • 撤销会阻止后续鉴权;已经提交的任务仍会完成,作品会留在原账户。

创建生成任务

POST/generationsBearer

文字与图片共用同一个接口。请求体为 JSON,成功返回 202 Accepted,扣除本次额度并创建异步任务。

字段类型 / 要求说明
modestring · 必填text:文字生成;image:图片生成。
purposestring · 选填默认 illustration;logo 表示手绘 Logo,要求 mode=image、style=minimal。
primaryColorstring · Logo 选填#RRGGBB 格式,默认 #202623,作为 Logo 主色方向。
promptstring · 按模式文字模式必填,去除首尾空白后 3–1200 字;图片模式选填,最多 1200 字。
imagestring · 图片必填PNG、JPEG 或 WebP 的 Base64 Data URL,解码后不超过 8 MiB;不接受远程图片 URL。
styleReferencesstring[] · 选填最多 2 张,支持图片 Data URL(每张 2 MiB)或公开 HTTPS 图片直链;文字、图片、Logo 均可使用。
stylestring · 必填playful(可爱贴纸)、flat(扁平插画)、minimal(极简线条)、retro(复古海报)、business(商业插画)、tech(科技未来)、3d(3D 立体)
Idempotency-Key 请求头必填,16–80 位字母、数字、下划线或连字符,建议用 UUID。相同标识和内容重试会返回原任务,不重复扣费。
JSON 请求体
{
  "mode": "text",
  "prompt": "一只可爱的小橘猫",
  "style": "playful"
}
202 · 任务已接受JSON +
202 · 任务已接受
{
  "job": {
    "id": "2a357e9c-a431-42c4-9d73-bfb2b265712a",
    "mode": "text",
    "prompt": "一只可爱的小橘猫",
    "style": "playful",
    "status": "queued",
    "cost": 2,
    "source": "api",
    "demo": false,
    "error": null,
    "createdAt": "2026-09-26T20:00:00.000Z",
    "url": null
  }
}

响应头 Location 是任务查询地址,Retry-After: 2 建议两秒后查询。202 表示任务已接受,并非已经完成。

风格参考图

POST/generationsBearer

通过 styleReferences 提供配色、线条和视觉风格参考。文字描述或 image 仍决定主体内容,Logo 主色仍优先。参考图不增加站内额度消耗。

带风格参考的文字生成
{
  "mode": "text",
  "prompt": "一只坐在月亮上的狐狸",
  "style": "flat",
  "styleReferences": [
    "https://images.example.com/style.png",
    "data:image/webp;base64,..."
  ]
}
  • 最多 2 张,可混合文件与链接。上传文件支持 PNG、JPG、WebP,解码后每张最多 2 MiB。
  • 链接需为公开可访问的 HTTPS 图片直链,不能是网页或本地地址。链接由模型服务读取,处理期间需保持可用;外部图片不会被 MomoVector 归档。
  • 修改参考内容或顺序需要新的 Idempotency-Key。相同内容重试不会重复扣费。
  • 响应 styleReferences 中 kind 为 upload 的 url 需同账户 Bearer 鉴权,可通过 GET /api/v1/generations/{id}/references/{index} 读取;kind 为 url 的地址为原始外部链接,不应向该地址发送 MomoVector API Key。
  • 上传参考图会随作品私有保存,删除作品时同时删除。Python 示例支持重复使用 --reference style.png 或 --reference https://…。

查询任务状态

GET/generations/{id}Bearer

id 为提交响应中的 job.id。只允许读取本账户任务。

queued等待开始
running正在创作
completed成功,可下载
failed失败,额度返还
字段类型 / 要求说明
id / createdAtstring任务 UUID / ISO 8601 创建时间。
mode / prompt / stylestring请求模式、描述和选用风格。
statusstringqueued、running、completed 或 failed。
costinteger本次生成消耗的额度数。
sourcestringweb 或 api,表示作品创建入口。
demobooleantrue 表示使用演示素材。
errorstring | null失败时为可读错误消息,其他情况为 null。
urlstring | null成功后为受鉴权保护的 SVG 相对地址;未完成为 null。
200 · 生成完成JSON +
200 · 生成完成
{
  "job": {
    "id": "2a357e9c-a431-42c4-9d73-bfb2b265712a",
    "mode": "text",
    "prompt": "一只可爱的小橘猫",
    "style": "playful",
    "status": "completed",
    "cost": 2,
    "source": "api",
    "demo": false,
    "error": null,
    "createdAt": "2026-09-26T20:00:00.000Z",
    "url": "/api/v1/generations/2a357e9c-a431-42c4-9d73-bfb2b265712a/file"
  }
}
请设置总体等待时限。超时后继续查询原任务,不要直接重复创建;如任务已经失败,重新创作需要新的请求标识。

下载 SVG

GET/generations/{id}/fileBearer

任务 completed 后返回 SVG 文件,类型为 image/svg+xml; charset=utf-8,附带下载文件名。此地址不是公开分享链接,每次下载都需要 Bearer Key。

下载到本地文件
curl "$MOMOVECTOR_BASE_URL/api/v1/generations/$JOB_ID/file" \
  -H "Authorization: Bearer $MOMOVECTOR_API_KEY" \
  --output artwork.svg

未成功完成返回 409 result_not_ready;不存在、已删除或不属于当前账户的作品返回 404 not_found。

获取历史记录

GET/generationsBearer

按创建时间倒序返回同一账户的网页与 API 作品,每页 24 条。作品中的 source 可区分创建入口。

字段类型 / 要求说明
offsetinteger · 可选默认 0,范围 0–100000。下一页使用响应中的 nextOffset。
分页查询
curl "$MOMOVECTOR_BASE_URL/api/v1/generations?offset=0" \
  -H "Authorization: Bearer $MOMOVECTOR_API_KEY"
200 · 历史记录JSON +
200 · 历史记录
{
  "items": [
    {
      "id": "2a357e9c-a431-42c4-9d73-bfb2b265712a",
      "mode": "text",
      "prompt": "一只可爱的小橘猫",
      "style": "playful",
      "status": "completed",
      "cost": 2,
      "source": "api",
      "demo": false,
      "error": null,
      "createdAt": "2026-09-26T20:00:00.000Z",
      "url": "/api/v1/generations/2a357e9c-a431-42c4-9d73-bfb2b265712a/file"
    }
  ],
  "hasMore": false,
  "nextOffset": 24
}

hasMore 为 false 时停止翻页。items 中每项都使用相同的 job 字段格式。

查询账户额度

GET/creditsBearer

返回可用额度、当前生成单价、演示状态和账户调用限制。网页购买的额度可直接用于 API。

查询余额
curl "$MOMOVECTOR_BASE_URL/api/v1/credits" \
  -H "Authorization: Bearer $MOMOVECTOR_API_KEY"
200 · 账户额度JSON +
200 · 账户额度
{
  "balance": 60,
  "costs": {
    "text": 2,
    "image": 1
  },
  "demo": false,
  "limits": {
    "requestsPerMinute": 60,
    "activeKeys": 10,
    "concurrentJobs": 4
  }
}

错误码与处理

所有公共 API 错误都返回 HTTP 状态码和统一 JSON。排查问题时保留 error.requestId,它与响应头 X-Request-Id 一致。

错误响应示例
{
  "error": {
    "code": "insufficient_credits",
    "message": "额度不足,请在网页购买额度后重试。",
    "requestId": "fdba965d-0c4c-439b-81d1-c2bc3db23ae0"
  }
}
HTTPcode处理建议
400invalid_request / invalid_image / invalid_reference修正请求参数、请求标识或图片内容。
401invalid_api_key检查 Bearer Key,确认未过期或撤销。
402insufficient_credits在网页补充账户额度后再试。
404not_found检查接口地址、任务 ID 和所属账户。
405method_not_allowed使用文档列出的 GET 或 POST 方法。
409idempotency_conflict同一请求标识已用于不同内容或已删除作品。新任务使用新的标识。
409result_not_ready任务尚未成功完成,请继续查询状态。
413payload_too_large缩小图片或请求体。
429rate_limited / concurrency_limit等待 Retry-After 指定的秒数,重试时保留请求标识。
500internal_error保留请求标识,进行有限次数的重试。
503service_unavailable生成服务尚未配置或暂不可用,稍后重试。

计费、限流与重试

文字生成2额度 / 次
图片生成1额度 / 次
查询与下载0额度

每账户每个 UTC 自然分钟最多 60 次公共 API 请求,所有密钥共用;提交、查询和下载都计入。OpenAPI 文档不计入。网页与 API 共用最多 4 个同时进行的生成。

字段类型 / 要求说明
X-RateLimit-Limitinteger每分钟请求上限。
X-RateLimit-Remaininginteger当前窗口内剩余请求数。
X-RateLimit-Resetinteger当前窗口结束的 Unix 秒时间戳。
Retry-Afterinteger429 时建议等待的秒数;202 时为查询等待建议。
  • 同一任务的网络重试始终使用原 Idempotency-Key 和相同内容;同一账户的所有密钥和网页共享幂等范围。
  • 同一标识被用于不同内容、已删除作品或没有指纹的旧任务时,返回 409 idempotency_conflict。
  • 遇到 429 遵守 Retry-After;遇到网络或 5xx 错误,进行有间隔、有次数上限的重试。
  • 成功接受任务后保留 job.id。生成失败自动返还额度;重新创作则使用新的请求标识。
准备好接入了?创建你的第一把 API Key