Reference
Discord
Set up Discord OAuth for user identity, server data, and messaging
Overview
Section titled “Overview”Connect your users to Discord for identity verification, server membership data, and messaging integrations.
| Property | Value |
|---|---|
| Provider ID | discord |
| Category | Communication |
| PKCE | Supported |
| Token refresh | Automatic |
| Redirect URI | Shown in Developer Portal |
Step 1: Create a Discord OAuth App
Section titled “Step 1: Create a Discord OAuth App”Go to the Discord Developer Portal
Navigate to discord.com/developers/applications and sign in.
Create a new application
Click New Application, enter a name, and click Create.
Configure OAuth2
In the left sidebar, click OAuth2. Under Redirects, add the Alter callback URL from the Developer Portal.
Get credentials
Copy the Client ID and Client Secret from the OAuth2 page.
Step 2: Add to Alter Vault
Section titled “Step 2: Add to Alter Vault”Open the Developer Portal
Go to portal.alterauth.com and navigate to the application.
Add Discord provider
Go to OAuth Providers > Add Provider > Discord.
Enter credentials
- Client ID: Paste your Discord Client ID
- Client Secret: Paste your Discord Client Secret
Select scopes
Choose the scopes the application needs.
Save
Click Save. The provider is now active.
Available Scopes
Section titled “Available Scopes”| Scope | Description |
|---|---|
applications.builds.read | Read build data for the user’s applications |
applications.builds.upload | Upload or update builds for the user’s applications (approved partners only) |
applications.commands | Add commands to a guild (included by default with the bot scope) |
applications.commands.permissions.update | Update command permissions in a guild where the user has permission |
applications.entitlements | Read entitlements for the user’s applications |
applications.store.update | Read and update store data for the user’s applications |
bot | Add a bot to the user’s selected guild by default |
connections | View the user’s linked third-party accounts |
dm_channels.read | See information about the user’s DMs and group DMs (approved partners only) |
email | View the user’s email address |
gdm.join | Join users to a group DM |
guilds | View basic information about all guilds the user belongs to |
guilds.join | Add the user to a guild where the bot already belongs |
guilds.members.read | View the user’s member information in a guild |
identify | View the user’s basic profile from /users/@me |
identify.premium | Read the user’s Nitro subscription type (approved partners only) |
relationships.read | Access the user’s Discord Friends list, pending requests, and blocked users (Social SDK access required) |
role_connections.write | Update the user’s connection and metadata for the app (not valid with the implicit grant) |
- Several Discord scopes are approval-only or Social SDK-only. Requesting them without Discord approval may cause OAuth errors.
- Discord’s
activities.readandactivities.writescopes are documented as not currently available for apps, so they are not shown in Alter’s authorization-code scope picker. - Discord’s
applications.commands.updatescope is documented for the client credentials grant, so it is not shown in Alter’s authorization-code scope picker. - Discord’s
messages.read,rpc,rpc.*, andvoicescopes are local client/RPC or voice surfaces rather than normal Discord HTTP API access-token permissions, so they are not shown in Alter’s HTTP proxy-oriented picker. - Discord’s
webhook.incomingscope returns webhook material in the token response; Alter does not expose that payload as a managed webhook credential, so it is not shown in the picker. - For most user-facing integrations,
identifyandemailare sufficient. - See the Discord OAuth2 documentation for more details.
Policy-cataloged operations
Section titled “Policy-cataloged operations”Alter policy rules can target these attested operations and families for operation-level and parameter-aware controls.
| Operation ID | Families | Method | Provider path |
|---|---|---|---|
create_message | send | POST | /channels/{channel_id}/messages |
execute_webhook | send | POST | /webhooks/{webhook_id}/{webhook_token} |
crosspost_message | send | POST | /channels/{channel_id}/messages/{message_id}/crosspost |
list_messages | read | GET | /channels/{channel_id}/messages |
get_message | read | GET | /channels/{channel_id}/messages/{message_id} |
delete_message | delete | DELETE | /channels/{channel_id}/messages/{message_id} |
bulk_delete_messages | delete | POST | /channels/{channel_id}/messages/bulk-delete |
get_channel | read | GET | /channels/{channel_id} |
update_channel | write | PATCH | /channels/{channel_id} |
delete_channel | delete | DELETE | /channels/{channel_id} |
list_guild_channels | read | GET | /guilds/{guild_id}/channels |
create_guild_channel | write | POST | /guilds/{guild_id}/channels |
create_dm | write | POST | /users/@me/channels |
get_guild | read | GET | /guilds/{guild_id} |
update_guild | admin | PATCH | /guilds/{guild_id} |
list_my_guilds | read | GET | /users/@me/guilds |
list_guild_members | read | GET | /guilds/{guild_id}/members |
get_guild_member | read | GET | /guilds/{guild_id}/members/{user_id} |
delete_guild_member | admin | DELETE | /guilds/{guild_id}/members/{user_id} |
ban_user_from_guild | admin | PUT | /guilds/{guild_id}/bans/{user_id} |
unban_user_from_guild | admin | DELETE | /guilds/{guild_id}/bans/{user_id} |
bulk_ban_users_from_guild | admin | POST | /guilds/{guild_id}/bulk-ban |
list_guild_bans | read | GET | /guilds/{guild_id}/bans |
list_guild_roles | read | GET | /guilds/{guild_id}/roles |
create_guild_role | admin | POST | /guilds/{guild_id}/roles |
delete_guild_role | admin, delete | DELETE | /guilds/{guild_id}/roles/{role_id} |
add_guild_member_role | admin | PUT | /guilds/{guild_id}/members/{user_id}/roles/{role_id} |
delete_guild_member_role | admin | DELETE | /guilds/{guild_id}/members/{user_id}/roles/{role_id} |
create_channel_invite | write | POST | /channels/{channel_id}/invites |
invite_revoke | delete | DELETE | /invites/{code} |
create_webhook | admin | POST | /channels/{channel_id}/webhooks |
delete_webhook | admin, delete | DELETE | /webhooks/{webhook_id} |
list_channel_webhooks | read | GET | /channels/{channel_id}/webhooks |
get_my_user | read | GET | /users/@me |