Skip to main content
Discord Social SDK

Provisional Accounts Documentation Restructure

The single Using Provisional Accounts guide has been reorganized into a dedicated Provisional Accounts section, with a focused page for each part of the flow:The Bot Token Endpoint and Merging Accounts guides now walk through the full client-to-server integration, with sequence diagrams for each flow.
Interactions

Resolved Channel app_permissions in Interactions

Resolved channel objects in interaction payloads now include an app_permissions field containing the bot’s permissions in that channel.This field is only present when the application’s bot user is in the guild.
HTTP APIDiscord Social SDK

Deprecation: Riot Games Connections in Get Current User Connections

The new Riot Games connection is powered by the Discord Social SDK and application identities. As a result, newly created Riot Games connections are no longer returned by the Get Current User Connections endpoint (GET /users/@me/connections).Starting July 10, 2026, legacy Riot Games and League of Legends connections will also no longer be returned by this endpoint. There is no replacement for this functionality.
Discord Social SDK

Discord Social SDK Release 1.9.17379

A new release of the Discord Social SDK is now available, with the following updates:

Stability

  • Fixed a crash caused by re-entrant HTTP requests during connection teardown on PlayStation 5.
Discord Social SDK

Discord Social SDK Release 1.9.17228

A new release of the Discord Social SDK is now available, with the following updates:

Authentication

  • Fixed an issue where AUTHORIZE_REQUEST events would not re-subscribe after Discord disconnected and reconnected while the SDK was already running.

Noise Suppression

  • Krisp noise suppression binaries and model files are now included in Unity and Unreal plugin packages for Windows, macOS, Android, and iOS.
HTTP API

Attachment Editing and is_spoiler Param

Apps can now edit the description and is_spoiler parameters on existing attachments when editing messages. We have also separated the attachment request object in the docs to make it more clear which params you can set for attachments and which fields are provided by the API.Attachments can be marked as a spoiler by setting is_spoiler: true in the attachment request object, and apps can read whether an existing attachment is spoilered by checking for the IS_SPOILER attachment flag on the attachment object. The legacy SPOILER_ filename prefix will continue to mark attachments as a spoiler, but not all spoilered attachments have the prefix.
HTTP API

Documentation Fix: Subscription Status Values

The integer values for the INACTIVE and ENDING subscription statuses were previously swapped in the documentation. The correct values are INACTIVE = 1 and ENDING = 2, as shown in the Subscription Statuses reference. This has been corrected in both the reference and the Implementing App Subscriptions guide, which described the subscription lifecycle with the swapped values.The API has always returned these values, only the documentation was incorrect. If your app branches on the numeric status value, double-check that 1 is treated as INACTIVE and 2 as ENDING.We discovered this issue while reconciling our documentation against our OpenAPI spec in this commit.
HTTP APIGateway

Changes to Privileged Intent Access for Discord Apps

Privileged Intents RequirementsToday, we’re announcing changes to how Discord Apps access Privileged Intent with a new user-based threshold for when access requires review and an annual process to reapply for continued access.
If your app is accessible to fewer than 10,000 users, these changes do not impact your app.

What’s Changing

1. The review threshold is now based on user count, not server count

Previously, apps in fewer than 100 servers could access Privileged Intents by toggling them on in the Developer Portal, and apps in 100+ servers needed to apply for access.Starting today, the threshold is based on the number of users your app can access across all the servers it belongs to. If your app has fewer than 10,000 users, you can continue accessing Privileged Intents by toggling them on in the Developer Portal. Once your app reaches 10,000 users, you’ll need to apply for Privileged Intent access.

2. Apps must now reapply annually for continued access

Apps with Privileged Intent access granted from a prior review will need to reapply to confirm their continued access once per year in the Developer Portal.

3. Apps can keep growing during Privileged Intent review

Under the new user-based threshold, apps can continue joining servers and reaching new users while their submission is under review.

4. App Verification and Privileged Intent review are now separate

Previously, App Verification and Privileged Intent review were part of the same review process. With this change, we have separated App Verification and the Privileged Intent review process.Privileged Intents Requirements

What This Means For Your App

For more information on how this applies to your Discord Apps, please read the Privileged Intents Change announcement article in our developer help center.

Updated Documentation & Resources

Discord Social SDK

Discord Social SDK Release 1.9.16441

A new release of the Discord Social SDK is now available, with the following updates:

Playstation 5

  • Fixed crash caused by use-after-free in WebSocket callbacks
Discord Social SDKHTTP API

New Lobby HTTP API Endpoints

We’ve expanded the Discord Lobby resource reference with several public endpoints:
  • Create or Join Lobby (PUT /lobbies) — create a lobby for your application or join an existing one by secret in a single call.
  • Send Lobby Message (POST /lobbies/{lobby.id}/messages) — send a message into a lobby on behalf of an authenticated member.
  • Get Lobby Messages (GET /lobbies/{lobby.id}/messages) — fetch up to 200 of the most recent messages from a lobby the calling user is a member of.
  • Create Lobby Channel Invite for Self and for User — generate a single-use, one-hour guild invite to a lobby’s linked channel.
Discord Social SDK

Discord Social SDK Release Cadence & Support

We’ve published a new Release Cadence & Support page for the Discord Social SDK. It documents:
  • Our new three-per-year minor release cadence (April, July, November)
  • A new support window covering the five most recent minor versions, with hotfix patches (bug fixes and security fixes) for older supported minor releases
  • How new Xbox and PlayStation OS SDK supports ship in new Social SDK releases only — each release bundles roughly the last 18 months of console OS SDKs
  • The new end-of-life process for older minor releases

What this means for you

  • Over a year and a half of support per minor release. Three minor releases of the Social SDK per year combined with a 5-version support window means every minor release you ship with gets more than 18 months of patch coverage.
  • A predictable release calendar. Releases land in April, July, and November, so you can plan Social SDK upgrades and console certification windows well in advance.
  • More bandwidth for new features and stability. A defined support window lets us focus engineering effort where it matters most, which means more capacity to build new features in current minor releases and keep the versions in the support window robust and reliable.

What changes with 1.10

These changes take effect with the 1.10 release, shipping in July 2026:
  • The supported version window will cover versions 1.6 through 1.10. Versions 1.5 and earlier will be end-of-life and no longer eligible for patch updates.
  • New Xbox and PlayStation OS SDK support will ship in new Social SDK releases only, not as patches to older Social SDK versions. Each Social SDK release will bundle roughly the last 18 months of console OS SDK versions.
Already-shipped Social SDK releases (1.6–1.9) are unchanged — they keep the console OS SDK support they were originally built with. The new model applies from 1.10 forward.We’re sharing this ahead of the 1.10 release so developers on older versions have plenty of time to upgrade.
Discord Social SDK

Account Linking Failure Modes

We’ve expanded documentation across the Social SDK guides to cover what happens when the Discord-to-game account link is severed — whether by a Discord account ban, an explicit unmerge, or an OAuth2 token revocation. Highlights:
  • Ban-Driven Unmerge documents the full lifecycle when a user’s Discord account is banned: tokens are deleted immediately, a new cross-platform-restricted provisional account is created carrying the original external identity, and merge attempts return error 530017 until the ban lifts (or, for permanent bans, indefinitely).
  • Out-of-Band Revocation describes the auth-side observable signals (APPLICATION_DEAUTHORIZED webhook + invalid_grant on refresh) when a user removes your app from Discord or has their account banned.
  • When Refresh Fails documents the /oauth2/token response when the underlying token has been deleted, and recommends treating invalid_grant as equivalent to receiving the webhook.
Discord Social SDK

Discord Social SDK Release 1.9.15780

A new release of the Discord Social SDK is now available, with the following updates:

Xbox

  • Added Xbox GDK 260400 support

Noise Suppression

  • Integrated Krisp noise suppression across Android, iOS, macOS, and Windows
HTTP API

New flags_new Field on Application Object

