├── .github ├── ISSUE_TEMPLATE │ └── config.yml └── workflows │ └── build.yml ├── .gitignore ├── CONTRIBUTING.md ├── README.md ├── config.yml └── docs ├── CNAME ├── extra.css ├── guilded.svg ├── images.md ├── images ├── example_dm_channel_message.png ├── example_message.png ├── example_status.png └── webhooks_identical.png ├── index.md ├── logo.png ├── overrides └── main.html ├── reference.md ├── resources ├── channel.md ├── emoji.md ├── group.md ├── team.md ├── user.md └── webhook.md └── topics ├── community-resources.md ├── media.md └── status-codes.md /.github/ISSUE_TEMPLATE/config.yml: -------------------------------------------------------------------------------- 1 | blank_issues_enabled: true 2 | contact_links: 3 | - name: Developer Documentation 4 | url: https://guildedapi.com 5 | about: Documentation & examples for the API. 6 | - name: Community Server 7 | url: https://guilded.gg/guilded-api 8 | about: Need help with the API? Ask us here! 9 | -------------------------------------------------------------------------------- /.github/workflows/build.yml: -------------------------------------------------------------------------------- 1 | name: Publish docs via GitHub Pages 2 | on: 3 | push: 4 | branches: 5 | - main 6 | 7 | jobs: 8 | build: 9 | name: Deploy docs 10 | runs-on: ubuntu-latest 11 | steps: 12 | - name: Checkout main 13 | uses: actions/checkout@v2 14 | 15 | - name: Deploy docs 16 | uses: mhausenblas/mkdocs-deploy-gh-pages@master 17 | env: 18 | GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} 19 | CONFIG_FILE: config.yml 20 | EXTRA_PACKAGES: build-base 21 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GuildedAPI/docs/abb165dacab14c1f99df350403c202aa748b7f01/.gitignore -------------------------------------------------------------------------------- /CONTRIBUTING.md: -------------------------------------------------------------------------------- 1 | ## Wanted Changes 2 | 3 | 1. Fixes to incorrect statements or inaccuracies within the documentation. 4 | 2. Rewording or extending documentation to clarify unclear wording or complicated explanations. 5 | 3. Additions that fill gaps or missing pieces in the current documentation. 6 | 4. Fixing of spelling and grammatical errors in the documentation. 7 | 8 | ## Unwanted Changes 9 | 10 | 1. Whitespace or formatting changes. 11 | 2. Modifications to the overall structure and format of the API docs. 12 | 3. Additions that replicate or needlessly restructure current documentation. 13 | 14 | Contributions to this repository should conform to [Guilded's ToU](https://guilded.gg/terms), i.e. don't promote the breaching of ToU. 15 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Warning: Archived 2 | 3 | This project is no longer maintained by me. The domain guildedapi.com has been deleted and can be purchased again if you wish to use it for your own purposes. All of the content previously hosted on this domain is still available: 4 | 5 | - Original docs: https://guildedapi.github.io/docs 6 | - Rewritten docs: https://guilded-client.apidog.io 7 | - Issues checklist: https://bot-api-issues.vercel.app 8 | 9 | # Guilded Unofficial API Documentation 10 | 11 | This repo contains some unofficial API documentation for Guilded, which can be [viewed online here](https://guildedapi.github.io/docs). Before submitting pull requests, please remember to _fully_ read the [Contributing](CONTRIBUTING.md) guidelines. 12 | -------------------------------------------------------------------------------- /config.yml: -------------------------------------------------------------------------------- 1 | site_name: Guilded API Documentation 2 | site_description: Unofficial documentation for Guilded's REST API. 3 | site_author: Guilded Developer Resources 4 | repo_url: https://github.com/guildedapi/docs 5 | repo_name: GitHub 6 | edit_uri: blob/main/docs/ 7 | copyright: Copyright © shay (shayypy) 2021-2022 8 | site_dir: build/ 9 | docs_dir: docs/ 10 | theme: 11 | name: material 12 | custom_dir: docs/overrides 13 | logo: guilded.svg 14 | favicon: logo.png 15 | features: 16 | - navigation.sections 17 | - navigation.expand 18 | - navigation.instant 19 | - toc.integrate 20 | extra_css: [extra.css] 21 | dev_addr: 127.0.0.1:80 22 | markdown_extensions: 23 | - admonition 24 | - pymdownx.highlight 25 | - pymdownx.superfences 26 | - toc: 27 | permalink: 🔗 28 | toc_depth: 3 29 | -------------------------------------------------------------------------------- /docs/CNAME: -------------------------------------------------------------------------------- 1 | guildedapi.com -------------------------------------------------------------------------------- /docs/extra.css: -------------------------------------------------------------------------------- 1 | :root>* { 2 | --md-default-fg-color: #ececee; 3 | --md-primary-fg-color: #f5c400; 4 | --md-primary-fg-color--dark: #f5c400; 5 | --md-default-fg-color--light: #ececee; 6 | --md-default-fg-color--lighter: #1F2126; 7 | --md-primary-bg-color: black; 8 | --md-default-bg-color: #3c3e48; 9 | --md-accent-fg-color: #EDD658; 10 | 11 | --md-code-bg-color: #292b32; 12 | --md-code-fg-color: hsla(0, 0%, 96%, 1); 13 | --md-code-hl-keyword-color: #dbdcdc; 14 | --md-code-hl-string-color: #e6db74; 15 | --md-code-hl-number-color: #ae81ff; 16 | --md-code-hl-name-color: #ae81ff; 17 | --md-code-hl-punctuation-color: #bd2760; 18 | 19 | --md-footer-bg-color: #2F313A 20 | } 21 | 22 | body { 23 | font-family: 'Gotham Narrow', Arial, sans-serif; 24 | color: var(--md-default-fg-color--light); 25 | } 26 | h1 {font-weight: bold !important} 27 | h6 {font-size: 16px !important} 28 | 29 | @font-face { 30 | font-family: 'Gotham Narrow'; 31 | src: url('https://www.guilded.gg/fonts/gotham-narrow-book.woff2') format('woff2'), 32 | url('https://www.guilded.gg/fonts/gotham-narrow-book.woff') format('woff'); 33 | font-weight: normal; 34 | font-style: normal; 35 | font-display: swap; 36 | } 37 | @font-face { 38 | font-family: 'Gotham Narrow'; 39 | src: url('https://www.guilded.gg/fonts/gotham-narrow-book-italic.woff2') format('woff2'), 40 | url('https://www.guilded.gg/fonts/gotham-narrow-book-italic.woff') format('woff'); 41 | font-weight: normal; 42 | font-style: italic; 43 | font-display: swap; 44 | } 45 | @font-face { 46 | font-family: 'Gotham Narrow'; 47 | src: url('https://www.guilded.gg/fonts/gotham-narrow-bold.woff2') format('woff2'), 48 | url('https://www.guilded.gg/fonts/gotham-narrow-bold.woff') format('woff'); 49 | font-weight: bold; 50 | font-style: normal; 51 | font-display: swap; 52 | } 53 | @font-face { 54 | font-family: 'Gotham Narrow'; 55 | src: url('https://www.guilded.gg/fonts/gotham-narrow-bold-italic.woff2') format('woff2'), 56 | url('https://www.guilded.gg/fonts/gotham-narrow-bold-italic.woff') format('woff'); 57 | font-weight: bold; 58 | font-style: italic; 59 | font-display: swap; 60 | } 61 | 62 | .md-typeset table:not([class]) {background-color: var(--md-code-bg-color);} 63 | th {background-color: var(--md-primary-bg-color)!important; color:var(--md-default-fg-color)!important;} 64 | .http-verb { 65 | font-size: 20px; 66 | color: var(--md-primary-fg-color); 67 | font-family: Menlo,Consolas,Monaco,monospace; 68 | text-transform: uppercase; 69 | margin-right: 10px; 70 | } 71 | .http-path { 72 | font-family: Menlo,Consolas,Monaco,monospace; 73 | font-size: 18px; 74 | } 75 | .http-container {margin: 0 !important} 76 | h2 {margin-bottom: 0 !important;} 77 | -------------------------------------------------------------------------------- /docs/images.md: -------------------------------------------------------------------------------- 1 | # Images 2 | 3 | Here is an (incomplete) selection of "official images" collected from the Guilded client & website. They are owned by guilded.gg and are presented here without approval from Guilded/guilded.gg. 4 | 5 | ## Members 6 | ![members](https://img.guildedcdn.com/asset/TabEmptyStates/gil_members.png) 7 | 8 | ## Members (in color) 9 | from [/jobs](https://guilded.gg/jobs) 10 | ![members](https://img.guildedcdn.com/asset/Jobs/jobs-hero.png) 11 | 12 | ## Recruitment 13 | ![recruitment](https://img.guildedcdn.com/asset/TabEmptyStates/gil_recruitment.png) 14 | 15 | ## Overview 16 | ![overview](https://img.guildedcdn.com/asset/TabEmptyStates/gil_overview.png) 17 | 18 | ## Forums 19 | ![forums](https://img.guildedcdn.com/asset/TabEmptyStates/gil_forums.png) 20 | 21 | ## Calendar 22 | ![calendar](https://img.guildedcdn.com/asset/TabEmptyStates/gil_calendar.png) 23 | 24 | ## Docs 25 | ![docs](https://img.guildedcdn.com/asset/TabEmptyStates/gil_docs.png) 26 | 27 | ## Media 28 | ![media](https://img.guildedcdn.com/asset/TabEmptyStates/gil_media.png) 29 | 30 | ## Roster 31 | ![roster](https://img.guildedcdn.com/asset/TabEmptyStates/gil_roster.png) 32 | 33 | ## Streams 34 | ![streams](https://img.guildedcdn.com/asset/TabEmptyStates/gil_streams.png) 35 | 36 | ## Matches 37 | ![matches](https://img.guildedcdn.com/asset/TabEmptyStates/gil_matches.png) 38 | 39 | ## Nothing Here 40 | ![nothing-here](https://img.guildedcdn.com/asset/GenericMessages/nothing-here.png) 41 | 42 | ## Not found 43 | ![not-found](https://img.guildedcdn.com/asset/GenericMessages/not-found.png) 44 | 45 | ## Gilmoji 46 | ![gilmoji](https://img.guildedcdn.com/asset/Default/Gilmoji.png) 47 | 48 | ## Default Avatars 49 | 50 | ### 1 51 | ![profile_1](https://img.guildedcdn.com/asset/DefaultUserAvatars/profile_1.png) 52 | 53 | ### 2 54 | ![profile_2](https://img.guildedcdn.com/asset/DefaultUserAvatars/profile_2.png) 55 | 56 | ### 3 57 | ![profile_3](https://img.guildedcdn.com/asset/DefaultUserAvatars/profile_3.png) 58 | 59 | ### 4 60 | ![profile_4](https://img.guildedcdn.com/asset/DefaultUserAvatars/profile_4.png) 61 | 62 | ### 5 63 | ![profile_5](https://img.guildedcdn.com/asset/DefaultUserAvatars/profile_5.png) 64 | 65 | ## Denied 66 | ![denied](https://img.guildedcdn.com/asset/GenericMessages/denied.png) 67 | 68 | ## Stonks Rising 69 | from the referral popup 70 | ![stonks-rising](https://img.guildedcdn.com/asset/Referral/gil_stonks-rising.png) 71 | 72 | ## Desktop Screenshot 73 | from [/downloads](https://guilded.gg/downloads) 74 | ![desktop_screenshot](https://img.guildedcdn.com/asset/App/Desktop_Screenshot.png) 75 | 76 | ## Under Construction 77 | [!under-construction](https://img.guildedcdn.com/asset/GenericMessages/under-construction.png) 78 | -------------------------------------------------------------------------------- /docs/images/example_dm_channel_message.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GuildedAPI/docs/abb165dacab14c1f99df350403c202aa748b7f01/docs/images/example_dm_channel_message.png -------------------------------------------------------------------------------- /docs/images/example_message.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GuildedAPI/docs/abb165dacab14c1f99df350403c202aa748b7f01/docs/images/example_message.png -------------------------------------------------------------------------------- /docs/images/example_status.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GuildedAPI/docs/abb165dacab14c1f99df350403c202aa748b7f01/docs/images/example_status.png -------------------------------------------------------------------------------- /docs/images/webhooks_identical.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GuildedAPI/docs/abb165dacab14c1f99df350403c202aa748b7f01/docs/images/webhooks_identical.png -------------------------------------------------------------------------------- /docs/index.md: -------------------------------------------------------------------------------- 1 | # Introduction 2 | 3 | Hey, welcome! This is some documentation for [Guilded](https://guilded.gg)'s user API. This [documentation is on GitHub](https://github.com/guildedapi/docs), so you know what to do there. 4 | 5 | ## Userbots & You 6 | 7 | Guilded's terms forbid the automation of user accounts. For this reason, these pages are for building applications that make requests to Guilded as an anonymous third party ([here are some examples!](/topics/community-resources#exemplary-projects)). User authentication details will not be covered here. 8 | 9 | You can apply for Guilded's early access bot API in the "Bots" tab of any server's settings or at [API-Official](https://www.guilded.gg/API-Official). 10 | 11 | ## Support 12 | 13 | Need some help? Come ask over at [the community API server](https://www.guilded.gg/guilded-api)! 14 | -------------------------------------------------------------------------------- /docs/logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GuildedAPI/docs/abb165dacab14c1f99df350403c202aa748b7f01/docs/logo.png -------------------------------------------------------------------------------- /docs/overrides/main.html: -------------------------------------------------------------------------------- 1 | {% extends "base.html" %} 2 | 3 | {% block extrahead %} 4 | {% set title = config.site_name %} 5 | {% if page and page.meta and page.meta.title %} 6 | {% set title = title ~ " - " ~ page.meta.title %} 7 | {% elif page and page.title and not page.is_homepage %} 8 | {% set title = title ~ " - " ~ page.title | striptags %} 9 | {% endif %} 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | {% endblock %} 22 | -------------------------------------------------------------------------------- /docs/reference.md: -------------------------------------------------------------------------------- 1 | # Reference 2 | 3 | Guilded's API features a WebSocket gateway for receiving live events, but it requires user authentication and thus will not be covered here. 4 | 5 | ###### Base URL 6 | 7 | ``` 8 | https://www.guilded.gg/api 9 | ``` 10 | 11 | ## Error Messages 12 | 13 | Your typical error message should look like this: 14 | 15 | ```json 16 | { 17 | "code": "BadRequestError", 18 | "message": "That's no good. Try again with a different payload." 19 | } 20 | ``` 21 | 22 | ... along with an appropriate [HTTP status code](/topics/status-codes#http). 23 | 24 | ## IDs 25 | 26 | ### Types 27 | 28 | Unlike Discord, Guilded does not use [Snowflakes](https://discord.com/developers/docs/reference#snowflakes) for any of its IDs - instead, you will find a mix of [UUIDs](https://wikipedia.org/wiki/Universally_unique_identifier), 8-character alphanumeric strings (hereafter "generic" IDs), and incremental & random integer IDs. 29 | 30 | ### Uniqueness of IDs by scope 31 | 32 | | Resource | ID Type | Data Type | Scope | 33 | |---------------------------------------------------------------------------|-------------|-----------|-------------| 34 | | All content replies | Incremental | integer | per-content | 35 | | Announcement | Generic | string | ? | 36 | | Availability | Incremental | integer | global | 37 | | [CalendarEvent](https://guilded.gg/docs/api/calendarEvents/CalendarEvent) | Incremental | integer | global | 38 | | [Channel](/resources/channel#channel-object) | UUID | string | global | 39 | | [Doc](https://guilded.gg/docs/api/docs/Doc) | Incremental | integer | global | 40 | | [Emoji](/resources/emoji#custom-emoji-object) (emote) | Incremental | integer | global | 41 | | [ForumTopic](https://guilded.gg/docs/api/forums/ForumTopic) | Random | integer | ? | 42 | | [Group](/resources/group#group-object) | Generic | string | global | 43 | | [ListItem](https://guilded.gg/docs/api/listItems/ListItem) | UUID | string | ? | 44 | | Media | Incremental | integer | global | 45 | | [Message](/resources/channel#message-object) | UUID | string | ? | 46 | | Role | Incremental | integer | global | 47 | | [Team](/resources/team#team-object) (server) | Generic | string | global | 48 | | [User](/resources/user#user-object) | Generic | string | global | 49 | | [Webhook](/resources/webhook#webhook-object) | UUID | string | global | 50 | 51 | ## ISO8601 Date/Time 52 | 53 | Guilded utilizes the [ISO8601 format](https://www.loc.gov/standards/datetime/iso-tc154-wg5_n0038_iso_wd_8601-1_2016-02-16.pdf) for most Date/Times returned. This format is referred to as type `ISO8601 timestamp` within tables in this documentation. 54 | 55 | ## Nullable and Optional Resource Fields 56 | 57 | Resource fields that may contain a `null` value have types that are prefixed with a question mark. 58 | Resource fields that are optional have names that are suffixed with a question mark. 59 | 60 | ###### Example Nullable and Optional Fields 61 | 62 | | Field | Type | 63 | |------------------------------|---------| 64 | | optional_field? | string | 65 | | nullable_field | ?string | 66 | | optional_and_nullable_field? | ?string | 67 | 68 | ## HTTP API 69 | 70 | ### Rate Limiting 71 | 72 | The HTTP API has very loose rate limits. Because of this, we do not know much about how rate limiting works on Guilded. A good rule of thumb is to not spam the API with repetitive requests and to simply stay reasonable. 73 | 74 | ## Message Formatting 75 | 76 | Guilded uses markdown for writing messages in clients. Message are returned via the API in a very 'stacked' format. Each aspect of a message's content, such as text formatting, a mention, or anything else, is provided in a different leaf of the current node. Fortunately, this is not a format you have to *send*; you can instead use pure markdown by providing `markdown-plain-text` as your `type`. 77 | 78 | todo: fact check above 79 | 80 | ## Image Formatting 81 | 82 | ###### Image Base URLs 83 | 84 | ``` 85 | https://img.guildedcdn.com/ 86 | https://s3-us-west-2.amazonaws.com/www.guilded.gg/ 87 | ``` 88 | 89 | Guilded uses hashes for its images. These hashes are not returned alone in most HTTP API requests, however--instead you are returned a full URL on the Amazon AWS platform. 90 | 91 | Below are the formats, size limitations, and CDN endpoints for images in Guilded. The returned format can be changed by changing the [extension name](#image-formats) at the end of the URL. The returned size can be changed by appending a `-{Size}` to the URL, just before the file extension. [See below](#sizes) for available size formats. 92 | 93 | It is important to note that, while URLs using the CDN domain are shorter than, and serve the same purpose as, AWS URLs, they will not display properly in embeds (in constrast to AWS URLs). 94 | 95 | ###### Image Formats 96 | 97 | | Name | Extension | 98 | |------|-------------| 99 | | PNG | .png | 100 | | aPNG | .png | 101 | | JPEG | .jpg, .jpeg | 102 | | WebP | .webp | 103 | | GIF | .gif | 104 | 105 | ###### CDN Endpoints 106 | 107 | | Type | Path | Supports | 108 | |----------------|--------------------------|------------| 109 | | User Avatar | UserAvatar/hash.png | PNG, GIF | 110 | | Profile Banner | UserBanner/hash.png | PNG | 111 | | Image in Chat | ContentMedia/hash.webp | WebP | 112 | | Team Emoji | CustomReaction/hash.webp | WebP, aPNG | 113 | | Team Icon | TeamAvatar/hash.png | PNG | 114 | | Team Banner | TeamBanner/hash.png | PNG | 115 | 116 | ###### Sizes 117 | 118 | Your `-{Size}` can be one of `-Small`, `-Medium`, `-Large`, and sometimes `-Hero`. Banners can only be `Hero`, but avatars are never `Hero`. 119 | 120 | ###### Example CDN URL 121 | 122 | The below example is for a "large" sized User Avatar on AWS: 123 | 124 | ``` 125 | https://s3-us-west-2.amazonaws.com/www.guilded.gg/UserAvatar/{hash}-Large.png 126 | ``` 127 | -------------------------------------------------------------------------------- /docs/resources/channel.md: -------------------------------------------------------------------------------- 1 | # Channels 2 | 3 | ### Channel Object 4 | 5 | Represents a team (server) or DM channel. 6 | 7 | ###### Team Channel Structure 8 | 9 | | Field | Type | Description | 10 | |---------------------|--------------------|----------------------------------------------------------------------------------------------------------| 11 | | id | uuid | the id of this channel | 12 | | type | string | the [type of channel](#channel-types) | 13 | | createdAt | ISO8601 timestamp | when this channel was created | 14 | | createdBy | user id | who created this channel | 15 | | updatedAt | ?ISO8601 timestamp | when this channel was last modified | 16 | | name | string | the name of this channel | 17 | | contentType | string | the [content type of channel](#channel-content-types) (text, voice, etc) | 18 | | archivedAt | ?ISO8601 timestamp | if this channel is archived, this is when it was archived | 19 | | parentChannelId | ?uuid | if this channel has a parent channel, this is that channel's id | 20 | | autoArchiveAt | ?ISO8601 timestamp | when this channel will be automatically archived (only applicable to threads) | 21 | | deletedAt | ?ISO8601 timestamp | if this channel is deleted, this is when it was deleted | 22 | | archivedBy | ?user id | if this channel is archived, this is who archived it | 23 | | description | ?string | the channel description | 24 | | createdByWebhookId | ?uuid | if a webhook created this channel, this is the webhook's id | 25 | | archivedByWebhookId | ?uuid | if a webhook archived this channel, this is the webhook's id | 26 | | teamId | ?team id | if this is a team channel (not a DM channel), this is the team's id | 27 | | channelCategoryId | ?uuid | if this channel is in a category, this is the category's id | 28 | | addedAt | ?ISO8601 timestamp | ??? | 29 | | channelId | ?uuid | same as `id` | 30 | | isRoleSynced | ?bool | if this channel's roles are synced with the linked Discord guild's roles | 31 | | roles | ?array | a list of roles that (have overwrites in \| are synced with) this channel | 32 | | userPermissions | ?array | a list of users who have overwrites in this channel | 33 | | tournamentRoles | ?array | ??? | 34 | | isPublic | bool | whether this channel is marked as public (can be seen without being a member of the team) | 35 | | priority | integer | ??? | 36 | | groupId | ?group id | if this is a team channel, this is the group's id this channel belongs to | 37 | | settings | ??? | ??? | 38 | | groupType | string | ??? | 39 | | rolesById | dictionary | mapping of roleId: role object with undescript permissions | 40 | | tournamentRolesById | dictionary | ??? | 41 | | createdByInfo | dictionary | contains the `id`, `name`, `profilePicture`, and `profilePictureSm` of the user who created this channel | 42 | 43 | ###### Channel Types 44 | 45 | | Type | Description | 46 | |------|--------------------------------| 47 | | Team | a channel within a server | 48 | | DM | a direct message between users | 49 | 50 | ###### Channel Content Types 51 | 52 | | Type | Description | 53 | |--------------|--------------------------| 54 | | announcement | an announcement channel | 55 | | chat\* | a chat channel or thread | 56 | | doc | a docs channel | 57 | | forum | a forum channel | 58 | | media | a media channel | 59 | | list | a list channel | 60 | | scheduling | a scheduling channel | 61 | | streaming\* | a streaming channel | 62 | | voice\* | a voice channel | 63 | 64 | \* Voice channels and streaming channels are messageable just like chat channels. Threads inside these channels will have the `chat` content type despite their parent's content type. 65 | 66 | ###### Example Team Chat Channel 67 | 68 | ```json 69 | { 70 | "priority": 4, 71 | "id": "d2242862-401c-42f8-9ce2-0c75977475a6", 72 | "type": "Team", 73 | "name": "general", 74 | "description": "wacky hi-jinks ensue!", 75 | "settings": null, 76 | "roles": null, 77 | "rolesById": {}, 78 | "tournamentRolesById": {}, 79 | "teamId": "4R5q39VR", 80 | "channelCategoryId": null, 81 | "addedAt": null, 82 | "channelId": "d2242862-401c-42f8-9ce2-0c75977475a6", 83 | "isRoleSynced": null, 84 | "isPublic": false, 85 | "groupId": "WD56qLmd", 86 | "createdAt": "2020-07-31T18:51:19.563Z", 87 | "createdBy": "EdVMVKR4", 88 | "updatedAt": "2020-07-31T18:51:19.563Z", 89 | "contentType": "chat", 90 | "archivedAt": null, 91 | "parentChannelId": null, 92 | "autoArchiveAt": null, 93 | "deletedAt": null, 94 | "archivedBy": null, 95 | "createdByWebhookId": null, 96 | "archivedByWebhookId": null, 97 | "userPermissions": null, 98 | "tournamentRoles": null, 99 | "voiceParticipants": [], 100 | "userStreams": [] 101 | } 102 | ``` 103 | 104 | ### Message Object 105 | 106 | Represents a message sent in a channel within Guilded. 107 | 108 | ###### Message Structure 109 | 110 | | Field | Type | Description | 111 | |------------|------------------------------------------------------|-----------------------------------------------------------------------------| 112 | | id | uuid | id of the message | 113 | | channelId | [channel id](#channel-object) | id of the channel the message was sent in | 114 | | createdBy | user id | the author's id of this message | 115 | | content | [message content](#message-content-structure) object | contents of the message (including text, embeds, mentions, and attachments) | 116 | | createdAt | ISO8601 timestamp | when this message was sent | 117 | | editedAt | ?ISO8601 timestamp | when this message was edited (or null if never) | 118 | | deletedAt | ?ISO8601 timestamp | when this message was deleted (or null if it has not been deleted) | 119 | | reactions | array of [reaction](#reaction-object) objects | reactions to the message | 120 | | isPinned | boolean | whether this message is pinned | 121 | | pinnedBy | ?user id | if the message is pinned, this is the user's id who pinned it | 122 | | webhookId | ?user id | if the message is generated by a webhook, this is the webhook's id | 123 | | type | string | the [type of message](#message-types) | 124 | 125 | ###### Example Message 126 | 127 | ```json 128 | { 129 | "id": "b943384a-d951-4323-8e26-8e3e6b7c431a", 130 | "content": { 131 | "object": "value", 132 | "document": { 133 | "object": "document", 134 | "data": {}, 135 | "nodes": [ 136 | { 137 | "object": "block", 138 | "type": "paragraph", 139 | "data": {}, 140 | "nodes": [ 141 | { 142 | "object": "text", 143 | "leaves": [ 144 | { 145 | "object": "leaf", 146 | "text": "cool message with an ", 147 | "marks": [] 148 | } 149 | ] 150 | }, 151 | { 152 | "object": "inline", 153 | "type": "reaction", 154 | "data": { 155 | "reaction": { 156 | "id": 90001815, 157 | "customReactionId": 90001815 158 | } 159 | }, 160 | "nodes": [ 161 | { 162 | "object": "text", 163 | "leaves": [ 164 | { 165 | "object": "leaf", 166 | "text": ":tada:", 167 | "marks": [] 168 | } 169 | ] 170 | } 171 | ] 172 | }, 173 | { 174 | "object": "text", 175 | "leaves": [ 176 | { 177 | "object": "leaf", 178 | "text": " emoji, some ", 179 | "marks": [] 180 | }, 181 | { 182 | "object": "leaf", 183 | "text": "bold formatting", 184 | "marks": [ 185 | { 186 | "object": "mark", 187 | "type": "italic", 188 | "data": {} 189 | } 190 | ] 191 | }, 192 | { 193 | "object": "leaf", 194 | "text": ", maybe even a ", 195 | "marks": [] 196 | } 197 | ] 198 | }, 199 | { 200 | "object": "inline", 201 | "type": "reaction", 202 | "data": { 203 | "reaction": { 204 | "id": 294637, 205 | "customReactionId": 294637 206 | } 207 | }, 208 | "nodes": [ 209 | { 210 | "object": "text", 211 | "leaves": [ 212 | { 213 | "object": "leaf", 214 | "text": ":thinkingwithblobs:", 215 | "marks": [] 216 | } 217 | ] 218 | } 219 | ] 220 | }, 221 | { 222 | "object": "text", 223 | "leaves": [ 224 | { 225 | "object": "leaf", 226 | "text": " custom emoji?", 227 | "marks": [] 228 | } 229 | ] 230 | } 231 | ] 232 | } 233 | ] 234 | } 235 | } 236 | } 237 | ``` 238 | 239 | ##### Message Types 240 | 241 | | Type | Description | 242 | |---------|-----------------------------------------------------------| 243 | | default | a message sent by a user | 244 | | system | a system message, usually noting an action done by a user | 245 | 246 | ### Unfurl Embed Object 247 | 248 | ###### Unfurl Embed Structure 249 | 250 | !!! info 251 | All of the below fields are optional and nullable. 252 | 253 | | Field | Type | Description | 254 | |---------------|--------|----------------------------------------------| 255 | | ogTitle | string | og:title | 256 | | ogDescription | string | og:description | 257 | | ogSiteName | string | og:site_name | 258 | | ogUrl | string | og:url | 259 | | ogImage.url | string | proxied og:image | 260 | | siteType | string | the [type of site](#unfurl-embed-site-types) | 261 | 262 | ###### Example Unfurl Embed 263 | 264 | ```json 265 | { 266 | "ogTitle": "Guilded - Chat for Gaming Communities", 267 | "ogDescription": "Guilded upgrades your group chat and equips your server with integrated event calendars, forums, and more – 100% free.", 268 | "ogSiteName": "Guilded - Chat for Gaming Communities", 269 | "ogUrl": "https://www.guilded.gg/", 270 | "ogImage": { 271 | "url": "https://s3-us-west-2.amazonaws.com/www.guilded.gg/ExternalOGEmbedImage/11066c41a2569c628f119f2b2e32aa00-Full.png?w=1024&h=1024" 272 | }, 273 | "siteType": "guilded" 274 | } 275 | ``` 276 | 277 | ### Unfurl Embed Site Types 278 | 279 | | Value | Domain | 280 | |----------|----------------| 281 | | facebook | facebook.com | 282 | | github | github.com | 283 | | guilded | guilded.gg | 284 | | reddit | www.reddit.com | 285 | | twitch | twitch.tv | 286 | | twitter | twitter.com/\* | 287 | | vimeo | vimeo.com | 288 | | youtube | youtube.com/\* | 289 | 290 | ### Embed Object 291 | 292 | Embeds objects in Guilded are the same as in Discord, with the exception of `iconUrl` being preferred over `icon_url` for `embed.author`s and `embed.footer`s. 293 | 294 | ###### Embed Structure 295 | 296 | | Field | Type | Description | 297 | |--------------|--------------------------------------------------------|----------------------------| 298 | | title? | string | title of embed | 299 | | description? | string | description of embed | 300 | | url? | string | url of embed | 301 | | timestamp? | ISO8601 timestamp | timestamp of embed content | 302 | | color? | integer | color code of the embed | 303 | | footer? | [embed footer](#embed-footer-structure) object | footer information | 304 | | image? | [embed image](#embed-image-structure) object | image information | 305 | | thumbnail? | [embed thumbnail](#embed-thumbnail-structure) object | thumbnail information | 306 | | video? | [embed video](#embed-video-structure) object | video information | 307 | | provider? | [embed provider](#embed-provider-structure) object | provider information | 308 | | author? | [embed author](#embed-author-structure) object | author information | 309 | | fields? | array of [embed field](#embed-field-structure) objects | fields information | 310 | 311 | ###### Embed Thumbnail Structure 312 | 313 | | Field | Type | Description | 314 | |---------|---------|------------------------------------------------| 315 | | url? | string | source url of thumbnail. only supports http(s) | 316 | | height? | integer | height of thumbnail | 317 | | width? | integer | width of thumbnail | 318 | 319 | ###### Embed Video Structure 320 | 321 | | Field | Type | Description | 322 | |---------|---------|----------------------------| 323 | | url? | string | source url of video | 324 | | height? | integer | height of video | 325 | | width? | integer | width of video | 326 | 327 | ###### Embed Image Structure 328 | 329 | | Field | Type | Description | 330 | |---------|---------|--------------------------------------------| 331 | | url? | string | source url of image. only supports http(s) | 332 | | height? | integer | height of image | 333 | | width? | integer | width of image | 334 | 335 | ###### Embed Provider Structure 336 | 337 | | Field | Type | Description | 338 | |-------|--------|------------------| 339 | | name? | string | name of provider | 340 | | url? | string | url of provider | 341 | 342 | ###### Embed Author Structure 343 | 344 | | Field | Type | Description | 345 | |-------------|--------|-------------------------------------------| 346 | | name? | string | name of author | 347 | | url? | string | url of author | 348 | | iconUrl?\* | string | url of author icon. only supports http(s) | 349 | | icon_url?\* | string | url of author icon. only supports http(s) | 350 | 351 | \* You may provide either `iconUrl` or `icon_url`, but `icon_url` will only show up on mobile devices. For this reason, `iconUrl` is recommend instead. 352 | 353 | ###### Embed Footer Structure 354 | 355 | | Field | Type | Description | 356 | |-------------|--------|-------------------------------------------| 357 | | text | string | footer text | 358 | | iconUrl?\* | string | url of footer icon. only supports http(s) | 359 | | icon_url?\* | string | url of footer icon. only supports http(s) | 360 | 361 | \* You may provide either `iconUrl` or `icon_url`, but `icon_url` will only show up on mobile devices. For this reason, `iconUrl` is recommend instead. 362 | 363 | ###### Embed Field Structure 364 | 365 | | Field | Type | Description | 366 | |---------|---------|-------------------------------------------------| 367 | | name | string | name of the field | 368 | | value | string | value of the field | 369 | | inline? | boolean | whether or not this field should display inline | 370 | 371 | ## Get Embed for URL 372 | GET/content/embed_info 373 | 374 | Generate embed data for a specific URL. Returns a special [unfurl embed object](#unfurl-embed-object) on success. On failure, this will return an empty dictionary with status code 200. 375 | 376 | ###### Query Params 377 | 378 | | Field | Type | Description | Required | 379 | |-------|--------|------------------------------|----------| 380 | | url | string | the url to get an embed for | true | 381 | 382 | ## Embed Limits 383 | 384 | Leading and trailing whitespace characters are included in the following limits; they are kept intact despite not being visible in the desktop client. 385 | 386 | | Field | Limit | 387 | |----------------------------------------------------------|------------------| 388 | | title | 256 characters | 389 | | description | 2048 characters | 390 | | fields | 25 field objects | 391 | | [field.name](/resources/channel#embed-field-structure) | 256 characters | 392 | | [field.value](/resources/channel#embed-field-structure) | 1024 characters | 393 | | [footer.text](/resources/channel#embed-footer-structure) | 2048 characters | 394 | | [author.name](/resources/channel#embed-author-structure) | 256 characters | 395 | 396 | There is no explicit character limit for the sum of all the above fields, however utilizing every text slot you may fit a total of 36,608 characters per embed. 397 | 398 | ## Get Channel 399 | GET/content/route/metadata?route=//channels/{[channel.id](/resources/channel#channel-object)}/chat 400 | 401 | Get a channel by ID. Returns a [channel](#channel-object) object wrapped in `metadata.channel` on success. 402 | 403 | | Field | Type | Description | Required | 404 | |-----------|-------------------------------|-------------------------------------|----------| 405 | | route | string (metadata path) | the channel to get the message from | true | 406 | 407 | ## Get Channel Messages 408 | GET/channels/{[channel.id](/resources/channel#channel-object)}/messages 409 | 410 | Returns the messages for a channel. Only available if the channel is public. Returns an array of [message](/resources/channel#message-object) objects and a boolean `hasPastMessages` detailing if there are messages preceeding this array on success. 411 | 412 | ###### Query String Params 413 | 414 | | Field | Type | Description | Required | Default | 415 | |------------|-------------------|-----------------------------------------------------------|----------|---------| 416 | | limit | integer | max number of messages to return (0-2^63)\* | false | 51 | 417 | | beforeDate | ISO8601 timestamp | filters messages by those made before a certain timestamp | false | now | 418 | | afterDate | ISO8601 timestamp | filters messages by those made after a certain timestamp | false | epoch? | 419 | 420 | \* `limit` is interpreted as a bigint value and therefore can be as high as 2^63. Anything over this value will quickly return a 500 error code. 421 | 422 | ## Get Channel Message 423 | GET/content/route/metadata?route=//channels/{[channel.id](/resources/channel#channel-object)}/chat?messageId={[message.id](/resources/channel#message-object)} 424 | 425 | Get a specific message in the channel. Only available if the message's channel is public. On success, returns a [message](#message-object) object (`metadata.message`) and the message's [channel](#channel-object) object (`metadata.channel`). 426 | 427 | ###### Query String Params 428 | 429 | | Field | Type | Description | Required | 430 | |-----------|-------------------------------|-------------------------------------|----------| 431 | | route | string (metadata path) | the channel to get the message from | true | 432 | | messageId | [message id](#message-object) | the message to get | true | 433 | 434 | ## Get Pinned Messages 435 | GET/channels/{[channel.id](/resources/channel#channel-object)}/pins 436 | 437 | Returns all pinned messages in the channel as an array of [message](/resources/channel#message-object) objects inside a `message` key. 438 | -------------------------------------------------------------------------------- /docs/resources/emoji.md: -------------------------------------------------------------------------------- 1 | # Custom Reactions/Emojis 2 | 3 | A "custom reaction" refers to a custom server emoji in Guilded. However, since this name is silly and confusing, this page will refer to this concept as "emojis", "custom emoijs", or "team emojis". 4 | 5 | ### Custom Emoji Object 6 | 7 | ###### Custom Emoji Structure 8 | 9 | | Field | Type | Description | 10 | |-----------------|-----------------------------------------|--------------------------------------------------------------| 11 | | id | integer | emoji's id (cannot be used for forming a cdn url) | 12 | | name | string | emoji's name | 13 | | createdBy | [user id](/resources/user#user-object) | user's id that created this emoji | 14 | | createdAt | ISO8601 timestamp | when this emoji was created | 15 | | png | string | aws url to this emoji's image file | 16 | | webp | string | aws url to this emoji's image file | 17 | | apng | string | aws url to this emoji's image file | 18 | | aliases | array of strings | an array of aliases this emoji can be used with | 19 | | teamId | [team id](/resources/team#team-object) | team's id that this emoji is from | 20 | | isDeleted | boolean | whether this emoji has been deleted | 21 | | discordEmojiId | ?snowflake | the discord emoji's id this emoji corresponds to | 22 | | discordSyncedAt | ?ISO8601 timestamp | when this emoji was last synced with its discord counterpart | 23 | 24 | ###### Emoji Example 25 | 26 | ```json 27 | { 28 | "id": 239839, 29 | "name": "beepboop", 30 | "png": "https://s3-us-west-2.amazonaws.com/www.guilded.gg/CustomReaction/36b263b547cf38de0d55ef01e1ab55ab-Full.webp?w=120&h=120", 31 | "webp": "https://s3-us-west-2.amazonaws.com/www.guilded.gg/CustomReaction/36b263b547cf38de0d55ef01e1ab55ab-Full.webp?w=120&h=120", 32 | "apng": "https://s3-us-west-2.amazonaws.com/www.guilded.gg/CustomReaction/36b263b547cf38de0d55ef01e1ab55ab-Full.webp?w=120&h=120", 33 | "aliases": [], 34 | "createdAt": "2020-07-28T06:48:56.525Z", 35 | "createdBy": "EdVMVKR4", 36 | "teamId": "NRgqXnPE", 37 | "isDeleted": false, 38 | "discordEmojiId": null, 39 | "discordSyncedAt": "2020-07-28T06:49:03.668Z" 40 | } 41 | ``` 42 | 43 | ### Emoji Pack Object 44 | 45 | !!! info 46 | Emoji packs can include a maximum of 50 emojis. 47 | 48 | ###### Emoji Pack Structure 49 | 50 | | Field | Type | Description | 51 | |--------|-------------------------|----------------------------------------------------------------------------------------------| 52 | | name | string | name of the emoji pack | 53 | | author | string | author of the emoji pack | 54 | | emojis | array of partial emojis | list of emojis to import. each item should include a `name` (alphanumberic only) and a `url` | 55 | 56 | ###### Example Emoji Pack 57 | 58 | ```json 59 | { 60 | "name": "Guilded emojis", 61 | "author": "emoji.gg", 62 | "emotes": [ 63 | { 64 | "name": "gil_wut", 65 | "url": "https://emoji.gg/assets/emoji/6017_gil_wut.png" 66 | }, 67 | { 68 | "name": "gil_woah", 69 | "url": "https://emoji.gg/assets/emoji/9837_gil_woah.png" 70 | }, 71 | { 72 | "name": "gil_thumb", 73 | "url": "https://emoji.gg/assets/emoji/8264_gil_thumb.png" 74 | }, 75 | { 76 | "name": "gil_think", 77 | "url": "https://emoji.gg/assets/emoji/2294_gil_think.png" 78 | }, 79 | { 80 | "name": "gil_sweat", 81 | "url": "https://emoji.gg/assets/emoji/5722_gil_sweat.png" 82 | }, 83 | { 84 | "name": "gil_smug", 85 | "url": "https://emoji.gg/assets/emoji/7756_gil_smug.png" 86 | }, 87 | { 88 | "name": "gil_shrug", 89 | "url": "https://emoji.gg/assets/emoji/3769_gil_shrug.png" 90 | }, 91 | { 92 | "name": "gil_scared", 93 | "url": "https://emoji.gg/assets/emoji/2002_gil_scared.png" 94 | }, 95 | { 96 | "name": "gil_salute", 97 | "url": "https://emoji.gg/assets/emoji/7259_gil_salute.png" 98 | }, 99 | { 100 | "name": "gil_ree", 101 | "url": "https://emoji.gg/assets/emoji/6400_gil_ree.png" 102 | }, 103 | { 104 | "name": "gil_stare", 105 | "url": "https://emoji.gg/assets/emoji/9969_gil_stare.png" 106 | }, 107 | { 108 | "name": "gil_notlikethis", 109 | "url": "https://emoji.gg/assets/emoji/1616_gil_notlikethis.png" 110 | }, 111 | { 112 | "name": "gil_lul", 113 | "url": "https://emoji.gg/assets/emoji/5606_gil_lul.png" 114 | }, 115 | { 116 | "name": "gil_lol", 117 | "url": "https://emoji.gg/assets/emoji/7890_gil_lol.png" 118 | }, 119 | { 120 | "name": "gil_wave", 121 | "url": "https://emoji.gg/assets/emoji/2469_gil_wave.png" 122 | }, 123 | { 124 | "name": "gil_heh", 125 | "url": "https://emoji.gg/assets/emoji/6192_gil_heh.png" 126 | }, 127 | { 128 | "name": "guilded", 129 | "url": "https://emoji.gg/assets/emoji/7391_guilded.png" 130 | }, 131 | { 132 | "name": "gil_facepalm", 133 | "url": "https://emoji.gg/assets/emoji/7256_gil_facepalm.png" 134 | }, 135 | { 136 | "name": "gil_eyes", 137 | "url": "https://emoji.gg/assets/emoji/6197_gil_eyes.png" 138 | }, 139 | { 140 | "name": "gil_doge", 141 | "url": "https://emoji.gg/assets/emoji/1037_gil_doge.png" 142 | }, 143 | { 144 | "name": "gil_deal_with_it", 145 | "url": "https://emoji.gg/assets/emoji/2315_gil_deal_with_it.png" 146 | }, 147 | { 148 | "name": "gil_dab", 149 | "url": "https://emoji.gg/assets/emoji/5387_gil_dab.png" 150 | }, 151 | { 152 | "name": "gil_cry", 153 | "url": "https://emoji.gg/assets/emoji/4846_gil_cry.png" 154 | }, 155 | { 156 | "name": "cheer_gil", 157 | "url": "https://emoji.gg/assets/emoji/8188_cheer_gil.png" 158 | } 159 | ] 160 | } 161 | ``` 162 | 163 | ## Get Team Emojis 164 | GET/teams/{[team.id](/resources/team#team-object)}/customReactions 165 | 166 | Returns a list of [emoji](#custom-emoji-object) objects for the given team. 167 | 168 | ###### Query Params 169 | 170 | | Field | Type | Description | Required | Default | 171 | |------------------|----------------------------------------|----------------------------------------------------------------------|----------|---------| 172 | | maxItems | integer | the maximum number of emojis to return | | | 173 | | when[upperValue] | ISO8601 timestamp | return emojis created after this time | false | | 174 | | when[lowerValue] | ISO8601 timestamp | return emojis created before this time | false | | 175 | | createdBy | [user id](/resources/user#user-object) | return emojis created by this user's id | false | | 176 | | searchTerm | string | search emoji names with a string | false | | 177 | | beforeId | [emoji id](#custom-emoji-object) | return emojis created before this emoji was created (for pagination) | false | | 178 | 179 | ## Emoji Packs 180 | 181 | This section has been moved to [Media Endpoints](/topics/media#get-custom-emoji-pack). 182 | 183 | ## Get Team Emoji Creators 184 | GET/teams/{[team.id](/resources/team#team-object)}/customReactionCreators 185 | 186 | Get a list of users who have created emojis in this team. 187 | 188 | !!! info 189 | This will return each user once. To see how many emojis a specific user has uploaded, consider filtering the response from [Get Team Emojis](#get-team-emojis) 190 | 191 | ###### Example Response 192 | 193 | ```json 194 | [ 195 | {"userId": "EdVMVKR4"}, 196 | {"userId": "lAeMagzA"} 197 | ] 198 | ``` 199 | -------------------------------------------------------------------------------- /docs/resources/group.md: -------------------------------------------------------------------------------- 1 | # Groups 2 | 3 | A group is a sub-section of a [team](/resources/team) that allows for custom membership based on roles. They can have a custom icon and name (under the main team's name) in the sidebar, making them somewhat of a middle ground between a permission-locked category and a separate team entirely. 4 | 5 | ### Group Object 6 | 7 | ###### Group Structure 8 | 9 | | Field | Type | Description | 10 | |---------------------------------|-------------------------------|-----------------------------------------------------------------------| 11 | | id | [generic id](/reference#ids) | the id of this group | 12 | | name | string | the name of this group | 13 | | description | ?string | the description of this group | 14 | | priority | integer | where this group is visually the sidebar (base group is 1, not 0) | 15 | | type | string | the type of this group. unsure in what context it would not be 'team' | 16 | | avatar | ?string | the group's avatar url | 17 | | banner | ?string | the group's banner url | 18 | | teamId | [generic id](/reference#ids) | the id of the team that this group is part of | 19 | | gameId | ?integer | the id of the game (if any) that this group has been assigned | 20 | | additionalGameInfo | dictionary | ??? | 21 | | visibilityTeamRoleId | integer | the primary role id that is allowed to view this group | 22 | | visibilityTeamRoleIds | array of integer | all role ids that are allowed to view this group | 23 | | additionalVisibilityTeamRoleIds | ?array of integer | extra role ids that are allowed to view this group | 24 | | membershipTeamRoleId | integer | the primary role id that is a member of this group | 25 | | membershipTeamRoleIds | array of integer | all role ids that are a member of this group | 26 | | additionalMembershipTeamRoleIds | ?array of integer | extra role ids that are a member of this group | 27 | | isBase | boolean | whether this group is the base group, or "Server home" in the UI | 28 | | createdAt | ISO8601 timestamp | when this group was created | 29 | | createdBy | ?[generic id](/reference#ids) | the id of the user who created this group (null if base) | 30 | | updatedAt | ?ISO8601 timestamp | when this group was last updated (edited) | 31 | | updatedBy | ?[generic id](/reference#ids) | the id of the user who last updated (edited) this group | 32 | | deletedAt | ?ISO8601 timestamp | when this group was deleted | 33 | | customReactionId | ?integer | the custom emoji assigned to this group (just spitballing here) | 34 | | isPublic | boolean | whether this group can be seen without being in the server | 35 | | archivedAt | ?ISO8601 timestamp | when this group was archived | 36 | | archivedBy | ?[generic id](/reference#ids) | the id of the user who archived this group | 37 | | membershipUpdates | array | ??? | 38 | -------------------------------------------------------------------------------- /docs/resources/team.md: -------------------------------------------------------------------------------- 1 | # Teams 2 | 3 | The meat of communication on Guilded. They are referred to as "servers" in the UI. 4 | 5 | ### Team Object 6 | 7 | ###### Team Structure 8 | 9 | | Field | Type | Description | 10 | |-----------------------|--------------------------------------------------------|---------------------------------------------------------------------------------| 11 | | id | [generic id](/reference#ids) | the team's id | 12 | | name | string | the team's name | 13 | | subdomain | ?string | custom "url" of the team. equivalent to discord's `vanity_url_code` | 14 | | description | ?string | the team's description | 15 | | bio (deprecated) | ?string | the team's bio - deprecated in favor of `description` | 16 | | profilePicture | ?string | the team's avatar url | 17 | | teamDashImage | ?string | the team's banner url | 18 | | ownerId | [user id](/reference#ids) | id of the team's owner | 19 | | createdAt | ISO8601 timestamp | when the team was created | 20 | | type | string | the [type of team](#team-types) | 21 | | members?\* | array of [members](#team-member-object) | the members in this team | 22 | | bots?\*\* | array of flow-bots | the flow-bots in this team | 23 | | webhooks?\*\* | array of [webhooks](/resources/webhook#webhook-object) | the webhooks in this team | 24 | | baseGroup | [group](/resources/group#group-object) | the team's base group | 25 | | visibility | string | the team's [visibility setting](#team-visibility) | 26 | | isRecruiting | boolean | whether the team is accepting new applications | 27 | | isVerified | boolean | whether the team is verified | 28 | | isPro | boolean | whether the team is "pro" - probably deprecated | 29 | | isPublic | boolean | whether the team is public. true when `visibility` is `open-entry` | 30 | | isDiscoverable | boolean | whether the team will show up in search results & the server directory | 31 | | rolesById | object | mapping of role id (string) to role, plus a duplicate `baseRole` | 32 | | userFollowsTeam | boolean | whether the current users follows the team | 33 | | isUserApplicant? | boolean | whether the current user has a pending application in the team | 34 | | isUserInvited? | boolean | whether the current user has been invited to the team | 35 | | isUserBannedFromTeam? | boolean | whether the current user is banned from the team | 36 | | followerCount | ?integer | the number of followers the team has (approximate) | 37 | | memberCount | ?string | the number of members the team has (approximate) | 38 | | onlineMemberCount? | ?string | the number of non-offline members in the team | 39 | | measurements? | object | a [team measurements](#team-measurements-object) object for the team | 40 | | games? | array of [games ids](/resources/user#game-ids) | the games that the team plays | 41 | | additionalGameInfo | object | mapping of game id to `region` and `platformps4,xbox,pc`, both optional strings | 42 | 43 | \* `members` will only contain the current user's member data for the [Get Team Info](#get-team-info) response. 44 | 45 | \*\* `bots` and `webhooks` are not present for the [Get Team Info](#get-team-info) response. 46 | 47 | ###### Example Team 48 | 49 | ```json 50 | { 51 | "id": "4R5q39VR", 52 | "name": "Guilded-API", 53 | "subdomain": "guilded-api", 54 | "bio": null, 55 | "status": null, 56 | "timezone": "America/New York (EST/EDT)", 57 | "description": "The unofficial resource hub for all API-related projects and development to do with the Guilded API. API docs: guildedapi.com", 58 | "type": "community", 59 | "visibility": "open-entry", 60 | "createdAt": "2020-07-31T18:10:35.302Z", 61 | "ownerId": "EdVMVKR4", 62 | "profilePicture": "https://s3-us-west-2.amazonaws.com/www.guilded.gg/TeamAvatar/a66e23924a4bc49fbf9242a98d955a7c-Large.png?w=450&h=450", 63 | "teamDashImage": "https://s3-us-west-2.amazonaws.com/www.guilded.gg/TeamBanner/62d94db23c910fa3a209b5edf2cf7387-Hero.png?w=1067&h=600", 64 | "homeBannerImageSm": "https://s3-us-west-2.amazonaws.com/www.guilded.gg/TeamBanner/62d94db23c910fa3a209b5edf2cf7387-Hero.png?w=1067&h=600", 65 | "homeBannerImageMd": "https://s3-us-west-2.amazonaws.com/www.guilded.gg/TeamBanner/62d94db23c910fa3a209b5edf2cf7387-Hero.png?w=1067&h=600", 66 | "homeBannerImageLg": "https://s3-us-west-2.amazonaws.com/www.guilded.gg/TeamBanner/62d94db23c910fa3a209b5edf2cf7387-Hero.png?w=1067&h=600", 67 | "additionalInfo": { 68 | "platform": "native" 69 | }, 70 | "additionalGameInfo": {}, 71 | "teamPreferences": null, 72 | "socialInfo": { 73 | "twitter": "@GuildedAPI" 74 | }, 75 | "isRecruiting": false, 76 | "isVerified": false, 77 | "isPro": false, 78 | "isPublic": true, 79 | "notificationPreference": null, 80 | "isDiscoverable": true, 81 | "baseGroup": { 82 | "id": "l3GmAe9d", 83 | "type": "team", 84 | "name": "Server home", 85 | "description": null, 86 | "avatar": null, 87 | "banner": null, 88 | "priority": 1, 89 | "teamId": "4R5q39VR", 90 | "gameId": null, 91 | "visibilityTeamRoleId": 23138884, 92 | "membershipTeamRoleId": 23138884, 93 | "isBase": true, 94 | "isPublic": true, 95 | "additionalGameInfo": {}, 96 | "createdBy": null, 97 | "createdAt": "2020-07-31T18:10:35.376Z", 98 | "updatedBy": "EdVMVKR4", 99 | "customReactionId": null, 100 | "updatedAt": "2021-05-03T19:20:08.249Z", 101 | "deletedAt": null, 102 | "archivedAt": null, 103 | "archivedBy": null 104 | }, 105 | "followingGroups": [], 106 | "rolesById": { 107 | "26302427": { 108 | "id": 26302427, 109 | "name": "Bot", 110 | "color": "#ffffff", 111 | "permissions": {"xp":1,"bots":1,"chat":503,"docs":15,"forms":18,"lists":63,"media":15,"voice":8179,"forums":123,"general":130100,"streams":51,"brackets":3,"calendar":31,"scheduling":11,"matchmaking":21,"recruitment":55,"announcements":7,"customization":49}, 112 | "priority": 17, 113 | "teamId": "4R5q39VR", 114 | "createdAt": "2021-12-01T17:11:43.610Z", 115 | "updatedAt": "2022-03-02T22:47:11.473Z", 116 | "isBase": false, 117 | "discordRoleId": null, 118 | "discordSyncedAt": null, 119 | "isMentionable": false, 120 | "isSelfAssignable": false, 121 | "isDisplayedSeparately": false, 122 | "botScope": {"userId":null} 123 | }, 124 | "baseRole": { 125 | "id": 23138884, 126 | "name": "Member", 127 | "color": "#ececee", 128 | "permissions": {"chat":243,"docs":2,"forms":16,"lists":2,"media":2,"voice":6211,"forums":67,"streams":51,"calendar":2,"scheduling":3,"announcements":2,"customization":16}, 129 | "priority": 1, 130 | "teamId": "4R5q39VR", 131 | "createdAt": "2020-07-31T18:10:35.350Z", 132 | "updatedAt": "2022-03-02T22:47:11.473Z", 133 | "isBase": true, 134 | "discordRoleId": null, 135 | "discordSyncedAt": null, 136 | "isMentionable": true, 137 | "isSelfAssignable": false, 138 | "isDisplayedSeparately": true, 139 | "botScope": null 140 | } 141 | }, 142 | "userFollowsTeam": false, 143 | "followerCount": 88, 144 | "memberCount": "1958", 145 | "members": [ 146 | { 147 | "id": "EdVMVKR4", 148 | "name": "shay", 149 | "type": "user", 150 | "membershipRole": "admin", 151 | "profilePicture": "https://s3-us-west-2.amazonaws.com/www.guilded.gg/UserAvatar/c2da767cf9795e7c73facc399159fefc-Large.png?w=450&h=450", 152 | "roleIds": [23138891,23281097,23138936,23139118,23138883] 153 | } 154 | ], 155 | "upsell": null, 156 | "serverSubscriptionPlans": [], 157 | "teamPaymentInfo": null, 158 | "games": [], 159 | "bannerImages": {}, 160 | "lfmStatusByGameId": {}, 161 | "drawbridgeGateEnabled": false, 162 | "flair": [ 163 | { 164 | "id": 3 165 | } 166 | ], 167 | "socialLinks": [] 168 | } 169 | ``` 170 | 171 | ##### Team Types 172 | 173 | Team types are probably used in server discovery. 174 | 175 | | Value | 176 | |--------------| 177 | | team | 178 | | organization | 179 | | community | 180 | | clan | 181 | | guild | 182 | | friends | 183 | | streaming | 184 | | other | 185 | 186 | ##### Team Visibility 187 | 188 | Reflects the team's [privacy setting](https://www.guilded.gg/blog/server-privacy). 189 | 190 | | Value | Meaning | Default | 191 | |------------|-------------------------------------------------------------------------------------------------------------------|---------| 192 | | private | the team is not visible through its direct link and cannot show up in search results | false | 193 | | default | the team is visible through its direct link and will show up in search results if `team.isDiscoverable` is `true` | true | 194 | | open-entry | `default`, but the team does not require an invite to join | false | 195 | 196 | ### Team Measurements Object 197 | 198 | This object contains some statistics about the team. When available, you should prefer this object's `numMembers` over `team.memberCount` because it is more accurate. 199 | 200 | ###### Team Measurements Structure 201 | 202 | | Field | Type | Description | 203 | |------------------------------------------|-------------------|-------------------------------------------------------------------------------------------------------------------------| 204 | | numMembers | integer | the number of members the team has | 205 | | numFollowers | integer or string | the number of followers the team has | 206 | | numRecentMatches | integer | the number of matches the team has participated in recently | 207 | | numRecentMatchWins | integer | the number of matches the team has won recently | 208 | | matchmakingGameRanks | array | | 209 | | numFollowersAndMembers | integer | `numMembers` + `numFollowers` | 210 | | numMembersAddedInLastDay | integer | the number of members who have joined the team in the last 24 hours | 211 | | numMembersAddedInLastWeek | integer | the number of members who have joined the team in the last 7 days | 212 | | numMembersAddedInLastMonth | integer | the number of members who have joined the team in the last 30 days | 213 | | mostRecentMemberLastOnline | integer | unix timestamp of the last time a member was not offline in the team | 214 | | subscriptionMonthsRemaining (deprecated) | ?integer | the number of months remaining on the team's [guilded gold subscription](https://www.guilded.gg/p/new-feature-november) | 215 | 216 | ### Team Member Object 217 | 218 | ###### Team Member Structure 219 | 220 | | Field | Type | Description | 221 | |---------------------|-------------------------------------------------------------|---------------------------------------------------------------------------| 222 | | id | [generic id](/reference#ids) | the user's id | 223 | | name | string | the user's username, not unique across the platform | 224 | | nickname | string | the member's team-specific nickname | 225 | | badges | ?array | the badges that this member has ("GuildedStaff", "PartnerProgram", ?) | 226 | | membershipRole | string | ? | 227 | | profilePicture | string (url) | the user's avatar url | 228 | | profileBannerBlur | ?string (url) | the user's banner url | 229 | | joinDate | ISO8601 timestamp | when this member joined their team | 230 | | userStatus | [user status object](/resources/user#user-status-object) | this user's current activity/"status" | 231 | | userPresenceStatus | integer | this [user's presence](/resources/user#user-presence) (online, idle, etc) | 232 | | userTransientStatus | [transient status object](/resources/user#transient-status) | this user's transient status (game, streaming, ?) | 233 | | aliases | array | the linked games on the user's profile | 234 | | lastOnline | ISO8601 timestamp | when the user was last online | 235 | | roleIds | array of integer | the roles' ids that the member has | 236 | | subscriptionType | ?integer(?) | guilded gold-related value | 237 | | socialLinks | array of dictionaries | each item has `type` - the platform, `handle` - the user's username on that platform, and `additionalInfo` - unknown | 238 | | teamXp | integer | how much xp the member has in this team | 239 | 240 | ###### Example Team Member 241 | 242 | ```json 243 | { 244 | "id": "EdVMVKR4", 245 | "name": "shay", 246 | "nickname": null, 247 | "badges": null, 248 | "joinDate": "2020-07-31T18:10:35.302Z", 249 | "membershipRole": "admin", 250 | "lastOnline": "2021-03-07T05:22:09.597Z", 251 | "profilePicture": "https://s3-us-west-2.amazonaws.com/www.guilded.gg/UserAvatar/74bfc8be9425a926a1f48d9b078509bc-Large.png?w=450&h=450", 252 | "profileBannerBlur": "https://s3-us-west-2.amazonaws.com/www.guilded.gg/UserBanner/acaa9d0f78dd8cdd93f3ce44d14c0260-Hero.png?w=1500&h=500", 253 | "userStatus": { 254 | "content": null, 255 | "customReactionId": 294765, 256 | "customReaction": { 257 | "id": 294765, 258 | "name": "ablobwobwork", 259 | "png": "https://s3-us-west-2.amazonaws.com/www.guilded.gg/CustomReaction/d7cf013a4d01460a81186e65f1f8c12a-Full.webp?w=120&h=120&ia=1", 260 | "webp": "https://s3-us-west-2.amazonaws.com/www.guilded.gg/CustomReaction/d7cf013a4d01460a81186e65f1f8c12a-Full.webp?w=120&h=120&ia=1", 261 | "apng": null 262 | } 263 | }, 264 | "roleIds": [ 265 | 23138883, 266 | 23138891, 267 | 23138936, 268 | 23139118, 269 | 23281097 270 | ], 271 | "subscriptionType": null, 272 | "socialLinks": [ 273 | { 274 | "type": "twitter", 275 | "handle": "GuildedAPI", 276 | "additionalInfo": {} 277 | } 278 | ], 279 | "aliases": [], 280 | "userPresenceStatus": 1, 281 | "userTransientStatus": null, 282 | "teamXp": 0 283 | } 284 | ``` 285 | 286 | ### Ban Object 287 | 288 | ###### Ban Structure 289 | 290 | | Field | Type | Description | 291 | |-----------|-------------------------------------------------|------------------------------------------------------| 292 | | reason | string | the reason for the ban (can be empty, won't be null) | 293 | | userId | [user id](/resources/user#user-object) | the banned user's id | 294 | | bannedBy | [user id](/resources/user#user-object) | the moderator who banned this user | 295 | | createdAt | ISO8601 timestamp | when this ban was created | 296 | 297 | ###### Example Ban 298 | 299 | ```json 300 | { 301 | "reason": "something funny here, idk", 302 | "userId": "2d2Wg8Pm", 303 | "bannedBy": "EdVMVKR4", 304 | "createdAt": "2021-03-13T18:15:53.622Z" 305 | } 306 | ``` 307 | 308 | ### Invite Object 309 | 310 | ###### Invite Structure 311 | 312 | | Field | Type | Description | 313 | |-----------|-----------------------------------------|----------------------------------------------------------------| 314 | | id | [generic id](/reference#ids) | the invite's id, referred to as an 'invite code' in the client | 315 | | createdAt | ISO8601 timestamp | when the invite was created | 316 | | teamId | [team id](#team-object) | the team's id that the invite is for | 317 | | invitedBy | [user id](/resources/user#user-object) | the user's id who created the invite | 318 | | userBy | ?[user id](/resources/user#user-object) | a user's id who used the invite? | 319 | | gameId | ?integer | the game's id that the invite is for | 320 | | useCount | integer | how many times the invite has been used | 321 | 322 | ###### Example Invite 323 | 324 | ```json 325 | { 326 | "id": "XENGAmn2", 327 | "createdAt": "2021-02-26T22:43:52.380Z", 328 | "teamId": "4R5q39VR", 329 | "invitedBy": "EdVMVKR4", 330 | "usedBy": null, 331 | "gameId": null, 332 | "useCount": 0 333 | } 334 | ``` 335 | 336 | ## Get Team Info 337 | GET/teams/{[team.id](#team-object)}/info 338 | 339 | Returns a [team](#team-object) object wrapped in a `team` key on success. If the team is invalid or private, this returns HTTP 404. 340 | 341 | ## Get Team Channels 342 | GET/teams/{[team.id](#team-object)}/channels 343 | 344 | Returns a list of team [channel](/resources/channel#channel-object) objects. 345 | 346 | ## List Team Members 347 | GET/teams/{[team.id](#team-object)}/members 348 | 349 | Returns a list of partial [team members](#team-member-object), flow bots, and [webhooks](/topics/webhook#webhook-object) under `members`, `bots`, and `webhooks` keys respectively. A partial team member object includes, at minimum, `id` and `name`, but may also include one or multiple of `profilePicture`, `roleIds`, `userPresenceStatus`, and `nickname`. 350 | 351 | ## Detail Team Members 352 | POST/teams/{[team.id](#team-object)}/members/detail 353 | 354 | Returns an object of provided user IDs to [team members](#team-member-object). 355 | 356 | ###### JSON Params 357 | 358 | | Field | Type | Description | 359 | |------------------|----------------------------------------|-----------------------------------------------------------------------------------------------| 360 | | userIds | array of [generic ids](/reference#ids) | the members' IDs to get member details for | 361 | | idsForBasicInfo? | array of [generic ids](/reference#ids) | if an ID is included here, its entry in the response will also include basic user information | 362 | 363 | ###### Example Response 364 | 365 | ```json 366 | { 367 | "EdVMVKR4": { 368 | "userStatus": { 369 | "content": null, 370 | "customReactionId": 925765, 371 | "customReaction": { 372 | "id": 925765, 373 | "name": "blobspider", 374 | "png": "https://s3-us-west-2.amazonaws.com/www.guilded.gg/CustomReaction/b721e28333392c335fcff52eb27997fd-Full.webp?w=120&h=120", 375 | "webp": "https://s3-us-west-2.amazonaws.com/www.guilded.gg/CustomReaction/b721e28333392c335fcff52eb27997fd-Full.webp?w=120&h=120", 376 | "apng": null 377 | } 378 | }, 379 | "id": "EdVMVKR4", 380 | "name": "shay", 381 | "membershipRole": "admin", 382 | "profilePicture": "https://s3-us-west-2.amazonaws.com/www.guilded.gg/UserAvatar/c2da767cf9795e7c73facc399159fefc-Large.png?w=450&h=450", 383 | "userTransientStatus": null, 384 | "teamXp": 117, 385 | "lastOnline": "2022-04-29T21:10:42.120Z", 386 | "joinDate": "2020-07-31T18:10:35.302Z", 387 | "stonks": 56 388 | } 389 | } 390 | ``` 391 | -------------------------------------------------------------------------------- /docs/resources/user.md: -------------------------------------------------------------------------------- 1 | # Users 2 | 3 | Users are everywhere. They're in our servers, our DMs, our friends lists.. and in this documentation page! 4 | 5 | ### User Object 6 | 7 | ###### User Structure 8 | 9 | | Field | Type | Description | 10 | |------------------------|--------------------------------------------------------|-----------------------------------------------------------------------| 11 | | id | [generic id](/reference#ids) | the user's id | 12 | | name | string | the user's username, not unique across the platform | 13 | | type | string | the [type of user](#user-types) | 14 | | subdomain | ?string | the user's unique profile url | 15 | | aliases | array | the linked games on the user's profile | 16 | | email | ?string | the user's email. null if this is not you | 17 | | serviceEmail | ?string | ? | 18 | | profilePicture | string (url) | the user's avatar url | 19 | | profilePictureSm | string (url) | ^ | 20 | | profilePictureLg | string (url) | ^ | 21 | | profilePictureBlur | string (url) | ^ | 22 | | profileBannerSm | ?string (url) | the user's banner url | 23 | | profileBannerLg | ?string (url) | ^ | 24 | | profileBannerBlur | ?string (url) | ^ | 25 | | createdAt | ISO8601 timestamp | when the user's account was created | 26 | | joinDate? (deprecated) | ISO8601 timestamp | when the user's account was created. `createdAt` may appear instead | 27 | | steamId | ?string | this user's steam id, if linked | 28 | | userStatus | [user status object](#user-status-object) | this user's current activity/"status" | 29 | | userPresenceStatus | integer | this [user's presence](#user-presence) (online, idle, etc) | 30 | | userTransientStatus | [transient status object](#transient-status) | this user's transient status (game, streaming, ?) | 31 | | moderationStatus | ?string | this user's moderation status (e.g. banned, deleted) | 32 | | aboutInfo | [about info object](#about-info-object) | this user's bio and tagline | 33 | | lastOnline | ISO8601 timestamp | when this user was last online | 34 | | stonks? | integer | number of "stonks" the user has gotten from inviting people | 35 | | flairInfos? | array of [flair objects](#flair-object) | the flairs the user has on their profile | 36 | | teams? | boolean, array of [teams](/resources/team#team-object) | `false` if the user is not yourself, otherwise an array of your teams | 37 | 38 | ###### Example User 39 | 40 | ```json 41 | { 42 | "id": "EdVMVKR4", 43 | "name": "shay", 44 | "type": "user", 45 | "subdomain": "shayy", 46 | "aliases": [ 47 | { 48 | "alias": "shay", 49 | "discriminator": null, 50 | "name": "shay", 51 | "createdAt": "2021-03-03T21:02:19.901444+00:00", 52 | "userId": "EdVMVKR4", 53 | "gameId": 220015, 54 | "socialLinkSource": null, 55 | "additionalInfo": {}, 56 | "editedAt": "2021-03-03T21:02:19.901444+00:00", 57 | "socialLinkHandle": null, 58 | "playerInfo": null 59 | } 60 | ], 61 | "email": null, 62 | "profilePicture": "https://s3-us-west-2.amazonaws.com/www.guilded.gg/UserAvatar/74bfc8be9425a926a1f48d9b078509bc-Large.png?w=450&h=450", 63 | // Some profilePicture and banner keys removed for brevity 64 | "createdAt": "2020-07-27T14:07:28.336Z", 65 | "steamId": null, 66 | "userStatus": { 67 | "content": null, 68 | "customReactionId": 294765, 69 | "customReaction": { 70 | "id": 294765, 71 | "name": "ablobwobwork", 72 | "png": "https://s3-us-west-2.amazonaws.com/www.guilded.gg/CustomReaction/d7cf013a4d01460a81186e65f1f8c12a-Full.webp?w=120&h=120&ia=1", 73 | "webp": "https://s3-us-west-2.amazonaws.com/www.guilded.gg/CustomReaction/d7cf013a4d01460a81186e65f1f8c12a-Full.webp?w=120&h=120&ia=1", 74 | "apng": null 75 | } 76 | }, 77 | "moderationStatus": null, 78 | "aboutInfo": { 79 | "tagLine": "computer user" 80 | }, 81 | "lastOnline": "2021-03-08T00:24:49.144Z", 82 | "serviceEmail": null, 83 | "userPresenceStatus": 1, 84 | "userTransientStatus": null, 85 | "stonks": 2 86 | } 87 | ``` 88 | 89 | ##### User Types 90 | 91 | | Type | Description | 92 | |------|------------------------| 93 | | user | the account is a human | 94 | | bot | the account is a bot | 95 | 96 | ### User Presence 97 | 98 | | Value | Meaning | 99 | |-------|-------------------| 100 | | 1 | online | 101 | | 2 | idle | 102 | | 3 | dnd | 103 | | 4 | offline/invisible | 104 | 105 | ### Transient Status Object 106 | 107 | | Field | Type | Description | 108 | |-----------------|-------------------------------------|------------------------------------------| 109 | | id | integer | | 110 | | gameId | ?integer | the game's id this status is for (see the game ids table below for known valid values) | 111 | | name? | string | the game's name (should be included if gameId is null) | 112 | | type | string | the type of status ("gamepresence", ?) | 113 | | startedAt | ISO8601 timestamp | when this status started | 114 | | guildedClientId | [uuid](/reference#ids) | the client's id that this status is from | 115 | 116 | ###### Game IDs 117 | 118 | If you want to use this list in your application, feel free to grab it in [JSON format from our datatables repo](https://git.guildedapi.com/datatables/blob/main/games.json). 119 | 120 | | ID | Game | 121 | |--------|------------------------------------------| 122 | | 10100 | Overwatch | 123 | | 10200 | League of Legends | 124 | | 10300 | CounterStrike: Global Offensive | 125 | | 10400 | Dota 2 | 126 | | 10500 | Minecraft | 127 | | 10600 | World of Tanks | 128 | | 10700 | Battlefield 4 | 129 | | 10800 | World of Warcraft | 130 | | 10900 | Call of Duty: Black Ops III | 131 | | 101000 | Smite | 132 | | 101100 | Heroes of the Storm | 133 | | 101200 | Halo 5: Guardians | 134 | | 101300 | Tom Clancy’s The Division | 135 | | 101400 | Guild Wars 2 | 136 | | 101500 | Final Fantasy XIV: Shadowbringers | 137 | | 101600 | Starcraft II | 138 | | 101700 | The Elder Scrolls Online | 139 | | 101800 | Team Fortress II | 140 | | 101900 | Destiny | 141 | | 102000 | Terraria | 142 | | 102100 | Star Wars: The Old Republic | 143 | | 102200 | ArcheAge Unchained | 144 | | 102300 | Runescape | 145 | | 102400 | Diablo III | 146 | | 102500 | Vainglory | 147 | | 102600 | Clash of Clans | 148 | | 102700 | Rocket League | 149 | | 102800 | Pokémon GO | 150 | | 102900 | Grand Theft Auto V | 151 | | 103000 | EVE Online | 152 | | 103100 | ARK: Survival Evolved | 153 | | 103200 | Arma 3 | 154 | | 103300 | Battlefield 1 | 155 | | 103400 | Black Desert Online | 156 | | 103500 | Call of Duty: Infinite Warfare | 157 | | 103600 | DayZ | 158 | | 103700 | Elite Dangerous | 159 | | 103800 | H1Z1: Just Survive | 160 | | 103900 | Miscreated | 161 | | 104000 | Neverwinter | 162 | | 104100 | Path of Exile | 163 | | 104200 | Rainbow Six Siege | 164 | | 104300 | Rust | 165 | | 104400 | Starbound | 166 | | 104500 | Star Citizen | 167 | | 104600 | Tabletop Simulator | 168 | | 104700 | Secret World Legends | 169 | | 104800 | Titanfall | 170 | | 104900 | Titanfall 2 | 171 | | 105000 | Total War: WARHAMMER | 172 | | 105100 | Warframe | 173 | | 105200 | No Man's Sky | 174 | | 105300 | Dragon Quest X | 175 | | 105400 | Ingress | 176 | | 105500 | Phantasy Star Online 2 | 177 | | 105600 | Skyforge | 178 | | 105700 | Tera | 179 | | 105800 | Wildstar | 180 | | 105900 | Metal Gear Online | 181 | | 106000 | Super Smash Bros. for Wii U | 182 | | 106100 | 7 Days to Die | 183 | | 106200 | Air Mech | 184 | | 106300 | Battleborn | 185 | | 106400 | Blacklight: Retribution | 186 | | 106500 | Battlecry | 187 | | 106600 | Chivalry | 188 | | 106700 | Civilization VI | 189 | | 106800 | Dragon Ball Xenoverse 2 | 190 | | 106900 | Dragon Nest | 191 | | 107000 | The Elder Scrolls: Legends | 192 | | 107100 | EVE: Valkyrie | 193 | | 107200 | For Honor | 194 | | 107300 | Forza Horizon 3 | 195 | | 107400 | Gears of War 4 | 196 | | 107500 | Gigantic | 197 | | 107600 | Gran Turismo Sport | 198 | | 107700 | Halo Wars 2 | 199 | | 107800 | Hawken | 200 | | 107900 | Hearthstone | 201 | | 108000 | Heroes of Newerth | 202 | | 108100 | LawBreakers | 203 | | 108200 | Marvel Heroes | 204 | | 108300 | Paragon | 205 | | 108400 | Portal Knights | 206 | | 108500 | Riders of Icarus | 207 | | 108600 | Scrolls | 208 | | 108700 | Stardew Valley | 209 | | 108800 | Star Wars Battlefront | 210 | | 108900 | Street Fighter V | 211 | | 109000 | Strife | 212 | | 109100 | Tekken 7 | 213 | | 109200 | The Crew | 214 | | 109300 | Trove | 215 | | 109400 | Warhammer 40000: Eternal Crusade | 216 | | 109500 | XCOM2 | 217 | | 109600 | Halo Wars | 218 | | 109700 | APB Reloaded | 219 | | 109800 | Arena of Fate | 220 | | 109900 | Call of Duty: Advanced Warfare | 221 | | 110000 | Crossout | 222 | | 110100 | Crusader Kings 2 | 223 | | 110200 | Duelyst | 224 | | 110300 | Dungeon Fighter Online | 225 | | 110400 | Evolve | 226 | | 110500 | Ghost Recon: Wildlands | 227 | | 110600 | Guns of Icarus | 228 | | 110700 | Heroes & Generals | 229 | | 110800 | Killing Floor 2 | 230 | | 110900 | King of Fighters XIV | 231 | | 111000 | Master of Orion | 232 | | 111100 | Battlefield Hardline | 233 | | 111200 | Of Kings And Men | 234 | | 111300 | Planetside 2 | 235 | | 111400 | Robocraft | 236 | | 111500 | Savage Resurrection | 237 | | 111600 | Shop Heroes | 238 | | 111700 | Warface | 239 | | 111800 | War Thunder | 240 | | 111900 | The Walking Dead: Road to Survival | 241 | | 112100 | Aion | 242 | | 112200 | Armello | 243 | | 112300 | Atlas Reactor | 244 | | 112400 | Blade & Soul | 245 | | 112500 | Camelot Unchained | 246 | | 112600 | Lineage 2 | 247 | | 112700 | Master X Master | 248 | | 112800 | Onward | 249 | | 112900 | RIGS Mechanized Combat League | 250 | | 113000 | The Black Watchmen | 251 | | 113100 | Critical Ops | 252 | | 113200 | Dead Or Alive 5 | 253 | | 113300 | Depth | 254 | | 113400 | DirtyBomb | 255 | | 113500 | Plants vs Zombies 2 | 256 | | 113600 | Pro Evolution Soccer | 257 | | 113700 | Star Trek Online | 258 | | 113800 | Strike Vector | 259 | | 113900 | The Tomorrow Children | 260 | | 114000 | Transformers: Fall of Cybertron | 261 | | 115000 | Ashes of the Singularity | 262 | | 116000 | Battlerite | 263 | | 117000 | Borderlands | 264 | | 118000 | Borderlands: The Pre-Sequel | 265 | | 119000 | Civilization: Beyond Earth | 266 | | 120000 | Creativerse | 267 | | 121000 | Day of Infamy | 268 | | 122000 | Dead by Daylight | 269 | | 123000 | Divinity: Original Sin | 270 | | 124000 | Divinity: Original Sin 2 | 271 | | 125000 | Endless Space 2 | 272 | | 126000 | E.T. Armies | 273 | | 127000 | EverQuest 2 | 274 | | 128000 | Faeria | 275 | | 129000 | FIFA 17 | 276 | | 130000 | Formula One 2016 | 277 | | 131000 | Fractured Space | 278 | | 132000 | Garry's Mod | 279 | | 133000 | Helldivers | 280 | | 134000 | Homeworld | 281 | | 135000 | Hybrid Wars | 282 | | 136000 | Insurgency | 283 | | 137000 | Left 4 Dead 2 | 284 | | 139000 | Loadout | 285 | | 140000 | Looterkings | 286 | | 141000 | Madden NFL 17 | 287 | | 142000 | MechWarrior Online | 288 | | 143000 | Mercenary Kings | 289 | | 144000 | Metal Gear Survive | 290 | | 145000 | Mirage: Arcane Warfare | 291 | | 146000 | Morphies Law | 292 | | 147000 | NBA 2K17 | 293 | | 148000 | Osiris: New Dawn | 294 | | 149000 | Out of Ammo | 295 | | 150000 | Paladins | 296 | | 151000 | Pit People | 297 | | 152000 | Pokken Tournament | 298 | | 153000 | Quake Champions | 299 | | 154000 | Sea of Thieves | 300 | | 155000 | Shard Games | 301 | | 156000 | ShootMania Storm | 302 | | 157000 | SMASH+GRAB | 303 | | 158000 | Splatoon | 304 | | 159000 | Summoners War | 305 | | 160000 | TowerFall | 306 | | 161000 | Toxikk | 307 | | 162000 | Tribes: Ascend | 308 | | 163000 | Umbrella Corps | 309 | | 164000 | Uncharted 4 | 310 | | 165000 | Unreal Tournament | 311 | | 166000 | Versus: Battle of the Gladiator | 312 | | 168000 | Armored Warfare | 313 | | 169000 | Breakaway | 314 | | 170000 | Clash Royale | 315 | | 171000 | H1Z1: King of the Kill | 316 | | 172000 | Infinite Tanks | 317 | | 173000 | Midair | 318 | | 174000 | Nidhogg | 319 | | 175000 | Nidhogg 2 | 320 | | 176000 | Redout | 321 | | 177000 | Shards Online | 322 | | 178000 | Space Hulk: Deathwing | 323 | | 179000 | Watch Dogs 2 | 324 | | 180000 | World of Warplanes | 325 | | 181000 | World of Warships | 326 | | 182000 | Astroneer | 327 | | 183000 | Endless Legend | 328 | | 184000 | Order & Chaos Online | 329 | | 185000 | Project Genom | 330 | | 186000 | Squad | 331 | | 187000 | Order & Chaos 2 | 332 | | 188000 | Conan Exiles | 333 | | 189000 | MU Legend | 334 | | 190000 | Mutant Football League | 335 | | 191000 | Revelation Online | 336 | | 192000 | Snow | 337 | | 193000 | Absolver | 338 | | 194000 | Agents of Mayhem | 339 | | 195000 | A Hat in Time | 340 | | 196000 | Battalion 1944 | 341 | | 197000 | Battletech | 342 | | 198000 | Crackdown 3 | 343 | | 199000 | Dauntless | 344 | | 200000 | EverQuest | 345 | | 201000 | Fortnite Battle Royale | 346 | | 202000 | Friday the 13th: The Game | 347 | | 203000 | Mass Effect: Andromeda | 348 | | 204000 | Lord of the Rings Online | 349 | | 205000 | Pantheon | 350 | | 206000 | Pillars of Eternity 2 | 351 | | 207000 | Red Dead Redemption 2 | 352 | | 208000 | Rift | 353 | | 209000 | State of Decay 2 | 354 | | 210000 | Albion Online | 355 | | 211000 | Chronicles of Elyria | 356 | | 212000 | Dark and Light | 357 | | 213000 | Grim Dawn | 358 | | 214000 | Playerunknown's Battlegrounds | 359 | | 215000 | Blockstorm | 360 | | 216000 | Destiny 2 | 361 | | 217000 | MapleStory | 362 | | 218000 | Gloria Victis | 363 | | 219000 | Starcraft | 364 | | 220000 | Tribal Wars 2 | 365 | | 220001 | Asta Online | 366 | | 220002 | Awesomenauts | 367 | | 220003 | Bless | 368 | | 220004 | Devilian | 369 | | 220005 | Gwent | 370 | | 220006 | STEAM HAMMER | 371 | | 220007 | The Unspoken | 372 | | 220008 | Titan Siege | 373 | | 220009 | Call of Duty: WWII | 374 | | 220010 | Age of Empires II | 375 | | 220011 | Crossfire | 376 | | 220012 | Foxhole | 377 | | 220013 | Hearts of Iron 4 | 378 | | 220014 | Kingdom Hearts Union χ | 379 | | 220015 | Mario Kart 8 | 380 | | 220016 | Marvel vs Capcom: Infinite | 381 | | 220017 | Rising Storm 2: Vietnam | 382 | | 220018 | Star Wars Galaxy of Heroes | 383 | | 220019 | Stellaris | 384 | | 220020 | Surviving Mars | 385 | | 220022 | Wakfu | 386 | | 220023 | Worlds Adrift | 387 | | 220024 | Arena of Valor | 388 | | 220025 | Aura Kingdom | 389 | | 220026 | Black Squad | 390 | | 220027 | Castle Story | 391 | | 220028 | Citadel | 392 | | 220029 | Crowfall | 393 | | 220030 | Crusaders of Light | 394 | | 220031 | Divekick | 395 | | 220032 | Escape from Tarkov | 396 | | 220033 | Everybody's Golf | 397 | | 220034 | FutureFight | 398 | | 220035 | Hyper Universe | 399 | | 220036 | Keystone | 400 | | 220037 | Kritika Online | 401 | | 220038 | Livelock | 402 | | 220039 | MOBA Legends | 403 | | 220040 | NextDay | 404 | | 220041 | Payday 2 | 405 | | 220042 | Planet Coaster | 406 | | 220043 | PWND | 407 | | 220044 | Roblox | 408 | | 220045 | Shadowverse | 409 | | 220046 | Spiral Knights | 410 | | 220047 | Splatoon 2 | 411 | | 220048 | Tower Unite | 412 | | 220049 | Tree of Life | 413 | | 220050 | Witch It | 414 | | 220051 | Alicia Online | 415 | | 220052 | Elyon - Ascent: Infinite Realm | 416 | | 220053 | Ashes of Creation | 417 | | 220054 | Brawl Stars | 418 | | 220055 | Darkfall: New Dawn | 419 | | 220056 | Darwin Project | 420 | | 220057 | Dissidia: Final Fantasy NT | 421 | | 220058 | Dofus | 422 | | 220059 | Dragon Ball FighterZ | 423 | | 220060 | Dual Universe | 424 | | 220061 | Dungeons & Dragons Online | 425 | | 220062 | Elsword | 426 | | 220063 | Heliborne | 427 | | 220064 | Lineage 2: Revolution | 428 | | 220065 | Lost Ark | 429 | | 220066 | Orcs Must Die! Unchained | 430 | | 220067 | Raiders of the Broken Planet | 431 | | 220068 | Star Wars Battlefront II | 432 | | 220069 | Tantra Rumble | 433 | | 220070 | The Exiled | 434 | | 220071 | Total War: ARENA | 435 | | 220072 | Total War: WARHAMMER II | 436 | | 220073 | Unison League | 437 | | 220074 | ValnirRok | 438 | | 221074 | Brawlhalla | 439 | | 222074 | Age of Conan: Unchained | 440 | | 223074 | Clash of Kings | 441 | | 224074 | Closers | 442 | | 225074 | Dungeons & Dragons | 443 | | 226074 | Eternal | 444 | | 227074 | Fantasy Strike | 445 | | 228074 | Fractured | 446 | | 229074 | Free Fire | 447 | | 230074 | Harry Potter: Wizards Unite | 448 | | 231074 | Hell Let Loose | 449 | | 232074 | Holdfast: Nations At War | 450 | | 233074 | Honkai Impact 3rd | 451 | | 234074 | iRacing | 452 | | 235074 | Ironsight | 453 | | 236074 | Kerbal Space Program | 454 | | 237074 | King of Avalon | 455 | | 238074 | Laser League | 456 | | 239074 | Maelstrom | 457 | | 240074 | Magic: The Gathering | 458 | | 241074 | Monster Hunter: World | 459 | | 242074 | OrbusVR | 460 | | 243074 | Pathfinder | 461 | | 244074 | Post Scriptum | 462 | | 245074 | Shadowrun | 463 | | 246074 | SoulWorker | 464 | | 247074 | Space Junkies | 465 | | 248074 | SpellForce 3 | 466 | | 249074 | Squids From Space | 467 | | 250074 | Stick Fight: The Game | 468 | | 251074 | 13th Age | 469 | | 252074 | The Wild Eight | 470 | | 253074 | Tree of Savior | 471 | | 254074 | Valiant Force | 472 | | 255074 | VRChat | 473 | | 256074 | War Dragons | 474 | | 257074 | Ylands | 475 | | 258074 | MapleStory 2 | 476 | | 259074 | Call of Duty: Black Ops 4 | 477 | | 260074 | Sky Noon | 478 | | 261074 | Unturned | 479 | | 262074 | War Robots | 480 | | 263074 | Game of Thrones: Conquest | 481 | | 264074 | Marvel Strike Force | 482 | | 265074 | Pokémon TCG Online | 483 | | 266074 | SCP: Secret Laboratory | 484 | | 267074 | Star Wars Commander | 485 | | 268074 | Raft | 486 | | 269074 | Tibia | 487 | | 270074 | TerraTech | 488 | | 271074 | Project: Gorgon | 489 | | 272074 | Life Is Feudal: MMO | 490 | | 273074 | Battlefield V | 491 | | 274074 | World of Tanks Blitz | 492 | | 275074 | Fallout: 76 | 493 | | 276074 | Infinite Flight | 494 | | 277074 | Europa Universalis IV | 495 | | 278074 | Rage 2 | 496 | | 279074 | Realm Royale | 497 | | 280074 | Skull & Bones | 498 | | 281074 | Super Smash Bros. Ultimate | 499 | | 282074 | Gears 5 | 500 | | 283074 | The Elder Scrolls: Blades | 501 | | 284074 | Generation Zero | 502 | | 285074 | Rend | 503 | | 286074 | The Division 2 | 504 | | 287074 | Defiance 2050 | 505 | | 288074 | Mavericks | 506 | | 289074 | Strange Brigade | 507 | | 290074 | Mario Tennis Aces | 508 | | 291074 | Eco | 509 | | 292074 | Town of Salem | 510 | | 293074 | Legends of Aria | 511 | | 294074 | Ragnarok Online | 512 | | 295074 | The Crew 2 | 513 | | 296074 | Captain Tsubasa: Dream Team | 514 | | 297074 | Remnant: From the Ashes | 515 | | 298074 | FIFA 19 | 516 | | 299074 | Madden NFL 19 | 517 | | 300074 | Fractured Lands | 518 | | 301074 | Planet of Heroes | 519 | | 302074 | Satisfactory | 520 | | 303074 | Roof Rage | 521 | | 304074 | Lords Mobile | 522 | | 305074 | TrackMania | 523 | | 306074 | Heroes Evolved | 524 | | 307074 | PixARK | 525 | | 308074 | Avorion | 526 | | 309074 | PUBG Mobile | 527 | | 310074 | Football Manager | 528 | | 311074 | Adventure Quest 3D | 529 | | 312074 | Anthem | 530 | | 313074 | Celtic Heroes | 531 | | 314074 | Dungeon Hunter Champions | 532 | | 315074 | Modern Combat Versus | 533 | | 316074 | Space Engineers | 534 | | 317074 | SCUM | 535 | | 318074 | Artifact | 536 | | 319074 | Don't Starve Together | 537 | | 320074 | Warhammer: Vermintide II | 538 | | 321074 | Interstellar Rift | 539 | | 322074 | Battlerite Royale | 540 | | 323074 | osu" | 541 | | 324074 | Rise of Kingdoms | 542 | | 325074 | New World | 543 | | 326074 | GunBound | 544 | | 327074 | Mount & Blade Warband | 545 | | 328074 | SoulCalibur VI | 546 | | 329074 | World War 3 | 547 | | 332074 | America's Army: Proving Grounds | 548 | | 333074 | Project CARS 2 | 549 | | 334074 | Forza Horizon 4 | 550 | | 335074 | Warcraft III: Reforged | 551 | | 336074 | Rise of Agon | 552 | | 337074 | Ring of Elysium | 553 | | 338074 | Temtem | 554 | | 339074 | FIFA Mobile | 555 | | 340074 | Atlas | 556 | | 341074 | Digital Combat Simulator | 557 | | 342074 | Last Year: The Nightmare | 558 | | 343074 | The Forest | 559 | | 344074 | Eden Rising | 560 | | 345074 | Creative Destruction | 561 | | 346074 | Final Fantasy XI | 562 | | 347074 | Insurgency: Sandstorm | 563 | | 348074 | Hurtworld | 564 | | 349074 | Mortal Kombat 11 | 565 | | 350074 | World of Warcraft Classic | 566 | | 351074 | Pantropy | 567 | | 352074 | Apex Legends | 568 | | 353074 | Rules of Survival | 569 | | 354074 | Allods Online | 570 | | 355074 | Star Trek Fleet Command | 571 | | 356074 | Empyrion: Galactic Survival | 572 | | 357074 | Mordhau | 573 | | 358074 | Echo Arena | 574 | | 359074 | Echo Combat | 575 | | 360074 | Planetside Arena | 576 | | 361074 | Halo | 577 | | 362074 | Halo 2 | 578 | | 363074 | Halo 3 | 579 | | 364074 | Halo: Reach | 580 | | 365074 | Halo 4 | 581 | | 366074 | Risk of Rain 2 | 582 | | 367074 | Tiny Tanks | 583 | | 368074 | Mobile Legends: Bang Bang | 584 | | 369074 | LifeAfter | 585 | | 370074 | Splitgate: Arena Warfare | 586 | | 371074 | Total War: Three Kingdoms | 587 | | 372074 | Astellia Online | 588 | | 373074 | FRAG Pro Shooter | 589 | | 374074 | Rocket Arena | 590 | | 375074 | Auto Chess | 591 | | 376074 | Bleeding Edge | 592 | | 377074 | Dota Underlords | 593 | | 378074 | Halo Infinite | 594 | | 379074 | Last Oasis | 595 | | 380074 | Midnight Ghost Hunt | 596 | | 381074 | Minecraft Dungeons | 597 | | 382074 | Outriders | 598 | | 383074 | Roller Champions | 599 | | 384074 | Teamfight Tactics | 600 | | 385074 | Battletoads | 601 | | 386074 | Clans of Reign | 602 | | 387074 | Hytale | 603 | | 388074 | Killsquad | 604 | | 389074 | Kingdom Under Fire 2 | 605 | | 390074 | Krunker | 606 | | 391074 | Call of Duty: Modern Warfare | 607 | | 392074 | Pokemon Sword & Shield | 608 | | 393074 | Skyweaver | 609 | | 394074 | Streets of Rage 4 | 610 | | 395074 | SYNCED: Off-Planet | 611 | | 396074 | The Cycle | 612 | | 397074 | Call of Duty: Mobile | 613 | | 398074 | FIFA 20 | 614 | | 399074 | Borderlands 3 | 615 | | 400074 | Warhammer 40K: Inquisitor - Martyr | 616 | | 401074 | Black Desert Mobile | 617 | | 402074 | GTFO | 618 | | 403074 | Hunt: Showdown | 619 | | 404074 | Old School RuneScape | 620 | | 405074 | Warfield | 621 | | 406074 | Magic the Gathering: Arena | 622 | | 407074 | Legends of Runeterra | 623 | | 408074 | Wolcen | 624 | | 409074 | American Truck Simulator | 625 | | 410074 | Boundless | 626 | | 411074 | Broomstick League | 627 | | 412074 | Call of Duty: Warzone | 628 | | 413074 | Disintegration | 629 | | 414074 | Euro Truck Simulator 2 | 630 | | 415074 | Kerbal Space Program 2 | 631 | | 416074 | Quantum League | 632 | | 417074 | Spellbreak | 633 | | 418074 | State of Survival | 634 | | 419074 | Rogue Company | 635 | | 420074 | Black Mesa | 636 | | 422074 | Valorant | 637 | | 423074 | Starborne | 638 | | 424074 | Torchlight III | 639 | | 425074 | Chivalry II | 640 | | 426074 | Predator: Hunting Grounds | 641 | | 427074 | Crucible | 642 | | 428074 | KartRider: Drift | 643 | | 429074 | Ninjala | 644 | | 430074 | Assetto Corsa | 645 | | 431074 | Assetto Corsa Competizione | 646 | | 432074 | Boom Beach | 647 | | 433074 | Conqueror's Blade | 648 | | 434074 | Crossfire X | 649 | | 435074 | DeadSide | 650 | | 436074 | Dragalia Lost | 651 | | 437074 | Killer Instinct | 652 | | 438074 | Pokémon Unite | 653 | | 439074 | Star Wars: Squadrons | 654 | | 440074 | TrackMania | 655 | | 441074 | World of Warships: Legends | 656 | | 442074 | Seven Deadly Sins: Grand Cross | 657 | | 443074 | ARMS | 658 | | 444074 | Blightbound | 659 | | 445074 | Contractors | 660 | | 446074 | Crash Team Racing: Nitro-Fueled | 661 | | 447074 | Tom Clancy's Elite Squad | 662 | | 448074 | Fragsurf | 663 | | 449074 | Grounded | 664 | | 450074 | Marvel's Avengers | 665 | | 451074 | Hyper Scape | 666 | | 452074 | NBA 2K21 | 667 | | 453074 | Need For Speed Heat | 668 | | 454074 | Plan 8 | 669 | | 455074 | Teppen | 670 | | 456074 | Fall Guys | 671 | | 457074 | Million Lords | 672 | | 458074 | Tetris 99 | 673 | | 459074 | Among Us | 674 | | 460074 | Diabotical | 675 | | 461074 | League of Legends Wild Rift | 676 | | 462074 | Genshin Impact | 677 | | 463074 | EVE Echoes | 678 | | 464074 | Baldur's Gate III | 679 | | 465074 | Phasmophobia | 680 | | 466074 | Call of Duty: Black Ops Cold War | 681 | | 467074 | SWORD ART ONLINE Alicization Lycoris | 682 | | 468074 | NARUTO TO BORUTO: Shinobi Striker | 683 | | 469074 | NARUTO SHIPPUDEN: Ultimate Ninja Storm 4 | 684 | | 470074 | Super Buckyball Tournament | 685 | | 471074 | PokerStars | 686 | | 472074 | FIFA 21 | 687 | | 473074 | Jackbox Party | 688 | | 474074 | Craftopia | 689 | | 475074 | Valheim | 690 | | 476074 | Knockout City | 691 | | 477074 | Farming Simulator 19 | 692 | 693 | ### User Status Object 694 | 695 | ###### User Status Structure 696 | 697 | | Field | Type | Description | 698 | |------------------|------------------------------------------------------------|-----------------------------------------------| 699 | | content | ?[user status content object](#user-status-content-object) | the actual content of the status | 700 | | customReactionId | ?integer | the emoji's id that goes alongside the status | 701 | | customReaction? | [emoji object](/resources/team#team-emoji-object) | the emoji that goes alongside the status | 702 | 703 | ###### Example User Status 704 | 705 | ```json 706 | { 707 | "content": { 708 | "object": "value", 709 | "document": { 710 | "data": {}, 711 | "nodes": [ 712 | { 713 | "data": {}, 714 | "type": "paragraph", 715 | "nodes": [ 716 | { 717 | "leaves": [ 718 | { 719 | "text": "g.gg/guilded-api", 720 | "marks": [], 721 | "object": "leaf" 722 | } 723 | ], 724 | "object": "text" 725 | }, 726 | { 727 | "data": { 728 | "reaction": { 729 | "id": 294745, 730 | "customReaction": { 731 | "id": 294745, 732 | "name": "blobcouple", 733 | "png": "https://s3-us-west-2.amazonaws.com/www.guilded.gg/CustomReaction/448cff53087b93e72298bae9d47708f1-Full.webp?w=120&h=120", 734 | "webp": "https://s3-us-west-2.amazonaws.com/www.guilded.gg/CustomReaction/448cff53087b93e72298bae9d47708f1-Full.webp?w=120&h=120", 735 | "apng": null 736 | }, 737 | "customReactionId": 294745 738 | } 739 | }, 740 | "type": "reaction", 741 | "nodes": [ 742 | { 743 | "leaves": [ 744 | { 745 | "text": ":blobcouple:", 746 | "marks": [], 747 | "object": "leaf" 748 | } 749 | ], 750 | "object": "text" 751 | } 752 | ], 753 | "object": "inline" 754 | }, 755 | { 756 | "leaves": [ 757 | { 758 | "text": "g.gg/blob-emoji ", 759 | "marks": [], 760 | "object": "leaf" 761 | } 762 | ], 763 | "object": "text" 764 | }, 765 | { 766 | "data": { 767 | "reaction": { 768 | "id": 294677, 769 | "customReaction": { 770 | "id": 294677, 771 | "name": "blobpats", 772 | "png": "https://s3-us-west-2.amazonaws.com/www.guilded.gg/CustomReaction/ff03be6efe491bc934b1c217d70da9ce-Full.webp?w=120&h=120", 773 | "webp": "https://s3-us-west-2.amazonaws.com/www.guilded.gg/CustomReaction/ff03be6efe491bc934b1c217d70da9ce-Full.webp?w=120&h=120", 774 | "apng": null 775 | }, 776 | "customReactionId": 294677 777 | } 778 | }, 779 | "type": "reaction", 780 | "nodes": [ 781 | { 782 | "leaves": [ 783 | { 784 | "text": ":blobpats:", 785 | "marks": [], 786 | "object": "leaf" 787 | } 788 | ], 789 | "object": "text" 790 | } 791 | ], 792 | "object": "inline" 793 | } 794 | ], 795 | "object": "block" 796 | } 797 | ], 798 | "object": "document" 799 | } 800 | }, 801 | "customReactionId": 294765, 802 | "customReaction": { 803 | "id": 294765, 804 | "name": "ablobwobwork", 805 | "png": "https://s3-us-west-2.amazonaws.com/www.guilded.gg/CustomReaction/d7cf013a4d01460a81186e65f1f8c12a-Full.webp?w=120&h=120&ia=1", 806 | "webp": "https://s3-us-west-2.amazonaws.com/www.guilded.gg/CustomReaction/d7cf013a4d01460a81186e65f1f8c12a-Full.webp?w=120&h=120&ia=1", 807 | "apng": null 808 | } 809 | } 810 | ``` 811 | 812 | ![example user status in the client](/images/example_status.png) 813 | 814 | ### User Status Content Object 815 | 816 | Status content is an example of "stacked" content, much like message data. It's pretty difficult to portray its structure in a table, so I've simply not done that. The useful part of the object is the `document.nodes[0].nodes` list. Refer to [this example](#example-user-status) and parse it as you will. 817 | 818 | ### Flair Object 819 | 820 | Represents a profile flair. Does not include stonks, those can be found at [`user.stonks`](#user-object). 821 | 822 | ###### Flair Structure 823 | 824 | | Field | Type | Description | Known Values | 825 | |--------|---------|------------------------------------------------------------------------|--------------| 826 | | flair | string | name of the flair | `'gil_gang'` | 827 | | amount | integer | quantity of this flair that the user has, probably intended for stonks | | 828 | 829 | ## Get User 830 | GET/users/{[user.id](#user-object)} 831 | 832 | Returns a [user](#user-object) object for a given user ID. 833 | 834 | ## Get User Profile 835 | GET/users/{[user.id](#user-object)}/profilev3 836 | 837 | Returns a [user](#user-object) object for a given user ID. This slightly differs from [Get User](#get-user). 838 | 839 | ## Get User Posts 840 | GET/users/{[user.id](#user-object)}/posts 841 | 842 | Get the list of posts this user has on their profile. 843 | 844 | ###### Query Params 845 | 846 | | Field | Type | Description | Required | Default Value | 847 | |----------|---------|---------------------------------------|----------|---------------| 848 | | maxPosts | integer | the maximum amount of posts to return | false | 7 | 849 | | offset | integer | ? | false | 0 | 850 | -------------------------------------------------------------------------------- /docs/resources/webhook.md: -------------------------------------------------------------------------------- 1 | # Webhooks 2 | 3 | Webhooks are an easy way to post messages to team channels. They do not require any authentication to use other than the webhook ID & token itself (keep tokens secret!). 4 | 5 | ### Webhook Object 6 | 7 | ###### Webhook Structure 8 | 9 | | Field | Type | Description | 10 | |------------|----------------------------------------|---------------------------------------------| 11 | | id | uuid | the id of the webhook | 12 | | name | string | the default name of the webhook | 13 | | token? | string | the webhook's token. required for execution | 14 | | channelId | uuid | the channel id this webhook is for | 15 | | teamId | [team id](/resources/team#team-object) | the team's id this webhook is for | 16 | | iconUrl | ?string | the default avatar of the webhook | 17 | | createdBy | [user id](/resources/user#user-object) | the user's id who created this webhook | 18 | | createdAt | ISO8601 timestamp | when this webhook was created | 19 | | deletedAt | ?ISO8601 timestamp | when this webhook was deleted | 20 | 21 | ###### Example Webhook 22 | 23 | ```json 24 | { 25 | "id": "5b3723f8-c82e-404d-bb56-02bbfb242e47", 26 | "name": "cool webhook for cool people", 27 | "token": "yXEUjW1HskqGwsCWZBqGiYW4MGWAWq0sqCp8igYgQWcgNmYMu6gswa24CgoE2Akqk00YS8GYMkeqKUKKlAUYua", 28 | "channelId": "b1b9451a-f758-4e49-aa81-0b148939ffeb", 29 | "teamId": "4R5q39VR", 30 | "iconUrl": "https://s3-us-west-2.amazonaws.com/www.guilded.gg/UserAvatar/74bfc8be9425a926a1f48d9b078509bc-Large.png?w=450&h=450", 31 | "createdBy": "EdVMVKR4", 32 | "createdAt": "2021-03-18T23:39:21.320Z", 33 | "deletedAt": null 34 | } 35 | ``` 36 | 37 | ## Execute Webhook 38 | POSThttps://media.guilded.gg/webhooks/{[webhook.id](#webhook-object)}/{[webhook.token](#webhook-object)} 39 | 40 | !!! info 41 | This endpoint no longer supports GitHub payloads. See [guilded-webhook-proxy](https://github.com/shayypy/guilded-webhook-proxy) for an alternative. 42 | 43 | Send a message through a webhook. Returns a [message](/resources/channel#message-object) object. 44 | 45 | ###### JSON/Form Params 46 | 47 | | Field | Type | Description | Required | 48 | |----------------|----------------------------------------------------|----------------------------------------------|----------------------------| 49 | | content | string | the message contents (up to 2000 characters) | one of content, embeds | 50 | | embeds | array of [embeds](/resources/channel#embed-object) | up to 10 embeds | one of content, embeds | 51 | | files[n]\* | file contents | up to 10 files | false | 52 | | payload_json\* | string | JSON encoded body of non-file params | `multipart/form-data` only | 53 | | username | string | override the webhook's default username | false | 54 | | avatar_url | string | override the webhook's default avatar | false | 55 | 56 | \* See [Uploading Files](https://discord.dev/reference#uploading-files) for details. 57 | -------------------------------------------------------------------------------- /docs/topics/community-resources.md: -------------------------------------------------------------------------------- 1 | # Community Resources 2 | 3 | ## Libraries 4 | 5 | Guilded's bot API is currently in early access, so you will need explicit approval from a Guilded staff member to use it, and by extension, any of the libraries listed below. The following libraries are not approved, created, or endorsed by Guilded. 6 | 7 | ###### Guilded Libraries (alphabetical) 8 | 9 | | Name | Language | 10 | | ------------------------------------------------------------- | ---------- | 11 | | [guilded.js](https://github.com/guildedjs/guilded.js) | JavaScript | 12 | | [Guilded.NET](https://github.com/Guilded-NET/Guilded.NET) | C# | 13 | | [guilded.py](https://github.com/shayypy/guilded.py) | Python | 14 | | [Guilded4J](https://github.com/MCUmbrella/Guilded4J) | Java | 15 | | [TouchGuild](https://github.com/DinographicPixels/TouchGuild) | Javascript | 16 | 17 | ## Embed Visualizers 18 | 19 | Discord and Guilded both use relatively the same [embed structure](/resources/channel/#embed-object). Sent embeds look a bit different in the official client, but you can use the following resources to easily compose some JSON for use in your Guilded messages. 20 | 21 | - [LeoV's Embed Visualizer](https://leovoel.github.io/embed-visualizer) 22 | - [Discohook](https://discohook.app) (click on "JSON Data Editor" when you're done) 23 | 24 | ## Exemplary Projects 25 | 26 | You may have been confused by [the preamble in this site's introduction](/#userbots-you). Here are a few cool projects that use Guilded's API without automating a user account. 27 | 28 | - [guilded-shields](https://github.com/yoki-labs/guilded-shields) 29 | - [Blogsbot](https://blogsbot.shay.cat) 30 | - [Guilded Authlink](https://authlink.app) 31 | - [Server Guard](https://serverguard.xyz) 32 | -------------------------------------------------------------------------------- /docs/topics/media.md: -------------------------------------------------------------------------------- 1 | # Media Endpoints 2 | 3 | !!! warning 4 | Endpoints on this page should use the base URL `https://media.guilded.gg`, *not* `https://www.guilded.gg/api`. 5 | 6 | ## Dynamic Media Types 7 | 8 | | Type | Description | 9 | |---------------------------|---------------------------------------------------------------| 10 | | CustomReaction | custom server emoji | 11 | | ContentMedia (deprecated) | any media - deprecated in favor of `ContentMediaGenericFiles` | 12 | | ContentMediaGenericFiles | any media or file | 13 | | UserAvatar | user avatar | 14 | | UserBanner | profile banner | 15 | | TeamAvatar | team icon | 16 | | TeamBanner | team banner | 17 | | GroupAvatar | group icon | 18 | 19 | ## Binary File Data 20 | 21 | This can probably be handled by your HTTP library/something built-in to your language. Here are some code examples: 22 | 23 | 24 | 25 | **Python** 26 | 27 | ``` 28 | # with aiohttp 29 | 30 | import aiohttp 31 | async def upload_file(path_to_file, media_type): 32 | file = open(path_to_file, 'rb') # or another bytes-like object 33 | async with aiohttp.ClientSession() as session: 34 | response = await session.post( 35 | 'https://media.guilded.gg/media/upload', 36 | data={'file': file}, 37 | params={'dynamicMediaTypeId': media_type} 38 | ) 39 | data = await response.json() 40 | return data['url'] 41 | 42 | 43 | # with requests 44 | 45 | import requests 46 | def upload_file(path_to_file, media_type): 47 | file = open(path_to_file, 'rb') # or another bytes-like object 48 | response = requests.post( 49 | 'https://media.guilded.gg/media/upload', 50 | data={'file': file}, 51 | params={'dynamicMediaTypeId': media_type} 52 | ) 53 | data = response.json() 54 | return data['url'] 55 | ``` 56 | 57 | ## Upload Media 58 | POST/media/upload 59 | 60 | Upload a media file to Guilded. 61 | 62 | ###### Form Data 63 | 64 | | Field | Type | Description | 65 | |-------|----------------------------------|----------------------| 66 | | file | [binary data](#binary-file-data) | the data of the file | 67 | 68 | ###### Query Args 69 | 70 | | Field | Type | Description | Required | Accepted Values | 71 | |--------------------|--------|------------------------------------------|----------|----------------------------------------------------| 72 | | dynamicMediaTypeId | string | the type of media that you are uploading | true | a valid [dynamic media type](#dynamic-media-types) | 73 | 74 | ###### JSON Response 75 | 76 | | Field | Type | Description | 77 | |-------|--------|---------------------------------------| 78 | | url | string | the full CDN url to the uploaded file | 79 | 80 | ## Upload File 81 | POST/media/file_upload 82 | 83 | Upload a generic non-media file to Guilded. 84 | 85 | ###### Form Data 86 | 87 | | Field | Type | Description | 88 | |-------|----------------------------------|----------------------| 89 | | file | [binary data](#binary-file-data) | the data of the file | 90 | 91 | ###### Query Args 92 | 93 | | Field | Type | Description | Required | Accepted Values | 94 | |--------------------|--------|------------------------------------------|----------|--------------------------| 95 | | dynamicMediaTypeId | string | the type of media that you are uploading | true | ContentMediaGenericFiles | 96 | 97 | ###### JSON Response 98 | 99 | | Field | Type | Description | 100 | |-------|--------|---------------------------------------| 101 | | url | string | the full CDN url to the uploaded file | 102 | 103 | ## Get Custom Emoji Pack 104 | POST/media/fetch_emote_pack 105 | 106 | Get the contents of an emoji pack. 107 | 108 | ###### JSON Params 109 | 110 | | Field | Type | Description | 111 | |-------|--------|--------------------------------------------------------------------------------| 112 | | url | string | the emoji pack to get (must return a valid JSON-formatted emoji pack response) | 113 | 114 | ## Upload Custom Emoji Pack 115 | POST/media/import_emote_pack 116 | 117 | Upload the contents of an emoji pack to Guilded. Returns an array of `{url: url, name: name}` on success, where `url` is the URL to the uploaded image on Guilded's CDN, and `name` is the name of the emoji from the emoji pack. 118 | 119 | ###### JSON Params 120 | 121 | | Field | Type | Description | 122 | |-------------------|--------|-----------------------------------------------------------------------------------| 123 | | url | string | the emoji pack to import (must return a valid JSON-formatted emoji pack response) | 124 | | uploadTrackingId? | string | unknown. looks like "r-0123456-7891234" | 125 | -------------------------------------------------------------------------------- /docs/topics/status-codes.md: -------------------------------------------------------------------------------- 1 | # Status Codes in the API 2 | 3 | Similarly to any other REST API, HTTP response codes are returned based on the success of each of your requests. The following table can be used as a reference. It is a modified version of [Discord's table for the same purpose](https://discord.com/developers/docs/topics/opcodes-and-status-codes#http-http-response-codes). 4 | 5 | ###### HTTP Response Codes 6 | 7 | | Code | Meaning | 8 | |---------------------------|--------------------------------------------------------------------------------------| 9 | | 200 (OK) | The request completed successfully. | 10 | | 201 (CREATED) | The entity was created successfully. | 11 | | 204 (NO CONTENT) | The request completed successfully and returned no content. | 12 | | 304 (NOT MODIFIED) | The entity was not modified (no action was taken). | 13 | | 400 (BAD REQUEST) | The request was improperly formatted, or the server couldn't understand it. | 14 | | 401 (UNAUTHORIZED) | Proper authorization was not passed or passed improperly. | 15 | | 403 (FORBIDDEN) | The authorization you passed is not allowed to access this resource. | 16 | | 404 (NOT FOUND) | The resource at the location specified doesn't exist. | 17 | | 405 (METHOD NOT ALLOWED) | The HTTP method used is not valid for the location specified. | 18 | | 429 (TOO MANY REQUESTS) | You are being rate limited. | 19 | | 502 (GATEWAY UNAVAILABLE) | There was not a gateway available to process your request. Wait a bit and retry. | 20 | | 5xx (SERVER ERROR) | The server had an error processing your request (these are rare). | 21 | --------------------------------------------------------------------------------