Skip to main content
Share
Guides

Discord Bot Invite Link: OAuth2 URL, Scopes, Permissions and Install Contexts

A Discord bot invite link is an OAuth2 authorize URL with your client_id, the bot and applications.commands scopes and a permissions integer. Here is every parameter, the portal's URL Generator and Install Link options, guild vs user install, and how to fix Missing Access and Missing Permissions after the bot joins.

Content & Engineering
Oct 20, 2026
11 min read
Updated Nov 2026Last verified November 2026
discord bot invite linkdiscord oauth2 url generatoradd bot to server linkbot and applications.commands scopediscord bot permissions integer
TL;DR

A Discord bot invite link is an OAuth2 authorize URL with your client_id, the bot and applications.commands scopes and a permissions integer. Here is every parameter, the portal's URL Generator and Install Link options, guild vs user install, and how to fix Missing Access and Missing Permissions after the bot joins.

Key Takeaways
  • A Discord bot invite link is an OAuth2 authorize URL: https://discord.com/oauth2/authorize?client_id=YOUR_APP_ID&scope=bot+applications.commands&permissions=PERMISSION_INTEGER .
  • Generate it in the Developer Portal under OAuth2 > URL Generator, or set a default Install Link on the Installation page.
  • The person who opens it must have the Manage Server permission in the server they pick.
  • Last verified: November 2026 against Discord's OAuth2, Application and Permissions documentation and the developer change log.

Start here: the invite link format

A Discord bot invite link is an OAuth2 authorize URL: https://discord.com/oauth2/authorize?client_id=YOUR_APP_ID&scope=bot+applications.commands&permissions=PERMISSION_INTEGER. Generate it in the Developer Portal under OAuth2 > URL Generator, or set a default Install Link on the Installation page. The person who opens it must have the Manage Server permission in the server they pick.

Last verified: November 2026 against Discord's OAuth2, Application and Permissions documentation and the developer change log.

https://discord.com/oauth2/authorize?client_id=123456789012345678&scope=bot+applications.commands&permissions=84992

That link adds the bot user with View Channels, Send Messages, Embed Links and Read Message History (84992), and lets the app register slash commands. Paste any invite link into the Discord permissions calculator to see exactly which permissions a given integer grants, or to build one from checkboxes.

GoalWhat to use
One link you can paste anywhereInstallation page > Install Link > Discord Provided Link, configured with Default Install Settings
A link with specific permissions or a preselected serverOAuth2 > URL Generator, or a hand-built URL
Commands available to a user everywhere, without adding to a serverUser Install context (integration_type=1)
Only you can add the botTurn off Public Bot on the Bot page

URL anatomy, parameter by parameter

Discord's OAuth2 documentation calls this the bot authorization flow - a "server-less and callback-less" OAuth2 flow. Unlike a normal OAuth2 login, it needs no redirect_uri and no response_type, because your app does not receive a user access token.

https://discord.com/oauth2/authorize
  ?client_id=123456789012345678          # Application ID from General Information
  &scope=bot+applications.commands      # space-separated, URL-encoded as + or %20
  &permissions=84992                    # bitfield of bot permissions, as a decimal string
  &guild_id=987654321098765432          # optional: preselect a server
  &disable_guild_select=true            # optional: lock that selection
  &integration_type=0                   # optional: 0 = server install, 1 = user install

(The comments are for reading only; a real URL is one line.)

ParameterRequiredWhat it does
client_idYesYour Application ID. Not the bot token, not the client secret
scopeFor the bot flowMust include bot to add a bot user. applications.commands lets the app create commands; Discord's scope table notes it is included by default with bot, and listing both is harmless
permissionsNoDecimal bitfield of the bot's server-wide permissions. Omit or use 0 for none
guild_idNoPreselects that server in the dropdown if the user can add bots there
disable_guild_selectNotrue stops the user changing the preselected server
integration_typeNo0 = GUILD_INSTALL, 1 = USER_INSTALL. Only relevant when scope includes applications.commands, and the app must support that context

