Skip to main content
Documentation - Discord Docs
current

Search documentation

Type to search this documentation.

On this pageOverview

Use with Discord APIs

Combine Discord Social SDK with Discord's REST APIs for enhanced functionality.

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