The Application object now includes a flags_new field — a string-serialized integer containing the full set of application flag bits, including any new flag bits introduced beyond bit 30.The existing flags field continues to be serialized as a 32-bit integer. Existing integrations consuming flags for bits at or below 2^30 are not impacted, and request payloads that include flag values should continue to use the original flags field.This mirrors the permissions_new / allow_new / deny_new pattern previously introduced for permission bitfields.
HTTP API

User Premium Type Field Now Requires A Scope

The premium_type field on the User object will return 0 for applications that have not been approved for the identify.premium scope. To receive Nitro subscription level, you must request the identify.premium scope during OAuth authorization. Without this scope, the field returns 0 regardless of the user’s actual subscription status.The identify.premium scope is only available to approved partners.
Discord Social SDKHTTP API

Voice Muting Based on Player Blocks

We’ve published a new how-to guide covering how to implement bi-directional voice muting in lobby voice calls based on block relationships. The guide covers two approaches for populating per-member mute lists — client-side using any client-accessible block signal (Discord relationships, in-game block lists, etc.) and server-side via lobby member metadata set at lobby creation — and a shared client-side implementation that applies mutes in both directions.As part of this work, we’ve also documented the POST /lobbies/{lobby.id}/members/bulk endpoint, which allows adding, updating, or removing up to 25 lobby members in a single request.Voice Muting Based on Player Blocks
Discord Social SDK

Discord Social SDK Release 1.9.15332

A new release of the Discord Social SDK is now available, with the following updates:

Playstation 5

  • Added OS 13.000 support

Activity Invites

  • Accepting an activity invite over RPC now uses the application_id from the invite when provided, fixing cases where invites from sibling applications were sometimes attributed to the wrong app. This only affects teams leveraging Publisher Level Account Linking for having a single auth flow across all the games in their portfolio.
Discord Social SDK

Proximity Voice Chat Guide for Game Developers

We’ve published a new guide on adding proximity voice chat to a multiplayer game using the Discord Social SDK and Unity. The guide walks through the general architecture and the concepts are adaptable to any game or engine.Add proximity voice chat to your game
Discord Social SDK

Security Updates for Provisional Account OIDC Integrations

We’ve made security improvements to how Discord validates OIDC issuer URLs and fetches OIDC configuration for provisional accounts — including stricter hostname checks and blocking HTTP redirects during configuration and JWKS discovery.Existing provisional account OIDC integrations are not affected and will continue to work without any changes on your part.However, if you need to edit your OIDC configuration in the Developer Portal, your updated configuration will be validated against these requirements. We’ve published new documentation covering the full set of OIDC Integration Requirements — including issuer URL rules, discovery document requirements, supported signing algorithms, and ID token claims. Before making any changes to a production integration, review those requirements and verify your configuration works in a test application first.
Documentation

Voice Channel Status and Start Time Documentation

Voice channel status has been available for some time, but we’re now officially documenting the endpoint, permission, and related Gateway and audit log events so apps can integrate with it.The Set Voice Channel Status endpoint (PUT /channels/{channel.id}/voice-status) allows apps to set a short string (up to 500 characters) describing what’s happening in a voice channel.

Permission

Setting a channel’s status requires the SET_VOICE_CHANNEL_STATUS permission (1 << 48), now documented in the permissions table. If the bot user is not connected to the voice channel, the MANAGE_CHANNELS permission is additionally required.

Gateway Events

Voice channel status and voice session start time are ephemeral and are not included on the channel object. To read them, apps send the Request Channel Info Gateway command (opcode 43) and receive a Channel Info event containing the requested fields (currently status and voice_start_time) for channels in the guild.Two receive events are dispatched when these fields change:

Audit Log

Two audit log events track status changes: VOICE_CHANNEL_STATUS_UPDATE (192) and VOICE_CHANNEL_STATUS_DELETE (193). A status field in Optional Audit Entry Info carries the new status on VOICE_CHANNEL_STATUS_UPDATE entries.
Discord Social SDK

Deprecation: OAuth2 Refresh Token Grant for OIDC Provisional Accounts

If you are using OIDC server-side authentication for provisional accounts, a refresh_token is returned — but using it via the OAuth2 refresh_token grant is now deprecated.This brings OIDC in line with all other provisional account authentication methods: when the token expires, re-authenticate using a fresh provider token and pass the new access token to Client::UpdateToken.See the Refreshing Access Tokens section for details.
HTTP API

Message Forwarding Requires Message Content Access

Starting today, applications must be able to read a message’s content in order to forward it.An application attempting to forward a message it cannot read will now receive error code 160014 with the message “You cannot forward a message whose content you cannot read.”Most applications will not be affected by this change, but those recently affected have been notified directly via system DM.
Discord Social SDK

Discord Social SDK Release 1.8.14985

A new release of the Discord Social SDK is now available, with the following updates:

Xbox

  • Added Xbox GDK 251002 support
RPC

RPC over IPC Documentation

Documentation for Discord’s RPC over IPC (Inter-Process Communication) transport is now available. IPC is a transport for native applications to communicate with a local Discord client, offering high-performance local communication without network overhead.The RPC documentation covers:
  • IPC socket paths for Windows and Linux/macOS
  • Handshake flow and opcodes
  • IPC-specific events (READY, ERROR, and GUILD_STATUS)
If you’re building a game that integrates Discord social features, we recommend using the Discord Social SDK instead of communicating directly over RPC.
Discord Social SDK

Discord Social SDK Release 1.8.14856

A new release of the Discord Social SDK is now available, with the following updates:

iOS Unity & Unreal

  • Unity and Unreal packages now include Debug plugins, which have support for logging at the Info and Verbose severity levels

Party Privacy

  • Fixed bug in which changes to party privacy settings didn’t propagate when calling Client::UpdateRichPresence, meaning switching a party from private to public wouldn’t update the join button in Discord
HTTP API

Search Guild Messages

We’ve added documentation for the Search Guild Messages endpoint, which allows bots to search for messages within a guild using a variety of filters.The endpoint supports filtering by content, author, channel, mentions, attachments, embeds, and more. Results can be sorted by timestamp or relevance.This endpoint requires the READ_MESSAGE_HISTORY permission and the MESSAGE_CONTENT Privileged Intent.The error code 110000 has been added to the error codes table to reflect the index-not-ready response returned when a guild has not yet been indexed for search.
Discord Social SDK

Discord Social SDK Release 1.8.14587

A new release of the Discord Social SDK is now available, with the following updates:

Debug Support

  • Added Debug library support for the following:
    • Unity plugin & sample
    • Unreal plugin & sample
    • Windows, Mac, Linux libraries
    • Android library
    • PS5 11.000 & 12.000 library
    • PS4 12.000 & 12.500 library
    • Scarlett & Xbox One 250400 GDK library
Docs

Developer Portal & Docs Refresh

The Developer Portal and Developer Docs have both been updated with improved navigation, usability, and a redesigned theme, with more developer experience improvements on the way. Latest changes include:

Developer Portal

  • New dev portal home page with quick access to apps, docs, and new developer videos.
  • New theme with updated navigation and updated light/dark support.
  • New Localization support! This will use the same language you have set in the Discord client.

Developer Docs

  • Reorganized structure with new tabs for each feature area and new sidebars for easier navigation.
  • New guides and overviews for platform-wide features and use cases, with more on the way!
  • AI & MCP support: Docs now work with AI development tools via Copy-as-Markdown, an LLMs.txt file, and an MCP server, available at https://docs.discord.com/mcp
  • Existing docs URLs are stable and were preserved during the reorganization. Some titles and content were updated or moved for clarity.

What’s Next

We are working on more improvements for the portal and docs. We invite you to share any issues or feedback in the Next Gen Docs discussion thread.
Discord Social SDK

Discord Social SDK Release 1.8.14437

A new release of the Discord Social SDK is now available, with the following updates:

