Expressions
An expression is a custom emoji or a sticker that one guild owns. The metadata routes resolve an expression from its own identifier, without membership of the owning guild. The source routes name the owning guild only to a caller who may see it.
| Object | Route | Owning resource |
|---|---|---|
| Emoji metadata | Get emoji metadata | Guild emojis |
| Sticker metadata | Get sticker metadata | Guild stickers |
| Expression source guild | Get emoji source guild, Get sticker source guild | Guilds |
Every route here is read-only, and none writes an audit entry or emits a Gateway Dispatch. The metadata routes return the metadata even when the owning guild has UNAVAILABLE_FOR_EVERYONE.
When an identifier names no stored expression, FiveCord returns 404 UNKNOWN_EMOJI or 404 UNKNOWN_STICKER. A stored expression whose guild no longer exists returns 404 UNKNOWN_GUILD.
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 FiveCord detects this from the submitted image at creation, and the value never changes
5 True exactly when the owning guild has CLONE_EMOJI_ENABLED, and false for every other guild
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 FiveCord detects this from the submitted image at creation, and the value never changes
5 True exactly when the owning guild has CLONE_STICKER_ENABLED, and false for every other guild
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}Expression source guild object
Section titled “Expression source guild object”The guild that owns an expression, reduced to what is needed to name it and show its badge. It is smaller than the partial guild object and has no banner, splash, or embedded splash fields.
Structure
Section titled “Structure”| Field | Type | Description |
|---|---|---|
| id | snowflake | The ID of the guild |
| name | string | The name of the guild |
| icon1 | ?string | Guild icon hash, or null when the guild stores none |
| features2 | array[string] | The badge guild features the guild has |
1 An animated icon hash has the a_ prefix, and that prefix is removed from the returned value while the guild lacks ANIMATED_ICON
2 Only VERIFIED, PARTNERED, and DISCOVERABLE can appear, each at most once and in that order, and every other feature the guild has is left out
Every member is always present, and only icon is nullable.
Example
Section titled “Example”{ "id": "1489002177550843904", "name": "Ada's Workshop", "icon": "a_9f2c1d4e", "features": ["VERIFIED", "DISCOVERABLE"]}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.
Get emoji source guild
Section titled “Get emoji source guild”GET/v1/emojis/{emoji_id}/sourceReturns the expression source guild object of the guild that owns a emoji. FiveCord reads the guild from the gateway, not from storage. The guild is returned when it is discoverable, or when the caller is a member of it.
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 | expression source guild object | The caller may see the owning guild |
| 4041 | error response | Emoji does not exist, or the owning guild is private to the caller or unavailable |
1 The error code is UNKNOWN_EMOJI for a missing emoji, and UNKNOWN_GUILD when the owning guild is not discoverable and the caller is not a member of it, or when the gateway cannot reach it.
Rate limit
Section titled “Rate limit”60 requests per 10 seconds for each authenticated user, on the guild:emoji:source::user_id bucket, and every emoji the account looks up draws on that one budget.
Get sticker source guild
Section titled “Get sticker source guild”GET/v1/stickers/{sticker_id}/sourceReturns the expression source guild object of the guild that owns a sticker. FiveCord reads the guild from the gateway, not from storage. The guild is returned when it is discoverable, or when the caller is a member of it.
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 | expression source guild object | The caller may see the owning guild |
| 4041 | error response | Sticker does not exist, or the owning guild is private to the caller or unavailable |
1 The error code is UNKNOWN_STICKER for a missing sticker, and UNKNOWN_GUILD when the owning guild is not discoverable and the caller is not a member of it, or when the gateway cannot reach it.
Rate limit
Section titled “Rate limit”60 requests per 10 seconds for each authenticated user, on the guild:sticker:source::user_id bucket, and every sticker the account looks up draws on that one budget.