fshy

Home / Storage

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

developers.weixin.qq.com/doc/service/api/material/permanent/Messagingstorage/wechat-official-account-uploadimgJSONcomparereport an errorprovider JSON

Free allowance
NO documented count cap.
Verdict
fails: egressdata cannot be read back out at a usable rate or price
Cost
free tier
Identity
anonymous?placeholder, not evidence; card unknown, phone unknown
Binding limit
per-object-capPer-file cap 1 MB
Evidence
reported2 sources; a third party said so
Freshness
stale on 2026-11-05checked 2026-10-21 (inherited); stale on 2026-11-05
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
Limits
  • per-object-cap (binding) 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.
Identityanonymous (inferred, not read) not published
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.
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.
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.
Parsed numbers
  • has-free-tier 1
  • per-object-cap 1 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 values 2
  • per object cap notes: the field may be stated in a source that was not read
  • retention notes: the field may be stated in a source that was not read