Security

  • Filter the bearer token in all levels of logging
  • Release builds only emit log statements for Error or Warning levels of severity
  • Debug builds will still have logs for Info and Verbose levels of severity
  • Added a DEBUG BUILD Warning at the top of the debug log that indicates it should not be used in production
Discord Social SDK

Discord Social SDK Release 1.7.14433

A new release of the Discord Social SDK is now available, with the following updates:

Security

  • Filter the bearer token in all levels of logging
  • Release builds only emit log statements for Error or Warning levels of severity
  • Debug builds will still have logs for Info and Verbose levels of severity
  • Added a DEBUG BUILD Warning at the top of the debug log that indicates it should not be used in production
Discord Social SDK

Discord Social SDK Release 1.6.14448

A new release of the Discord Social SDK is now available, with the following updates:

Security

  • Filter the bearer token in all levels of logging
  • Release builds only emit log statements for Error or Warning levels of severity
  • Debug builds will still have logs for Info and Verbose levels of severity
  • Added a DEBUG BUILD Warning at the top of the debug log that indicates it should not be used in production
Interactions

Updates to Context Menu Commands

We’ve redone the UI for User Commands and Message Commands to make it easier to find commands and unlock higher limits!

Refreshed UI

The UI has been updated based on feedback! No longer do you have to scroll through a long list of commands:
  • Commands are now organized by their application, providing hierarchy
  • Frequently used commands are now hoisted to the top for easy access
  • A new search bar lets you quickly find the exact command you’re looking for

A Higher Limit

We’ve heard your feedback about the 5 command limit feeling too restrictive! With this new UI, we have increased the limit to 15 per type, providing breathing room for your app.

Developer Resources

Check out the Application Commands page for details on all command types.
Discord Social SDKHTTP APIDocs

Server-Side Message Moderation

We’ve released and documented two new API endpoints that enable you to modify the application-scoped moderation metadata on both game direct messages and lobby messages.Combined with the previously announced MessageHandle::ModerationMetadata, and game direct message and lobby Webhook Events, this enables server-side lobby and game direct message moderation workflows. Your game backend can now evaluate messages and attach moderation metadata that the Discord Social SDK can then deliver to game clients in real time, driving in-game message rendering dependent on moderation results.To see this in detail, have a look at the newly updated How To Integrate Moderation guide with the full server-side moderation flow.
Discord Social SDK

Discord Social SDK Release 1.8.14026

A new release of the Discord Social SDK is now available, with the following updates:

Stabilization

  • Fixed an occasional crash when linking your Discord account to your Application while in a Voice Call
Discord Social SDKDocs

Publisher Level Account Linking

We’ve published new documentation for Publisher Level Account Linking, a feature that enables game publishers with multiple titles to implement a single authorization flow across their entire game portfolio.
Publisher Level Account Linking requires Discord approval.To inquire about access, speak to your Discord account representative or contact us
With Publisher Level Account Linking, players authenticate once through a publisher application instead of separately for each game. This creates a simplified experience for players while giving publishers centralized account management capabilities.Key features covered in the guide:
  • Setting up parent-child application hierarchies between publisher and game applications
  • Exchanging parent access tokens for child access tokens
  • Integrating child tokens with the Discord Social SDK
  • Understanding token lifecycles and revocation
To learn more and get started, check out the Publisher Level Account Linking guide.
Discord Social SDK

Discord Social SDK Release 1.8.13870

A new release of the Discord Social SDK is now available, with the following updates:

Playstation 5

  • Added OS 12.000 support

iOS

  • Added code stripping to iOS builds to reduce size
HTTP API

Community Invite Guide

We’re launching a guide to showcase the new invite endpoints and functionality. It has examples on how to create invites with roles through the UI and API and how to restrict access to an invite using target_users through the API. This guide highlights use cases for community servers and walks through steps for creating and sending invites that grant roles or restrict access to specific users.Check out the new guide here!
InteractionsComponents

Radio Groups, Checkbox Groups, and Checkboxes in Modals

We’re introducing three new modal components: Radio Groups, Checkbox Groups, and Checkboxes. These components expand the ways users can interact with your app through modals, enabling single-choice selections, multi-select options, and simple yes/no toggles.

The New Components

  • Radio Group: A single-selection component for choosing exactly one option from a list. Supports the required field to allow optional selections.
  • Checkbox Group: A multi-selection component with configurable min_values and max_values constraints for flexible selection requirements.
  • Checkbox: A simple boolean toggle for yes/no style questions.
All three components must be placed inside a Label component and are only available in modals.

Developer Resources

Docs

Next Generation Docs Project

We’re excited to announce the launch of our Next Gen Docs project! This initiative aims to improve the way developers interact with Discord’s developer documentation, making it more accessible, comprehensive, and user-friendly.

Our Goal

The Discord API has evolved far beyond its origins as a platform for bots. Today, we’re a comprehensive developer platform supporting:
  • Discord Apps and Bots - The foundation of our ecosystem, extending Discord’s functionality with custom apps, commands, and integrations
  • Discord Activities - Real-time games and social experiences that users can launch directly inside Discord
  • Social SDK for Games - Bringing Discord-powered features like voice, chat, rich presence, and social graph to games
Our documentation needs to evolve with us. With this project, we’re not just updating our docs. We’re aiming to improve the entire developer experience for learning and building on Discord as it exists in 2026 and beyond.

Our Next Gen Docs Journey

What we’ve done so far:
  • Migrated to Mintlify for a modern documentation experience
  • For this migration, we preserved our existing content and familiar design but plan to evolve this over time
  • We no longer have to maintain and build our own documentation platform and can instead focus on making content and improving our developer experience
  • Gained new capabilities:
    • PR Previews - See documentation changes before they go live! This works locally as well as in your pull requests
    • More Components and Docs Features - We now have access to all of Mintlify’s documentation components that will continue to grow over time
    • AI features & improved search - You can now send our docs to your LLM of choice or access them via MCP (more on this soon!)
If you’re reading this, the migration is complete! 🎉
This migration did require us to reorganize the entire repository and make a lot of formatting changes. If you have an open PR, it will be a pretty gnarly merge conflict to resolve. We will be focusing on getting our PR backlog down over the next few weeks.
We combed through the existing documentation to ensure everything was migrated correctly, but if you spot anything that looks off, please let us know by opening an issue or submitting feedback here. We will be actively monitoring feedback to quickly address any issues.

Why This Matters

Great documentation isn’t just about having the right information, it’s about presenting it in a way that helps developers succeed.In the coming months, we’ll be shipping changes to our documentation to ensure that it:
  • Reduces time-to-first-success for new developers
  • Scales with complexity as your projects grow
  • Stays current with our rapidly evolving platform
  • Serves all skill levels from beginners to experts

Contributing to Our Vision

This transformation is happening with the developer community at its heart. We welcome:
  • Feedback on what’s working and what isn’t
  • Content contributions through our existing PR process
  • Bug reports when documentation doesn’t match reality
We have created a Github Discussion topic for Next Gen Docs Feedback to collect feedback.See our Contributing Guidelines for how to get involved.
HTTP APIBreaking Change

Community Invites Update

We’ve updated the community invite endpoints with two changes due to a security concern:
  • Get Target Users returns a standardized CSV file with a header user_id and each user ID on its own line. If you relied on the header you submitted or weren’t reading it from the file you got back you’ll need to update to expect only user_id as the header in the csv now.
  • Get Channel Invites returns a partial for roles instead of the full role object. This is a breaking change as it used to return the full role object and now only contains id, name, position, color, colors, icon, and unicode_emoji.
ActivitiesEmbedded App SDK

Relationships.read scope

We’ve opened up the relationships.read scope for Activities under the Social SDK terms. To get access to the scope you will need to accept the Social SDK terms for your app in the Social SDK settings. Requesting approval for this scope from Discord is no longer necessary. With this scope getRelationships() in the embedded app SDK will now return a player’s relationships.The Embedded App SDK is available via npm and GitHub. You can check out our installation guide and reference to get started with it!
HTTP API