One behavior worth knowing: if you pass only client_id (optionally with permissions, guild_id or disable_guild_select), Discord uses the Default Install Settings from the portal. Adding scope, integration_type or redirect_uri overrides them. That is why a link that "used to ask for permissions" can change after someone edits the Installation page.

If you request any scope beyond bot and applications.commands (for example identify), the flow becomes a full authorization code grant: response_type=code is mandatory and Discord redirects to your registered redirect URI.

Generating it in the portal: URL Generator vs Install Link

Option 1: OAuth2 URL Generator

  1. Open your app in the Developer Portal and go to OAuth2 > URL Generator.
  2. Tick bot and applications.commands under scopes. A Bot Permissions panel appears once bot is ticked.
  3. Tick the permissions the bot needs. The integer updates as you go.
  4. Copy the generated URL at the bottom.

Good for one-off links and for links with a specific permission set per audience.

Option 2: Install Link (Installation page)

Discord's getting started guide now leads with this. On the Installation page:

  1. Under Installation Contexts, choose Guild Install, User Install, or both. Discord's Application docs note that newly created apps support only guild installation by default.
  2. Under Install Link, select Discord Provided Link (the alternatives are Custom URL and None).
  3. In Default Install Settings, add applications.commands for User Install, and applications.commands plus bot with your chosen permissions for Guild Install.
  4. Copy the link. It is just https://discord.com/oauth2/authorize?client_id=...; the scopes and permissions come from the settings.

With an install link configured, an Add App button appears on your app's profile and App Directory page. Selecting None removes that button and makes the app ineligible for the App Directory. Discord Provided Links are limited to the bot and applications.commands scopes; use a Custom URL if you need something else.

Try it yourself
Build your first chatbot free
Free plan, no credit card required. Live on your site in about 10 minutes.
Start building free

Building and sharing invite links in code

Hand-assembling the query string is where typos creep in: a space instead of + in the scope, a permissions value copied with a thousands separator, a client secret pasted as the client ID. Build it with a URL library instead:

from urllib.parse import urlencode

params = {
    "client_id": "123456789012345678",
    "scope": "bot applications.commands",   # urlencode turns the space into +
    "permissions": str(1024 | 2048 | 16384 | 65536),   # 84992
}
print("https://discord.com/oauth2/authorize?" + urlencode(params))

A few habits that keep invite links maintainable once other people depend on them:

  • Put your own redirect in front of it. Publish yourdomain.com/invite and redirect it to the Discord URL. When you change permissions or switch to a different app, every old link in READMEs, listing sites and support macros keeps working.
  • Use separate links per audience. A "minimal" link for cautious server owners and a "full features" link with moderation permissions, both pointing at the same app, lets admins choose what they grant.
  • Preselect the server in support flows. When you already know the guild (for example, a customer is setting up from your dashboard), pass guild_id plus disable_guild_select=true so they cannot add the bot to the wrong server.
  • Document the integer. Next to the link, list the permissions it requests and why. Server admins read that before they click, and it doubles as the answer when your bot later fails with 50013 and someone asks what it was granted.
  • Granting more later is an admin task. If the bot needs a new permission after it is installed, the cleanest path is for a server admin to edit the bot's role in Server Settings, rather than expecting everyone to reinstall.

Guild install vs user install

Guild install (server context)User install (user context)
Who can authorizeA server member with MANAGE_GUILD (Manage Server)Any user, for their own account
Who sees the appEveryone in the server, subject to command permissionsOnly the authorizing user, across their servers, DMs and group DMs
Bot user and permissionsYes - bot joins with the requested permissionsNo server permissions; commands only
Typical useModeration, community, support botsPersonal utilities: lookups, translation, quick replies

User-installed apps still respect the user's permissions where they are used. Discord's example: if a user runs a command from a channel where they cannot send messages, the app cannot respond with a non-ephemeral message there. If you add a new installation context to an existing app, update your commands' contexts too, or they will not appear in the new context.

When both contexts are enabled, the Discord Provided Link asks the user to choose "Add to server" or "Add to my apps".

Messenger Link Generator
Free tool - no signup, runs in your browser.
Open free tool

