Expressions
An expression is a custom emoji or a sticker that one guild owns. The two routes here resolve an expression from its own identifier, without membership of the owning guild.
| Object | Route | Owning resource |
|---|---|---|
| Emoji metadata | Get emoji metadata | Guild emojis |
| Sticker metadata | Get sticker metadata | Guild stickers |
Both routes are read-only, and neither writes an audit entry or emits a Gateway Dispatch.
An identifier that names no stored expression returns 404 UNKNOWN_EMOJI or 404 UNKNOWN_STICKER. A stored expression whose guild no longer exists returns 404 UNKNOWN_GUILD.
Both routes return the metadata even when the owning guild has UNAVAILABLE_FOR_EVERYONE.
Emoji metadata object
Section titled “Emoji metadata object”One custom emoji, readable from outside its guild. It adds the owning guild to the guild emoji object and drops the adult content classification and the uploader.
Structure
Section titled “Structure”| Field | Type | Description |
|---|---|---|
| id1 | snowflake | The ID of the emoji |
| guild_id2 | snowflake | The ID of the guild that owns the emoji |
| name3 | string | The name of the emoji (2-32 characters) |
| animated4 | boolean | Whether the stored image is animated |
| allow_cloning5 | boolean | Whether the owning guild permits the emoji to be copied |
1 Unique across every guild, so the emoji is addressable without its guild
2 This resource has no guild name and no guild icon
3 Create guild emoji restricts the value to ASCII letters, digits, and underscore, and cloning copies it unchanged
4 Fluxer detects this from the submitted image at creation, and the value never changes
5 False exactly when the owning guild has CLONE_EMOJI_DISABLED
Every member is always present, and no member is nullable.
Example
Section titled “Example”{ "id": "1501314428688998182", "guild_id": "1489002177550843904", "name": "party_parrot", "animated": true, "allow_cloning": true}Sticker metadata object
Section titled “Sticker metadata object”One sticker, readable from outside its guild. It adds the owning guild to the guild sticker object and drops the description, the tags, the adult content classification, and the uploader.
Structure
Section titled “Structure”| Field | Type | Description |
|---|---|---|
| id1 | snowflake | The ID of the sticker |
| guild_id2 | snowflake | The ID of the guild that owns the sticker |
| name3 | string | The name of the sticker (2-30 characters) |
| animated4 | boolean | Whether the stored image is animated |
| allow_cloning5 | boolean | Whether the owning guild permits the sticker to be copied |
1 Unique across every guild, so the sticker is addressable without its guild
2 This resource has no guild name and no guild icon
3 The value accepts any character
4 Fluxer detects this from the submitted image at creation, and the value never changes
5 False exactly when the owning guild has CLONE_STICKER_DISABLED
Every member is always present, and no member is nullable.
Example
Section titled “Example”{ "id": "1501314428688998183", "guild_id": "1489002177550843904", "name": "shipit", "animated": false, "allow_cloning": false}Get emoji metadata
Section titled “Get emoji metadata”GET/v1/emojis/{emoji_id}/metadataReturns the emoji metadata object of any guild emoji. The route requires no membership of the owning guild and evaluates no permission.
Path parameters
Section titled “Path parameters”| Field | Type | Description |
|---|---|---|
| emoji_id | snowflake | The ID of the emoji |
Response
Section titled “Response”| Status | Body | Condition |
|---|---|---|
| 200 | emoji metadata object | Metadata was returned |
| 4041 | error response | Emoji does not exist, or its owning guild no longer exists |
1 The error code is UNKNOWN_EMOJI for a missing emoji and UNKNOWN_GUILD when the emoji record survives but its guild does not
Rate limit
Section titled “Rate limit”60 requests per 10 seconds for each authenticated user, on the guild:emoji:metadata::user_id bucket, and every emoji the account looks up draws on that one budget.
Get sticker metadata
Section titled “Get sticker metadata”GET/v1/stickers/{sticker_id}/metadataReturns the sticker metadata object of any guild sticker. The route requires no membership of the owning guild and evaluates no permission.
Path parameters
Section titled “Path parameters”| Field | Type | Description |
|---|---|---|
| sticker_id | snowflake | The ID of the sticker |
Response
Section titled “Response”| Status | Body | Condition |
|---|---|---|
| 200 | sticker metadata object | Metadata was returned |
| 4041 | error response | Sticker does not exist, or its owning guild no longer exists |
1 The error code is UNKNOWN_STICKER for a missing sticker and UNKNOWN_GUILD when the sticker record survives but its guild does not
Rate limit
Section titled “Rate limit”60 requests per 10 seconds for each authenticated user, on the guild:sticker:metadata::user_id bucket, and every sticker the account looks up draws on that one budget.