New Invite Endpoints

We’ve added new endpoints and functionality allowing invites to grant roles and to only be accepted by specified users. These are perfect for communities that want to manage access more granularly or reward members with special roles when they join a server.Create Channel Invite has been updated to support target_users_file and role_ids parameters.
  • target_users_file: A CSV file with user IDs to specify who can accept the invite
  • role_ids: Role IDs for roles to assign to users when they accept the invite
Invite endpoints:
Discord Social SDK

Discord Social SDK Release 1.8.13395

A new release of the Discord Social SDK is now available, with the following updates:

Moderation Metadata Support

  • [Coming Soon] Messages will soon support MessageHandle::ModerationMetadata, a set of custom string key-value pairs that can be used to communicate moderation-related information between your game backend and client.
    • This SDK version includes the functionality to support this upcoming feature, but it will only become available after an upcoming Discord API change.

WebSocket Reporting

  • WebSocket connection failures will now report an HTTP status code to the SDK log.

PlayStation 5

  • Improved accuracy of timing metrics used for monitoring the health of connections and voice calls.
Discord Social SDK

Discord Social SDK Release 1.7.13357

A new release of the Discord Social SDK is now available, with the following updates:
  • Fixed a crash on Steam Deck when calling RegisterLaunchCommand
  • Fixed a crash on iOS when Deeplink Authentication fails.
Discord Social SDK

New Social SDK Guide: Account Linking from Discord

We’ve added a new guide showing how to enable account linking entry points within the Discord client. With Social SDK 1.6+, Discord can now display “Link your account” prompts and buttons throughout the client to encourage players to connect their game accounts, leading to higher linking rates and better social engagement.The guide covers two implementation flows:
  • Connected Game Flow (recommended): Uses new callback methods to launch account linking directly in your game when players click Discord’s entry points
  • Web Flow: Routes players through a web-based OAuth flow (currently only available for select partners)
Read the full guide →
Discord Social SDK

Discord Social SDK Release 1.6.13305

A new release of the Discord Social SDK is now available, with the following updates:
  • Fixed a crash on Steam Deck when calling RegisterLaunchCommand
  • Fixed a crash on iOS when Deeplink Authentication fails.
HTTP API

Get Guild Role Member Counts Endpoint

Apps can now use the Get Guild Role Member Counts endpoint to access the number of members that have each role!
Discord Social SDK

Discord Social SDK Release 1.7.13152

A new release of the Discord Social SDK is now available, with the following updates:

macOS

  • Added support for macOS 10.15 to the build. The minimum versions are now 10.15 for Intel Macs and 11.0 for Apple Silicon Macs.
Breaking Change

Permission Changes Going into Effect February 2026 for PIN_MESSAGES, BYPASS_SLOWMODE, CREATE_GUILD_EXPRESSIONS, and CREATE_EVENTS

We have some important permission changes that will take effect in February 2026.The introduction of the following permissions were non-breaking changes.However, the breaking changes described below - where the old permissions will no longer grant these abilities - will take effect on February 23, 2026. These changes involve a few permissions that we split from their original permission to provide more granular control over bot and user actions.

What’s Changing?

1. Pin Messages Permission
  • The PIN_MESSAGES permission (1 << 51) was split from MANAGE_MESSAGES on August 20, 2025.
  • Read the change log.
  • Starting February 23, 2026, users and bots will need the PIN_MESSAGES permission to pin messages. MANAGE_MESSAGES alone will no longer be sufficient.
2. Bypass Slowmode Permission
  • The BYPASS_SLOWMODE permission (1 << 52) is being split from MANAGE_MESSAGES, MANAGE_CHANNEL, and MANAGE_THREADS.
  • Read the change log.
  • Note: This primarily affects users, as bots are not affected by slowmode restrictions.
  • Starting on February 23, 2026, users will need the BYPASS_SLOWMODE permission to not be affected by slowmode restrictions.
3. Create Expressions Permission
  • The CREATE_GUILD_EXPRESSIONS permission (1 << 43) was created in July 2023 and split from MANAGE_GUILD_EXPRESSIONS for users in December 2023. Read the change log.
  • As of today, bots now have access to the CREATE_GUILD_EXPRESSIONS permission.
  • Read the change log.
  • Starting on February 23, 2026, bots will need the CREATE_GUILD_EXPRESSIONS permission to create custom emoji and stickers. MANAGE_GUILD_EXPRESSIONS alone will no longer be sufficient.
4. Create Events Permission
  • The CREATE_EVENTS permission (1 << 44) was created in July 2023 and split from MANAGE_EVENTS for users in December 2023. Read the change log.
  • As of today, bots now have access to the CREATE_EVENTS permission.
  • Read the change log.
  • Starting on February 23, 2026, bots will need the CREATE_EVENTS permission to create scheduled events. MANAGE_EVENTS alone will no longer be sufficient.

What Do You Need to Do?

If your bot performs any of the following actions, please review and update your bot’s permission requests before February 23, 2026:
  • Pins messages: Request the Pin Messages permission
  • Creates custom emoji or stickers: Request the Create Expressions permission
  • Creates scheduled events: Request the Create Events permission
These changes are designed to give server administrators more control over what bots and users can do, ensuring better security and permission management.

New BYPASS_SLOWMODE Permission & Permission Split

We have introduced a new permission: BYPASS_SLOWMODE. This permission allows designated roles or users to bypass slowmode restrictions in channels.
  • The BYPASS_SLOWMODE permission (1 << 52) is being split from MANAGE_MESSAGES, MANAGE_CHANNEL, and MANAGE_THREADS.
  • Note: This primarily affects users, as bots are not affected by slowmode restrictions.
  • Starting on February 23, 2026, users will need the BYPASS_SLOWMODE permission to not be affected by slowmode restrictions.
Breaking Change

Guild Expressions and Events Permissions now available to developers

In 2023, we had introduced permission splits for guild expressions (custom emoji and stickers) and scheduled events. These changes were made to give server administrators more granular control over who can create content in their communities. Read the change log.Today, we are announcing that these permissions are now available for bot developers to use and will be required for certain actions starting February 23, 2026.Create Guild Expressions Permission
  • The CREATE_GUILD_EXPRESSIONS permission (1 << 43) was created in July 2023 and split from MANAGE_GUILD_EXPRESSIONS for users in December 2023.
  • As of today, bots now have access to the CREATE_GUILD_EXPRESSIONS permission.
  • Starting on February 23, 2026, bots will need the CREATE_GUILD_EXPRESSIONS permission to create custom emoji and stickers. MANAGE_GUILD_EXPRESSIONS alone will no longer be sufficient.
Create Events Permission
  • The CREATE_EVENTS permission (1 << 44) was created in July 2023 and split from MANAGE_EVENTS for users in December 2023.
  • As of today, bots now have access to the CREATE_EVENTS permission.
  • Starting on February 23, 2026, bots will need the CREATE_EVENTS permission to create scheduled events. MANAGE_EVENTS alone will no longer be sufficient.
Discord Social SDK

Discord Social SDK Release 1.7.13024

A new release of the Discord Social SDK is now available, with the following updates:

Windows

  • Fixed default audio device selection to once again prefer the default system audio device instead of the default communications device.

Xbox

  • Added support for GDK 240605 to the build.
Discord Social SDK

Discord Social SDK Release 1.7

A new release of the Discord Social SDK is now available, with the following updates:

Authentication

  • Sign in with Apple and PlayStation Network are now supported as external identity providers.

Linked Channels

  • The results of Client::GetGuildChannels are now sorted in the order in which they appear in the Discord client. Additional properties added to GuildChannel for type, position and parent category ID.

PlayStation 5

  • Added Low Energy Mode support. Explicit control of SDK thread affinity is provided by cpuAffinityMask property of ClientCreateOptions.
  • Fixed a crash when destroying and recreating Client.

