fshy

fshy / Storage

WeChat Official Account

qq.com · Storage · 1 record · JSON

WeChat Official Account — uploadimg (图文消息图片, the uncapped endpoint) Storage

fails: egressanonymousno cardRper-object-cap

developers.weixin.qq.com/doc/service/api/material/permanent/ · messaging · storage/wechat-official-account-uploadimg · JSON · compare

Free tierNO documented count cap. The docs state explicitly: "该接口所上传的图片,不占用公众号的素材库中图片数量的100000个的限制" — images uploaded via this endpoint do NOT count against the 100,000-image library limit. Per-file cap 1 MB, JPG/PNG only.
unit MB; metered on unstated
Pricenone stated
Per-object capPer-file cap 1 MB (1000000 bytes)
Retention| Images are permanent in practice (they must survive in published articles forever), but the service is tuned for article inline images, so bulk non-image binary upload is impossible and a hotlink-blocked 403 can appear without warning.
EgressFree and unmetered — the response hands back a public CDN URL on mmbiz.qpic.cn ("url": "http://mmbiz.qpic.cn/XXXXX"), which is served by Tencent's CDN with no access_token and no auth header. This is the only genuinely anonymous read path found in this entire slot.
Identityanonymous derived from the record's prose, not from an identity field, and no signup was executed: red to UPLOAD (2h expiry, refresh loop needed). Download is anonymous. mmbiz.qpic.cn applies a Referer/hotlink check — direct GETs without a WeChat/weixin Referer can be refused, which brea
Limits
  • per-object-cap Per-file cap 1 MB source
1 MB per image, jpg/png only. access_token required to UPLOAD (2h expiry, refresh loop needed). Download is anonymous. mmbiz.qpic.cn applies a Referer/hotlink check — direct GETs without a WeChat/weixin Referer can be refused, which breaks plain curl fetch fan-out and CDN-fronting.
Bindingper-object-cap the per-object cap sets the shard size and therefore the object count; it bounds the total more tightly than any headline quota
Interfacerest rest
ToolingTrivial — one multipart POST: curl -F media=@test.jpg "https://api.weixin.qq.com/cgi-bin/media/uploadimg?access_token=ACCESS_TOKEN". No wrapper needed; any HTTP client plus a token-refresh loop (access_token lives 7200s) is the whole client.
Composes withThe absence of a count cap means one account is already unbounded in object count; the binding limit becomes 1 MB/file. 1 account = effectively millions of 1MB objects. Multiple Official Accounts (1 per entity) multiply further, but count is not the constraint — file size is.
ReliabilityImages are permanent in practice (they must survive in published articles forever), but the service is tuned for article inline images, so bulk non-image binary upload is impossible and a hotlink-blocked 403 can appear without warning.
NotesNO documented count cap. The docs state explicitly: "该接口所上传的图片,不占用公众号的素材库中图片数量的100000个的限制" — images uploaded via this endpoint do NOT count against the 100,000-image library limit. Per-file cap 1 MB, JPG/PNG only.
Evidence rungreported One page read moves it to documented.
Checked2026-10-21 (inherited); stale on 2026-11-04
Parsed numbers
  • $.limits[0].value limit:per-object-cap 1.0 MB
Evidence (2)
datesourcewhat it proved
2026-10-21developers.weixin.qq.com/doc/service/api/material/permanent/read live: '该接口所上传的图片,不占用公众号的素材库中图片数量的100000个的限制,图片仅支持jpg/png格式,大小必须在1MB以下' plus response field url = 'http://mmbiz.qpic.cn/XXXXX'
2026-10-21mmbiz.qpic.cn/mmbiz_jpg/<synthetic-id>probe: GET -> 400 text/plain (endpoint live and reachable anonymously; the 400 is a fabricated media id, not an auth wall)
More fields (1)
{
 "dead_end": {
  "failure_class": "quota",
  "why": "NO documented count cap. The docs state explicitly: \"该接口所上传的图片,不占用公众号的素材库中图片数量的100000个的限制\" — images uploaded via this endpoint do NOT count against the 100,000-image library limit. Per-file cap 1 MB, JPG/PNG only.",
  "retry_when": null,
  "first_recorded": "2026-10-21"
 }
}
Unknown or withheld values (4)
  • $.extras.dead_end.retry_when process
  • $.free_tier.notes process
  • $.per_object_cap.notes not-extracted
  • $.retention.notes not-extracted