Choosing the permissions integer

The permissions value is a bitfield from Discord's permissions reference, sent as a decimal number. The flags most bots need:

PermissionBitDecimal value
View Channels (VIEW_CHANNEL)1 << 101024
Send Messages (SEND_MESSAGES)1 << 112048
Embed Links (EMBED_LINKS)1 << 1416384
Attach Files (ATTACH_FILES)1 << 1532768
Read Message History (READ_MESSAGE_HISTORY)1 << 1665536
Manage Webhooks (MANAGE_WEBHOOKS)1 << 29536870912
Send Messages in Threads (SEND_MESSAGES_IN_THREADS)1 << 38274877906944
Administrator (ADMINISTRATOR)1 << 38

Add the values you need: 1024 + 2048 + 16384 + 65536 = 84992. Note that Send Messages does not cover threads; add Send Messages in Threads if the bot replies inside threads.

Avoid Administrator. It bypasses every channel overwrite, which makes debugging "why can it post here" impossible and turns a leaked token into full server control. Discord also marks several moderation-level permissions (Administrator, Manage Server, Manage Webhooks and others) as requiring the owner account to use two-factor authentication when the server has server-wide 2FA enabled.

The integer only sets the permissions of the role Discord creates for the bot at install time. Server admins can change that role later, and channel overwrites can still deny things the role allows - which is where most post-invite errors come from.

Invited, but Missing Access (50001) or Missing Permissions (50013)

Getting the bot into the server is half the job. The two errors that show up next:

ErrorLiteral messageWhat it means after an invite
50001Missing accessThe bot cannot see the resource at all: no View Channels on that channel (often a private channel or category overwrite), or it is acting on a server it is not in
50013You lack permissions to perform that actionThe bot can see the channel but lacks the specific permission (Send Messages, Embed Links, Manage Roles...), or role hierarchy blocks the action

Role hierarchy is the one the permissions integer cannot fix. Per Discord's docs, a bot can only assign roles, kick, ban or edit nicknames for members whose highest role is below the bot's highest role. A freshly invited bot's role sits near the bottom of the list, so "Manage Roles" in the invite does nothing until an admin drags the bot's role above the roles it should manage.

Diagnose instead of guessing:

  1. Check the channel's permission overwrites for the bot's role and for @everyone.
  2. Since October 30, 2026, Discord exposes computed permissions directly: GET /channels/{channel.id}/permissions/member/{user.id} with your bot's user ID returns its effective permissions in that channel (the call itself requires View Channels). Discord's change log lists matching guild and role variants.
  3. Compare the result with the action you are attempting.

What changed recently: Discord is rolling out channel obfuscation for bots, mandatory from November 16, 2026. Channels a bot cannot view arrive over the Gateway with redacted fields (the name becomes ___hidden___ and a CHANNEL_OBFUSCATED flag is set), and GET /guilds/{guild.id}/channels omits them entirely. If your bot suddenly "loses" channels after an invite, it lacks View Channels there - the same root cause as 50001.

Other invite problems and their causes

SymptomCauseFix
Your server is missing from the dropdownYou lack Manage Server thereAsk an admin to open the link, or get the permission
Only you can invite the bot; others cannotPublic Bot is offTurn on Public Bot on the Bot page if you want others to add it
Invite asks for a redirect or errors about a code grantRequires OAuth2 Code Grant is on, or you added scopes beyond bot/applications.commandsTurn the setting off, or implement the full code grant with a redirect URI
Bot joined, slash commands missingCommands not registered, or registered globally and still propagatingRegister to a test guild first; check applications.commands was authorized
Invite fails once the bot is in many serversDiscord requires verification for apps in 100+ serversApply for verification; see 30001
Bot appears offline after joiningInvite worked; the bot process is not connectedCheck the token and intents

Two reality checks help when a user reports "the link is broken". First, confirm the client_id in the link is the Application ID of the app you think it is - dev and production apps get swapped constantly. Second, when someone you do not know asks for an invite link with Administrator to "test" something, be suspicious; the Discord account age checker decodes any user or app ID's creation date, which is a quick sanity check on brand-new accounts.

