跳转到内容
Foldbun Stack文档
EN获取 API 密钥即将推出

上传图片,获得句柄

POST
/v1/images
curl --request POST \
--url https://api.stack.foldbun.com/v1/images \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: multipart/form-data' \
--form file=@file

文件可以用 multipart/form-data(字段名 file)发送,也可以作为原始请求体发送,并将 Content-Type: image/jpeg | image/png | image/webp 作为请求头。图片会被清理(见概览);句柄按内容寻址,因此重复上传同一张图片会返回相同的 id(HTTP 状态码为 200 而不是 201)。 免费。不能用于探测其他账户的图片:句柄只在所属账户内解析。 接受的格式和大小限制见概览。

图片文件,以 multipart 表单或原始请求体的形式发送。

object
file
必填

图片文件:JPEG、PNG 或静态 WebP。

string format: binary

该图片此前已存储;返回其已有的句柄。

媒体类型application/json

已存储的图片(已清理,未缩放)。请求和响应中的坐标均为摆正后的原图的像素坐标。

object
id
必填

图片句柄:img_ 加清理后字节的 SHA-256。

string
/^img_[0-9a-f]{64}$/
width
必填

摆正后的原图的宽度,单位为像素(已应用 EXIF 方向)。

integer
height
必填

摆正后的原图的高度,单位为像素(已应用 EXIF 方向)。

integer
bytes
必填

已存储图片的大小,单位为字节。

integer
contentType
必填

已存储图片的媒体类型(与上传的类型相同)。

string
允许的值: image/jpeg image/png image/webp

示例

{
"id": "img_3b1f0c5e9a7d42c8b6e1f0a9d8c7b6a5f4e3d2c1b0a998877665544332211000",
"width": 1008,
"height": 672,
"bytes": 184233,
"contentType": "image/jpeg"
}

图片已清理并存储;返回新的句柄。

媒体类型application/json

已存储的图片(已清理,未缩放)。请求和响应中的坐标均为摆正后的原图的像素坐标。

object
id
必填

图片句柄:img_ 加清理后字节的 SHA-256。

string
/^img_[0-9a-f]{64}$/
width
必填

摆正后的原图的宽度,单位为像素(已应用 EXIF 方向)。

integer
height
必填

摆正后的原图的高度,单位为像素(已应用 EXIF 方向)。

integer
bytes
必填

已存储图片的大小,单位为字节。

integer
contentType
必填

已存储图片的媒体类型(与上传的类型相同)。

string
允许的值: image/jpeg image/png image/webp

示例

{
"contentType": "image/jpeg"
}

错误信封。HTTP 状态码与 code 对应;只有 retryable: true 的错误才值得原样重复。失败的调用不收费。

状态码 错误码
400 invalid_request, invalid_image(图片通过了上传检查,但无法解码), unsupported
401 unauthorized
402 insufficient_balance
403 model_locked
404 not_found, image_not_found
409 idempotency_conflict, request_in_progress
413 payload_too_large
429 rate_limited, daily_limit_reached, too_many_batches(均带有 Retry-After)
500 internal_error
502 upstream_error, bad_model_output
503 model_unavailable, model_busy, unavailable(均带有 Retry-After)
504 upstream_timeout

model_unavailable 也用于唯一提供该模型的 GPU 节点短时失联:失联后约一分钟内,交互式调用立即返回该错误并带较短的 Retry-After(5 秒),同步和批量调用则继续排队到各自的截止时间,不会直接失败。

各错误码的含义和重试建议:错误。

媒体类型application/json

所有错误响应的响应体。

object
error
必填

错误。

object
code
必填

稳定的、机器可读的错误码。应依据该字段而不是 message 判断。与 HTTP 状态码的对应关系见响应部分。

string
message
必填

面向人的说明。措辞可能变化。

string
retryable
必填

为 true 时,原样重复同一请求有可能成功。

boolean
retryAfterMs
必填

建议重试前等待的毫秒数;无建议时为 0。

integer

示例

{
"error": {
"code": "model_busy",
"message": "model sam3 is busy; retry shortly",
"retryable": true,
"retryAfterMs": 5000
}
}
Retry-After
integer
>= 1

重试前须等待的整秒数;出现在 429 和 503 响应中。

X-Request-Id
string
/^[0-9a-f]{16}$/

服务器生成的请求 ID(16 个十六进制字符);出现在每个响应中。联系支持时应提供该值。