Windows

  • Fixed an issue which caused local crash dumps to be disabled in processes which load the Social SDK.

Voice

  • The Social SDK now uses our latest audio subsystem on Windows, bringing it more in line with the desktop client. Improves device compatibility and fixes some long-standing issues like Bluetooth devices changing profiles on startup.
  • Desktop clients now use WebRTC m130 internally (upgraded from m116).
  • Bug fixes and improvements to DAVE E2EE protocol implementation.
Discord Social SDK

Discord Social SDK Release 1.6.12767

A new release of the Discord Social SDK is now available, with the following update:Implemented a fix for a crash on Playstation when creating the Discord client, destroying it, and creating another.
Discord Social SDK

Discord Social SDK Release 1.5.12211

A new release of the Discord Social SDK is now available, with the following update:

Bug Fix

  • Fixed a crash when calling Client::GetUserGuilds on iOS devices. First occurrence of this crash introduced in 1.5.10839
Discord Social SDK

Discord Social SDK Release 1.6.12170

A new release of the Discord Social SDK is now available, with the following updates:

New Features

This small update to v1.6 adds some highly requested features from our partners. We found some time to sneak them in…
  • You can now provide custom art to display as a banner image in game invites that appear in Discord. This is done one of two ways:
    • By specifying a URL or an asset key to an image in the activity.assets.inviteCoverImage parameter when calling Client::UpdateRichPresence. This method even affords you the ability to set a unique image on each invite if you want!
    • By uploading cover image art in the Rich Presence tab in the Developer Portal for your Application. Note: This will be used as the fallback image if you don’t specify one via activity.assets.inviteCoverImage
  • It’s now possible to customize the displayed name for your Application in Discord’s Rich Presence. To do so, set the activity.name parameter when calling Client::UpdateRichPresence
  • Added support for Microsoft Xbox GDK version 2025.04
  • Fixed a crash when calling Client::GetUserGuilds on iOS devices
InteractionsComponents

Introducing the File Upload component in Modals

Have you ever wanted to collect more than text from a user through a modal? With the new File Upload component you can! You can specify a min and max number of files accepted between 0 and 10, and if uploading files within that limit is required before submitting. Any file types are accepted, and the max file size is based on the user’s upload limit in that channel.

The New Component:

Developer Resources

Discord Social SDK

Discord Social SDK Release 1.6

A new release of the Discord Social SDK is now available, with the following updates:

✨ New Features

  • When calling Client::GetGuildChannels, channels are now sorted by their position field, which matches how they are sorted in the Discord client.
  • Messages received via the Social SDK, no longer create notifications in a Discord client for the same user, to avoid double notification on the same machine.
This release adds features to support upcoming Discord experiments that will enhance how games integrate with user profiles and authentication:
  • Game Profile Integration: New functionality to display game data on Discord user profiles. This includes UserApplicationProfile support with two new methods: Client::GetUserApplicationProfiles and Client::GetUserApplicationProfilesNoLock on the Users class, which retrieve game identity data from external authentication providers.
  • In-Discord Authentication Flow: Support for users to start account linking directly from Discord (rather than having to initiate it from within your game). Added Client::RegisterAuthorizeRequestCallback and Client::RemoveAuthorizeRequestCallback methods to handle authentication requests that originate from various Discord entry points. These functions support upcoming Discord client experiments that will be gradually rolled out to users over time.

⚠️ Deprecations

This deprecation aims to improve consistence across the SDK’s API surface as well as provide a safer implementation that has fewer edge cases and less potential for accidental misuse.

🚀 Performance Improvements

  • This update implements caching capabilities for the Client::GetUserMessagesWithLimit function to avoid unnecessary remote API calls when sufficient messages are already cached locally.

🎤 Voice Communications Fixes and Improvements

Fixes several critical bugs with the voice communications system, as well as improved overall reliability, and noise and echo suppression and cancellation.
  • Fixed an issue where voice calls would sometimes transition to Disconnected state instead of reconnecting properly after a network interruption.
  • Extended AGC2 (Automatic Gain Control 2) support to mobile platforms

🐛 General Stability and Bug Fixes

Multiple general critical bugs that can cause crashes and panics. We highly recommend upgrading to 1.6 to avoid them in your game.
  • Fixed critical bug where activity party privacy wasn’t properly set, causing “ask to join” to appear instead of “join” for public parties.
  • Fixed critical memory safety issue preventing connection objects from being deallocated during timer callbacks.
  • Fixed C# marshaling alignment bugs and double-free crashes.
  • Improved gateway resilience with fallback to generic URLs on zonal gateway failures.
  • Fixed WebSocket write-after-close errors preventing connection issues.
To learn more about building with the Discord Social SDK, check out the Discord Social SDK Overview, and if you have questions, feel free to drop them in #social-sdk-dev-help!
InteractionsComponents

Adding More Modal Components!

We’ve added more components to modals! All select menus (User, Role, Mentionable, Channel) are now fully supported in modals. In order to use a select menu in a modal, it must be placed inside a Label component. We’ve also added the Text Display component with markdown support as a top-level component in modals.

Components Now Supported in Modals:

Getting Started

Developer Resources

Check out our Component Reference for details on all available components.
HTTP API
As of September 10, 2025, bots can set banner, avatar, and bio fields using the modify current member route.
Voice

Deprecating Non-E2EE Voice Calls

We started work on end-to-end encryption for Discord over two years ago to enhance our user privacy and security. With DAVE now supported across all platforms, we’re very close to making every call fully end-to-end encrypted.

Developer Impact

To support our long-term privacy goals, we will only support E2EE calls starting on March 1st, 2026 for all audio and video conversations in direct messages (DMs), group messages (GDMs), voice channels, and Go Live streams on Discord. After that date, any client or application not updated for DAVE support will no longer be able to participate in Discord calls.

Implementing E2EE Voice

For developers working with Discord’s voice APIs, you can consult the updated voice documentation and the implementation examples available in our open-source repository as well as the protocol whitepaper.The Discord Developers community is also a great place to find assistance and answers to any integration questions you may have.We’re committed to making this transition as smooth as possible while delivering the enhanced privacy and security that DAVE provides to all Discord users.
Discord Social SDK

Discord Social SDK Release 1.5.11353

A new release of the Discord Social SDK is now available, with the following updates:

Unity Plugin

The Discord Social SDK binaries are available for download in the Developer Portal after enabling the Discord Social SDK for your application.To learn more about building with the Discord Social SDK, check out the Discord Social SDK Overview.
InteractionsComponents

Introducing New Modal Components!

You asked for them, and now they’re here! Modals are getting new components!!

What’s New

We’re introducing a new top-level Label component for modals that have a label, description, and can contain a Text Input or a String Select! You heard right, String Selects now work in modals!
  • String Selects now work in modals when placed inside a Label component
  • Text Inputs can also be used inside a Label component
  • When a Text Input is used in a Label component the label field on the Text Input is not allowed in favor of label on the Label component
  • ActionRow + TextInput is now deprecated in favor of the new Label component for better accessibility
  • The required field is now available on String Selects (defaults to true in modals, ignored in messages)
  • The disabled field on String Selects is not currently allowed in modals, and will trigger an error if used
We’ve also documented modal interaction responses and resolved objects for interactive components in each component’s Examples section.

New Layout Component

  • Label - A new top-level component that lets you add a title and description to your modal components!

Updates to Modal Components

Getting Started

Developer Resources

Check out our Component Reference for details on all available components.
Breaking ChangesHTTP API

Pin Permission Split

Pinning and unpinning messages now has its own permission. We split PIN_MESSAGES out of MANAGE_MESSAGES to give more granular control over who can pin messages in a channel. This is effective immediately for both users and apps. This change will be backwards compatible until January 12th 2026 when MANAGE_MESSAGES will no longer grant the ability to pin or unpin messages.
Discord Social SDK

Discord Social SDK Release 1.5

A new release of the Discord Social SDK is now available, with the following updates:

