Home / Storage
Discord cloud uploads (direct-to-GCS, 500 MiB reservation)
docs.discord.food/topics/cloud-uploadsMessagingstorage/discord-cloud-uploadsJSONcomparereport an errorprovider JSON
- Free allowance
- Reserve an upload slot with
POST /channels/{id}/attachments and PUT the body straight into Discord's Google Cloud Storage bucket — the reservation path accepts up to 500 MiB per file, independent of the 20 MiB message-time limit. - Verdict
- caveatusable, with a named limit or an unprobed read path
- Cost
- free tier
- Identity
- email?placeholder, not evidence; card unknown, phone unknown
- Binding limit
- per-object-cap500 MiB per file
- 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 | Reserve an upload slot with POST /channels/{id}/attachments and PUT the body straight into Discord's Google Cloud Storage bucket — the reservation path accepts up to 500 MiB per file, independent of the 20 MiB message-time limit. Note the file still hits the per-message limit when you actually send it, so 500 MiB only helps if the channel/boost tier allows it.unit mixed; metered on stored-bytes |
|---|
| Price | none stated |
|---|
| Limits | - per-object-cap (binding) 500 MiB per file source
1-10 files per reservation call; is_clip flag grants a 100 MiB default; requires same permissions as normal attach; DELETE /attachments/{upload_filename} to clean up unused reservations. |
|---|
| Identity | email (placeholder) not published |
|---|
| Egress | Free, unmetered, served from cdn.discordapp.com. |
|---|
| Per-object cap | 500 MiB per file (524288000 bytes) |
|---|
| Retention | not stated |
|---|
| Interface | rest rest |
|---|
| Tooling | Documented unofficial-API reference (docs.discord.food, formerly 'userdoccers'); Python pseudocode in the page; used in production by large bots. No dedicated library needed — two HTTP calls. |
|---|
| Composes with | Upload slots are per-channel, so the 500 MiB ceiling multiplies by channel count (500/server) rather than by account. |
|---|
| Reliability | Endpoints are undocumented-but-stable and have moved URL shape before; a reservation you do not consume needs explicit deletion or it lingers. |
|---|
| Parsed numbers | - has-free-tier 1
- per-object-cap 500 MiB
|
|---|
Evidence 2
More fields 1
| unit note | free_tier.unit is 'mixed' because the headline is denominated in MiB or KiB, which the schema enum does not carry; the verbatim free_tier.stated keeps the true unit. |
|---|
Unknown values 3
- 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
- retention stated: the field may be stated in a source that was not read