跳转到主要内容
POST

使用指南

  • 该接口接收 Base64 编码的文件数据,并上传到 PoYo AI 存储
  • 同时支持 Data URL 格式(带 MIME 类型前缀)和纯 Base64 字符串
  • 适合上传应用中已经是 Base64 编码的文件,例如 canvas 绘图或客户端处理过的图片
  • 文件可通过返回的 URL 立即访问,保留 72 小时

参数详情

  • Base64 数据格式:
    • Data URL 格式:data:image/png;base64,iVBORw0KGgo...(推荐)
    • 纯 Base64 字符串:iVBORw0KGgo...(不带 MIME 类型前缀)
    • Base64 字符串不得包含任何空白、换行符或格式字符
    • 支持的文件格式:仅 JPEG、PNG、GIF、WebP
    • 上传数量上限:每次请求 1 张图片
  • 存储配置:
    • 所有文件在存储路径中都会自动加上 temp/ 前缀
    • 如果指定 upload_path: "profile-images",实际路径为 temp/profile-images
    • 文件在上传 72 小时后过期并自动删除
  • 文件命名:
    • 如果未提供 file_name,系统会按以下格式生成唯一文件名:{timestamp}_{random}_{extension}
    • 自动生成的文件名示例:20251229130857_a8B9cD2e.png

开发者说明

  • 适合使用 Base64 上传的情况:
    • 客户端生成的图片(canvas、截图)
    • 应用中已经是 Base64 编码的图片
    • 可以接受编码开销的中小尺寸图片
  • 不适合使用 Base64 上传的情况:
    • 大图片文件(Base64 编码会使体积增加约 33%)
    • 存储在磁盘上的文件(改用文件流上传)
    • 可通过 URL 获取的文件(改用 URL 上传)
  • 确保 Base64 数据格式正确,不含任何换行或空格
  • 如需持久保存,请在 72 小时过期前将文件下载到本地

速率限制与配额

  • 速率限制:每个已认证用户、每个上传接口,在 60 秒固定窗口内最多 10 次请求
  • 超出速率限制时,会收到 429 Too Many Requests 错误
  • 固定窗口从窗口内第一次请求开始计算,同一用户的 JWT 请求和 API Key 请求共享该窗口
  • 使用指数退避重试逻辑处理速率限制错误

常见错误场景

  • Base64 编码无效:提供的 Base64 字符串无法解码
  • Data URL 格式无效:Data URL 格式错误(例如缺少 data: 前缀或 ;base64, 分隔符)
  • 不支持的文件类型:解码后的文件不是支持的图片格式(JPEG、PNG、GIF、WebP)
  • 文件数据无效:解码后的数据为空或已损坏
  • 认证错误:Authorization 请求头中的 API Key 缺失或无效

授权

Authorization
string
header
必填

所有 API 接口都需要 Bearer Token 认证。

创建 API Key:登录 PoYo,进入 仪表盘 → API 密钥(poyo.ai/zh/dashboard/api-key),点击创建 Key。

在请求头中添加:

请求体

application/json
base64_data
string
必填

Base64 编码的文件数据。

支持两种格式:

  1. Data URL 格式:data:image/png;base64,iVBORw0KGgo...

  2. 纯 Base64 字符串:iVBORw0KGgo...(不带 MIME 类型前缀)

支持的格式:JPEG、PNG、GIF、WebP

注意:Base64 字符串中不能包含任何空白字符或换行符。

示例:

"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAADUlEQVR42mNk+M9QDwADhgGAWjR9awAAAABJRU5ErkJggg=="

upload_path
string

自定义存储目录路径。

未指定时,系统会自动对文件分类。

注意:无论指定什么路径,所有文件都会以 temp/ 前缀存储。

示例:

"profile-images"

file_name
string

上传文件的自定义文件名。

未指定时,系统会按以下格式生成唯一文件名:{timestamp}_{random}_{extension}

自动生成的文件名示例:20251229130857_a8B9cD2e.png

示例:

"user-avatar.png"

响应

文件上传成功

success
boolean
必填

上传是否成功

示例:

true

code
enum<integer>
必填

业务状态码。200 表示成功,其他值都表示请求失败。请务必检查这个字段:部分参数校验错误会以 HTTP 200 返回,响应体里的 code 为 400。

  • 200:成功
  • 400:请求参数无效
  • 401:API Key 缺失或无效
  • 402:积分不足
  • 403:没有权限
  • 404:资源不存在
  • 408:请求超时
  • 429:请求频率超限
  • 500:服务器内部错误
  • 502:上游服务错误
  • 503:服务暂不可用

详见错误码。

可用选项:
200,
400,
401,
402,
403,
404,
408,
429,
500,
502,
503
示例:

200

msg
string
必填

响应消息

示例:

"File uploaded successfully"

data
object
必填