DM History Support

With the release of DM chat history this patch, the Social SDK can now fully support asynchronous player communication between individual players and in larger chat rooms. Players who go offline or background the game can come back to the history of the chat room and get caught up with what’s happening.

Rich Presence

Rich Presence can now more accurately display the different types of activities a player might be engaged in. Specifically, the “Competing” status may be valuable for games that host tournaments, weekend brackets, or other competitive play. Also, when you receive game invites, you can now accept them cross-device; don’t miss the group forming even if you’re AFK.
  • Added support for additional activity types (Listening, Watching, Competing)
  • Added support for new clickable URL fields and additional user status customization
  • Support for server-to-server rich presence invites and gateway-based invite handling. This means an invite can be accepted on a different device and the Client::SetActivityInviteCreatedCallback will be invoked on connected SDK sessions.

Linked Channels

Linked channels are all about keeping groups of friends connected in and outside the game. You can now join a player to channel’s linked Discord server from in-game, helping them bridge that gap and stay connected with friends even when they stop playing.

Android

The many-step process of mobile account linking has been simplified for users with Discord installed by deep-linking into the Discord mobile app to authorize with your game
  • Implemented native authentication support
  • Fixed native authentication callback when activities are terminated
  • Added an experimental audio setting on Android to avoid setting the OS to voice comms mode when connected to a Bluetooth headset on Android. This may be used if you wish to avoid the transition to voice volume controls and other related changes when connected to Bluetooth. To enable this setting, pass a ClientCreateOptions when instantiating the client and set the experimentalAndroidPreventCommsForBluetooth flag Video showing off the account linking process in 1.4 vs 1.5 on Android

iOS

The many-step process of mobile account linking has been simplified for users with Discord installed by deep-linking into the Discord mobile app to authorize with your game
  • Added native authentication support
  • The experimental Game audio subsystem now makes use of the iOS 18.2+ echo canceller when available and falls back to Standard mode otherwise.

Windows

  • Added ARM64 support

Linux

  • Ensured glibc 2.31 compatibility

Bug Fixes

  • Fixed bug where Client::SetVoiceLogDir didn’t have any effect
  • Added better error event handling to distinguish server authorization errors from user cancellations
  • Fixed activity platform validation for console games
  • Fixed crash safety issues with Client::GetCurrentUser when the client is in an unexpected non-Ready state. Added Client::GetCurrentUserV2 which explicitly returns an optional handle instead of dummy data in this situation. This issue also affected the Unity and Unreal versions of the SDK
  • Fixed Call::SetPTTActive

Known Issues

  • When the network is disconnected temporarily, active Calls may sometimes enter the Disconnected state instead of reconnecting. If a Call reaches Disconnected state, you must end and rejoin the call to reconnect if desired.
  • For DM chat history
    • No SDK-side caching for Client::GetUserMessagesWithLimit
      • Every invocation of Client::GetUserMessagesWithLimit will directly query the backend rather than using local SDK-side caching. This may have performance implications, particularly under high-frequency usage.
    • Provisional account merge message retrieval
      • After a provisional account is merged into a full account, messages sent while the user was on the provisional account cannot be retrieved.
Gateway

Introducing Rate Limit When Requesting All Guild Members

We’re introducing a change to the Request Guild Members gateway opcode.

What’s changing?

We are implementing a rate limit on the Request Guild Members opcode. This limit specifically affects requests for ALL guild members, when developers set limit to 0 and use an empty string for query.
Note: This rate limit applies only to the initial request when requesting ALL Guild Members, not to the Guild Members Chunk events that are sent in response.
  • Rate Limit: 1 request per guild per bot every 30 seconds
  • Scope: The limit applies per guild per bot (one bot can request members for different guilds within the 30-second window)
  • Behavior: Requests that exceed this limit will receive a RATE_LIMITED event as a response:
For example, if you are connected to guilds 123 and 456, you can request members from both guilds within a 30-second period. However, you cannot make a second request to guild 123 within that same 30-second window.

Impact on Applications

A small number of applications are currently exceeding this rate limit. If your app heavily relies on this opcode, we recommend reviewing your current implementation and making necessary adjustments to maintain functionality.

Timeline

Most apps won’t encounter this rate limit until it is rolled out to all servers on October 1, 2025. However, if you are the developer of an app that is requesting all guild members in very large guilds then you may start seeing this as soon as today, so we can ensure platform stability.

What you need to do

If your application uses Request Guild Members to request all members, we recommend:
  • Implement caching mechanisms for member data
  • Update your cache using the GUILD_MEMBER_ADD, GUILD_MEMBER_UPDATE, and GUILD_MEMBER_REMOVE gateway events
If you hit this limit, you will receive the RATE_LIMITED event as a response.
Discord Social SDK

Discord Social SDK Communication Features - General Availability

Communication features (cross-platform messaging, voice chat, lobbies, and linked channels) are now generally available for all Discord Social SDK users that meet our application process criteria. Previously available only in closed beta, these features enable seamless player interaction within your game.
  • Direct Messages: One-on-one private chat functionality
  • Discord voice chat: Real-time voice communication inside game lobbies
  • Lobbies & In-Game text chat: Virtual spaces where players can interact through voice and text chat
  • Linked Channels: Integration with Discord’s server-based text channels directly in your game UI

New Application Process for Full Access

We’ve launched an application process for developers who want to remove rate limits and gain production level access to communication features. Developers can now apply through our developer portal with detailed game information and usage projections to unlock production-level capacity.As part of documenting this application process, we have also documented pre-approval rate limits, so you can build, test and develop against the Social SDK with confidence.

Get Started with the Social SDK

The Discord Social SDK binaries are available for download in the Developer Portal after enabling the Discord Social SDK for your application.To learn more about building with the Discord Social SDK, check out the Discord Social SDK Overview.
ActivitiesEmbedded App SDK

Embedded App SDK Version 2.1 & 2.2

We’ve made a few improvements to the Embedded App SDK for version 2.2.0, here are the highlights:

Changes in version 2.1

New URL fields

We now support new fields for rich presence activities:
  • state_url - URL that is linked to when clicking on the state text in the activity card
  • details_url - URL that is linked to when clicking on the details text in the activity card
  • assets.large_url - URL that is linked to when clicking on the large image in the activity card
  • assets.small_url - URL that is linked to when clicking on the small image in the activity card

Changes in version 2.2

patchUrlMappings

In line with the recent change to remove the .proxy/ path from Discord Activity proxy URLs, the patchUrlMappings utility has been updated to generate simplified URLs by default. It will now create mappings without the .proxy/ prefix.The Embedded App SDK is available via npm and GitHub. You can check out our installation guide and reference to get started with it!
ActivitiesEmbedded App SDK

Remove .proxy/ from Discord Activity proxy path

We’ve updated the Content Security Policy (CSP) for Discord Activities to remove the .proxy/ path requirement when making requests through the discordsays.com proxy. This change simplifies the developer experience while maintaining full backwards compatibility. This was made possible by resolving the underlying privacy considerations that originally required the .proxy/ path restriction.

Before

Activities were required to make proxy requests through paths prefixed with /.proxy/:

After

Activities can now make proxy requests directly without the /.proxy/ prefix:

Technical Details

  • CSP Update: The Content Security Policy now allows requests to https://<app_id>.discordsays.com/* instead of the more restrictive https://<app_id>.discordsays.com/.proxy/*
  • Proxy Behavior: Both URL patterns work identically - your existing proxy mappings (e.g., /api -> example.com) will function the same way regardless of whether you use /.proxy/api or /api
  • Performance: No performance differences between the two approaches

Developer Tooling Updates

The patchUrlMappings utility will be updated in an upcoming Embedded App SDK release to generate the simplified URLs by default, though it will continue to support the .proxy/ format for backward compatibility.

Backward Compatibility