If the bot is in and online but not answering, our Discord bot not responding guide picks up from here, and the full code reference lives in the Discord error directory. For a business support bot you would rather configure than host, Conferbot's Discord integration walks you through the same install link from its dashboard.

Share this article:

Was this article helpful?

Ready to build your chatbot?

Join the businesses. Deploy on website, WhatsApp, and 11 more channels in minutes. Free forever plan available.

No credit cardNo coding13+ channels
Start Building Free

Get chatbot insights delivered weekly

Join 5,000+ professionals getting actionable AI chatbot strategies, industry benchmarks, and product updates.

🎯Automate this with a free chatbot

Build and deploy in 10 minutes. No coding needed.

❓FAQ

Discord Bot Invite Link FAQ

Everything you need to know about chatbots for discord bot invite link.

🔍
Popular:

In the Developer Portal, open your app, go to OAuth2 then URL Generator, tick the bot and applications.commands scopes, choose bot permissions, and copy the generated URL. Alternatively set a Discord Provided Link on the Installation page with Default Install Settings. Either way the link is a discord.com/oauth2/authorize URL containing your client_id.

The scope parameter lists what the installing user grants. bot adds your bot user to the selected server with the requested permissions. applications.commands lets your app create slash and context menu commands there. Discord's scope reference notes applications.commands is included by default with bot, so listing both is redundant but harmless and makes the intent explicit.

It is a decimal bitfield where each bit is one permission from Discord's permissions reference. View Channels is 1024, Send Messages 2048, Embed Links 16384 and Read Message History 65536, so those four together are 84992. It sets the permissions of the role Discord creates for the bot at install time; admins can change that role later.

The server list only shows servers where you have the Manage Server permission, because server installs must be authorized by a member with MANAGE_GUILD. Ask a server owner or admin to open the invite link, or have them grant you that permission. If the app only supports user installation, there is no server option at all.

A guild install adds the app to a server, visible to all members, and can include a bot user with permissions. It must be authorized by someone with Manage Server. A user install adds the app to one user's account, works across their servers and DMs, provides commands only, and needs no server permissions. Choose contexts on the Installation page.

50001 means the bot cannot see the resource at all, usually because a channel or category overwrite removes View Channels from its role or from everyone. It also occurs when the bot acts on a server it is not in. Grant View Channels on that channel, or check the computed permissions with the channel member permissions endpoint.

The invite only sets the bot role's server-wide permissions. Channel overwrites can still deny specific permissions, and role hierarchy blocks managing roles, kicking, banning or renaming members whose highest role is at or above the bot's. Move the bot's role higher in Server Settings and review the overwrites on the channel where the action fails.

Your app must be authorized with commands access in the server for its slash commands to appear there. Discord's documentation says applications.commands is included by default with the bot scope, so a standard bot invite covers it. For a user install, use applications.commands on its own, since user-installed apps have no bot user.

Turn off Public Bot in your application's settings. Discord's documentation says that when it is unchecked, only you can add the bot to servers; when it is public, anyone with the link can add it to servers where they have the proper permissions. Team-owned apps can also be invited by team members as described in the Teams docs.

About the Author

Content & Engineering

The Conferbot team writes about building, deploying, and improving AI chatbots.

View all articles
Skip the blank canvas
Start from one of 250+ free chatbot templates for lead generation, support, e-commerce, and 20+ industries - customize and launch in minutes.
Browse free templates

Related Articles

From the reference shelf

Fact-checked reference pages and free tools for the platform this article covers.

Omnichannel Platform

One Chatbot,
Every Channel

Your chatbot works seamlessly across WhatsApp, Messenger, Slack, and 6 more platforms. Build once, deploy everywhere.

View All Channels
Conferbot
online
Hi! How can I help you today?
I need pricing info
Conferbot
Active now
Welcome! What are you looking for?
Book a demo
Sure! Pick a time slot:
#support
Conferbot
New ticket from Sarah: "Can't access dashboard"
Auto-resolved. Password reset link sent.