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 tier | 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. unit MB; metered on unstated |
|---|
| Price | none 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. |
|---|
| Identity | anonymous (inferred, not read) not published |
|---|
| Egress | Free 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 cap | Per-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. |
|---|
| Interface | rest rest |
|---|
| Tooling | Trivial — 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 with | The 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. |
|---|
| Reliability | 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. |
|---|
| Parsed numbers | - has-free-tier 1
- per-object-cap 1 MB
|
|---|
Evidence 2
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