All existing code will continue to work without changes. The /.proxy/ path prefix is still fully supported and will be maintained indefinitely. You can:
  • Continue using existing /.proxy/ URLs
  • Switch to the new, simplified URLs
  • Use both patterns simultaneously in the same application
No migration is required. This is a purely additive change that expands what’s possible rather than breaking existing functionality.
HTTP API

Guild Create Deprecation

Apps can no longer create guilds. The documentation for these endpoints has been removed and the endpoints have been removed from the OpenAPI specification.See our earlier changelog entry for more information.
ActivitiesEmbedded App SDK
We’ve added new functionality to Rich Presences to give users of your application a more interactive and flexible experience. There are two big changes as part of this:
  • You can now add clickable links to the state text, details text, large image & small image
  • You can now choose which field (name, state, or details) is used in users’ status text in the member list (e.g. instead of “Listening to MyMusic” you can now have your status text show “Listening to Rick Astley”)
All of these new fields are documented on the Activity Object section of Gateway Events and also available through the Embedded App SDK.
HTTP API

Gradient Roles and Guild Tags

We’ve documented gradient role colors and guild tags in the API. Guild tags let users rep their favorite server with a 1-4 character badge next to their display name. They can be accessed using the primary_guild field on the user object. Servers can now give gradient colors to their roles instead of a single, solid color. Gradient colors use the new colors field on the role object. As part of this change, the color field on roles is now deprecated, but it will still work for backwards compatibility.

Gradient Role Colors

  • The guild feature ENHANCED_ROLE_COLORS will let you know if a guild is able to set gradient colors to roles.
  • Guild roles now have colors as part of the structure.
  • color on guild roles is deprecated but will still be returned by the API and continues to work for backwards compatibility.
  • Role color structure

Guild Tags

  • Guild tags can be retrieved through the primary_guild field on the user object.
  • User Primary Guild
Discord Social SDK

Discord Social SDK Release 1.4

A new release of the Discord Social SDK is now available, with the following updates:

Lobby Chat History

  • Added Client::GetLobbyMessagesWithLimit to retrieve lobby message histories based on a provided lobby ID, with a maximum of 200 messages and up to 72 hours.
  • Only messages from lobbies the user is currently a member of can be retrieved.
  • DM history will be coming soon too!

Unified Friends List

Audio Changes

  • A new experimental audio mode has been added for mobile devices which uses standard media audio streams instead of voice-specific processing. On iOS this causes the voice engine to use the Remote I/O Audio Unit instead of Voice Processing I/O and likewise on Android, media stream types are used instead of voice communication types. This mode may be enabled by creating a Client with a ClientCreateOptions parameter whose experimentalAudioSystem property is set to AudioSystem::Game. In this case, you should also set Client::SetEngineManagedAudioSession to true. We do not recommend using this for production - however, if you are interested in trying it out, we are looking for feedback!
  • Added Client::SetAecDump to enable recording of audio diagnostic information.

Auth

  • Publisher Auth
    • Publisher Auth is a new feature which makes authorization easier for publishers with multiple games. This is an early release of this feature and only available to a limited number of partners for now.
    • Added Client::ExchangeChildToken to facilitate child token exchange for public clients. Confidential clients will require a server to server implementation, but this method may be useful for development.
    • Invites from sibling applications will be visible to the SDK. They can be identified by the applicationId field on the ActivityInvite payload.
    • Messages sent from other sibling applications will be visible to the SDK. They can be identified by the ApplicationId method on the MessageHandle.
  • Added Client::RevokeToken and Client::UnmergeIntoProvisionalAccount to allow games leveraging Public Clients to perform token revocation or unmerge operations directly from clients.

Android

  • The SDK is now compatible with 16KB page size.

Misc

  • Improved activity serialization, avoiding including null/empty keys in the JSON payload.
HTTP API

Paginated Pin Endpoints

We’ve added new endpoints to manage paginated pins in channels. The Get Channel Pins endpoint allows you to retrieve and manage pinned messages in a more efficient way, especially for channels with a large number of pinned messages. Both Pin and Unpin endpoints remain the same with a new route. As part of this change we have deprecated the old endpoints for pinned messages. Switching to the new endpoints should be straightforward, as they maintain similar functionality but with improved pagination support.

New Endpoints

Get Channel Pins: Retrieve a list of pinned messages in a channel with pagination support: Pin Message: Pin a message in a channel: Unpin Message: Unpin a message in a channel:

Deprecated Endpoints

Get Pinned Messages: Pin Message: Unpin Message:
Discord Social SDK

Discord Social SDK Release 1.3

A new release of the Discord Social SDK is now available, with the following updates:

Authentication

  • Added an APPLICATION_DEAUTHORIZED webhook event which can be configured in the developer portal. When a user unlinks their account or revokes authorization for your application in any way, this event will be sent to configured webhooks. The payload will contain serialized user information. See Webhook Events docs for more information on configuring webhook events.

PC

  • Added configurable request timeout SDK HTTP client requests. Support is on PC in this release with console and mobile support coming in future release. Timeout default value is 30000ms (30 seconds) and can be configured using the new Client API: Client::SetHttpRequestTimeout
  • Fixed a crash that can occur when handling certain failed HTTP requests

Mobile

Android

  • Fixed routing of game and voice audio when external audio devices are connected and/or disconnected. Client::SetEngineManagedAudioSession has been added to communicate that the SDK should not manage audio routing and automatically enter and leave MODE_IN_COMMUNICATION when joining and leaving calls.
  • Fixed an issue with the Authorize method when a device configuration change needs to restart the activity

iOS

  • Various fixes for audio routing and session management. When using the Unity plugin, game audio will no longer stop playing when ending a call. For standalone SDK use, a method Client::SetEngineManagedAudioSession has been added to communicate that the SDK should not automatically start and stop the AVAudioSession when joining and leaving calls.
  • Corrected supported platform values in Info.plist for iOS .frameworks.

Consoles

  • Standalone archives now only contain console-specific files, like the Unity and Unreal Engine archives

Misc

Discord Social SDK

Discord Social SDK Release 1.2

A new release of the Discord Social SDK is now available, with the following updates:

Rich Presence

Packaging

  • Unity and Unreal plugin artifacts now contain just the additional files for console support so they can be extracted on top of the base plugin
  • Unity plugin is now packaged as a .zip that you should extract inside the Packages directory of your project to enable the above
  • Console archives now contain a small README with some console-specific documentation

Misc

User AppsHTTP APIInteractions

Raised Component Limits

We’re removing the top level component limit and raising the limit on number of components in a message to 40 when using the IS_COMPONENTS_V2 message flag! We’re also removing the limit on the number of components in a Container Component. Legacy messages have not changed and continue to allow up to 5 action rows.

What’s New

  • Total components: The limit for total components in a message has been increased to 40.
  • Top-level components: There is no longer a limit on top level components in a message (previously it was 10).
  • Container Component: There is no longer a limit on the number of components in a Container Component (previously it was 10).

Developer Resources

User AppsHTTP APIInteractions

Introducing New Components for Messages!

We’re bringing new components to messages that you can use in your apps. They allow you to have full control over the layout of your messages.

Why We Built Components V2

Our previous components system, while functional, had limitations:
  • Content, attachments, embeds, and components had to follow fixed vertical positioning rules
  • Visual styling options were limited
  • It was difficult to make visually cohesive experiences that combined the various functionalities of messages given they were expressed in a non-unified system
Our new component system addresses these challenges with fully composable components that can be arranged and laid out in any order, allowing for a more flexible and visually appealing design.

What’s New

Components V2 introduces several new component types that can be used in messages:

New Layout Components

  • Section - Combine text with an accessory component for contextually linked elements
  • Container - Create visually distinct groupings with a customizable accent color
  • Separator - Add visual spacing and dividers between components

New Content Components

  • Text Display - Add rich markdown-formatted text anywhere in your messages
  • Thumbnail - An image used in a section
  • Media Gallery - Present collections of images and videos in an organized grid
  • File - Embed file attachments as part of your message layout

