Skip to main content
Documentation - Discord Docs

Search documentation

Type to search this documentation.

On this pageOverview

Use with Discord APIs

The Discord Social SDK provides client-side functionality for integrating Discord social features into your game. However, if you use a game backend, you should interact with Discord's HTTP APIs for server-side operations when possible.

Before you begin, make sure you have:

  • A Discord application created in the Developer Portal
  • Access to your application's bot token
  • Required OAuth2 scopes configured

For server-to-server communication:

Bash
curl -X GET https://discord.com/api/v10/users/@me \
  -H "Authorization: Bot YOUR_BOT_TOKEN"

For authenticated user actions:

Bash
curl -X GET https://discord.com/api/v10/users/@me \
  -H "Authorization: Bearer USER_ACCESS_TOKEN"

Exchange an authorization code for an access token:

Python
# filepath: /your/backend/auth.py
import requests

def exchange_code(code, redirect_uri):
    data = {
        'client_id': 'YOUR_CLIENT_ID',
        'client_secret': 'YOUR_CLIENT_SECRET',
        'grant_type': 'authorization_code',
        'code': code,
        'redirect_uri': redirect_uri
    }
    
    response = requests.post('https://discord.com/api/v10/oauth2/token', data=data)
    return response.json()

Get information about the authenticated user:

Python
def get_user_info(access_token):
    headers = {'Authorization': f'Bearer {access_token}'}
    response = requests.get('https://discord.com/api/v10/users/@me', headers=headers)
    return response.json()

You can use the Discord OpenAPI Spec to generate a client in your preferred backend language to make it easier to call the various APIs. A good tool for that is https://openapi-generator.tech/.

In python for example, that might look like this:

Python
import openapi_client
import os
from pprint import pprint
 
configuration = openapi_client.Configuration(host = "https://discord.com/api/v10")
configuration.api_key['BotToken'] = 'Bot ' + os.environ["API_KEY"]
with openapi_client.ApiClient(configuration) as api_client:
    api_instance = openapi_client.DefaultApi(api_client)
 
    request = openapi_client.CreateLobbyRequest()
    request.metadata={'foo':'bar'}
    pprint(api_instance.create_lobby(request))

  1. Token Security
    • Never expose bot tokens in client-side code
    • Store tokens securely
  2. Rate Limiting
    • Respect Discord's rate limits
    • Implement exponential backoff
    • Cache responses when appropriate
  3. Error Handling
    • Handle HTTP errors gracefully
    • Implement retry logic for transient failures
    • Log API errors for debugging

Now that you've set up Rich Presence, you might want to explore:

Need help? Join the Discord Developers Server and share questions in the #social-sdk-dev-help channel for support from the community.

If you encounter a bug while working with the Social SDK, please report it here: https://dis.gd/social-sdk-bug-report


Date Changes
March 17, 2025 Initial Release
Suggest an edit

Propose a replacement for this page. The site team reviews it before applying any changes.

Export
Documentation menu