Getting Started

To use the new components, you’ll need to send the message flag 1 << 15 (IS_COMPONENTS_V2) which activates the components system on a per-message basis.We’ve created guides to help you implement these new features:

Compatibility Notes

Legacy component behavior will continue to work as before, so your existing integrations won’t break. However, when using the Components V2 flag, you’ll need to adapt to a few changes:
  • The content and embeds fields will no longer work but you’ll be able to use Text Display and Container as replacements
  • Attachments need to be exposed through components to be visible. You can use a Media Gallery, Thumbnail, or File component to display them
  • The poll and stickers fields are disabled
  • A max of 10 top-level components and 30 total components in a message

Developer Resources

Check out our Component Reference for detailed specifications on all available components.We can’t wait to see what you build!
Discord Social SDK

Discord Social SDK Release 1.1.8318

A new release of the Discord Social SDK is now available, with the following updates:

Platforms

  • Playstation standalone archives now include linker stubs

Voice

  • Fixed a regression in audio playback on Linux
The Discord Social SDK binaries are available for download in the Developer Portal after enabling the Discord Social SDK for your application.To learn more about building with the Discord Social SDK, check out the Discord Social SDK Overview.
Discord Social SDK

Discord Social SDK Release 1.1

A new release of the Discord Social SDK is now available, with the following updates:

Platforms

  • Added Xbox One and PS4 console support

Auth

  • Added support for Unity Services as an external auth provider

Voice

  • Client::StartCallWithAudioCallbacks now permits sample data to be modified during record and playback for custom effects processing
  • Fixed a bug where the speaking state for a user could be stuck in the “on” state
  • Added Call::GetPTTReleaseDelay
  • Initialization of the voice engine is now delayed until it’s needed
  • Fixed a deadlock with the Linux PulseAudio backend where malfunctioning audio devices could cause a voice engine lockup

Rich Presence

  • Added support for sending rich presence updates and invites without connecting to the Discord gateway on desktop

Misc

The Discord Social SDK binaries are available for download in the Developer Portal after enabling the Discord Social SDK for your application.To learn more about building with the Discord Social SDK, check out the Discord Social SDK Overview.
HTTP API

Deprecating Guild Creation by Apps

Breaking Change

To address security concerns, we are deprecating the ability for applications to create guilds using the Create Guild endpoint.

What’s Changing

  • The Create Guild endpoint (POST /guilds) will be restricted for applications starting July 15, 2025
  • Existing Guilds owned by bots will have their ownership transferred to a real user
  • After the deprecation date, the endpoint will no longer be available

Timeline

  • April 15, 2025: Deprecation announcement
  • June 15, 2025: System DM/Email notifications sent to affected app owners and designated guild members
  • July 15, 2025: Create Guild endpoint will no longer be available
If your app is affected, you will receive a migration plan via Discord System DM.We understand this change may affect some legitimate use cases. If you have questions or believe your application requires continued access to guild creation functionality, please contact us through the Developer Support portal.
ActivitiesEmbedded App SDK
Custom Incentivized Links are used to customize how your incentivized link embed appears to users. You can create them in the developer portal or generate them from within your activity. Incentivized Links can be used as referral links, promotions, deep-linking into your activity, and more.
  • shareLink will now let you attach custom params to links you share about your game using custom_id.
  • Removed referrer_id from shareLink API. Any uses of referrer_id should be moved over to use custom_id instead. Passing referrer_id to shareLink will silently fail.
Learn more about creating and managing Custom Incentivized Links and how to generate them from within your activity with the shareLink API.The Embedded App SDK is available via npm and GitHub. You can check out our installation guide and reference to get started with it!
HTTP APIInteractions

Per-Attachment File Upload Behavior for Apps

Starting today, file upload limits for apps are checked per-attachment rather than per-message. This change makes the app attachment behavior the same as when a user uploads multiple attachments on a single message.
  • File size limits now apply to each individual attachment
  • Previously, limits were applied to the combined size of all attachments in a message
  • This aligns app attachment handling with user attachment behavior
The interaction payload will also include a new attachment_size_limit key that specifies the maximum allowed attachment size. This limit may be higher than the default attachment size limit, depending on the guild’s boost status or the invoking user’s Nitro status.For more information, check out our documentation on file uploads.
Discord Social SDK

Introducing the Discord Social SDK

Developers can now use the Discord Social SDK to build social features into their games, enabling friends lists, cross-platform messaging, voice and more for all players — with or without a Discord account.Discord Social SDK offers features that enhance connectivity and player engagement, including:
  • Account Linking
  • Provisional Accounts
  • Rich Presence
  • Deeplink Game Invites
Additionally, available in a closed beta to support in-game communications:
  • Cross-Platform Messaging
  • Linked Channels
  • Voice Chat
Developers can request expanded access to these available features via the closed beta.

Discord Social SDK Developer Resources

New resources are available in the Developer Portal to help you get started with the Discord Social SDK:
  • Getting Started Guides for C++, Unity and Unreal Engine.
  • Development Guides for building your game’s social features.
  • Design Guidelines for designing your game’s social features.
  • SDK Reference is now available.
  • The Discord Social SDK binaries are available for download in the Developer Portal after enabling the Discord Social SDK for your application.
To learn more about building with the Discord Social SDK, check out the Discord Social SDK Overview.
HTTP APIInteractionsBreaking Changes

Default File Upload Limit Change

On January 16, 2025, the default file upload limit will change from 25 MiB to 10 MiB.While this limit is already active for users and bot users, it hasn’t yet been applied to webhooks.
  • This change will take effect on January 16, 2025.
  • The 10 MiB limit will apply to both webhooks and interaction responses.
For more information, check out our documentation on file uploads.
Premium Apps

Premium Apps: Multiple Subscription Tiers

Developers with monetization enabled can now create and publish multiple subscription SKUs of the same type for their app. This allows developers to offer different subscription tiers with varying benefits and pricing. Users can upgrade and downgrade between published subscription SKUs.

What’s Changed

Developer Portal

  • Under the Monetization tab, you can now publish multiple subscription SKUs of the same type for your app.

App’s Store Page

  • When multiple subscription SKUs are published: Users can now upgrade or downgrade between different published subscription SKUs.

User App Subscription Settings

  • When multiple subscription SKUs are published: Users can now upgrade or downgrade between different published subscription SKUs.
  • These settings are available under User Settings → Subscriptions → App Subscriptions.

Subscription Object

  • New field renewal_sku_ids added to the subscription object response for SUBSCRIPTION_UPDATE events and API endpoints.
  • renewal_sku_ids is a list of snowflakes that indicate the SKU(s) that the user will be subscribed to at renewal.

Updated Guide: Managing SKUs

  • The Managing SKUs guide has been updated to include information about creating and managing multiple subscription SKUs.

Updated Guide: Implementing App Subscriptions

  • The Implementing App Subscriptions guide has been updated to include information about supporting upgrades and downgrades between multiple subscription SKUs.
Premium Apps

Entitlement Migration Completed

The entitlement migration which began on October 1, 2024, has been successfully completed as of November 1, 2024.

What’s Changed

  • The documentation has been updated to reflect the new entitlement system as the standard behavior.
  • ENTITLEMENT_UPDATE event for subscription-related entitlements now only occur when the subscription ends.
  • The ends_at value on the entitlement object is now set when the subscription ends.
  • To determine when a subscription was canceled, listen for SUBSCRIPTION_UPDATE events or use the Subscription API to retrieve the subscription’s status and canceled_at timestamp.
For more details about the migration process, please refer to the migration guide.
EventsUser Apps

Webhook Events

You can now subscribe to a limited number of HTTP-based outgoing webhook events after configuring a webhook events URL. Currently, 3 events are available: APPLICATION_AUTHORIZED, ENTITLEMENT_CREATE, and QUEST_USER_ENROLLMENT. Read the webhook events documentation for details on subscribing and using webhook events.