Quick Start

Our Platform API helps you to interact with the SendBird servers. The APIs are designed around RESTful principles, and return JSON in response to HTTP requests. The client SDKs handle many of the requests and responses natively. However, utilizing the Platform API can add flexibility and functionality from the server side.

Note: The Platform API is not designed for client side use. Use the corresponding SDKs instead.

Base URL

The base URL used for all APIs is formatted as the following:


To get the base url for your app, sign in to the SendBird DashBoard, select the application, open the Overview, and check the App Credentials > API URL.


A typical request to the Platform API includes the following headers:

Content-Type: application/json, charset=utf8
Api-Token: {API_Token}
  • Content-Type: every request must include a Content-Type header.
  • API Token: an API Token is required to identify and authenticate your app. An exception is when you want to perform actions outside of a specific application (such as creating a new application, or fetching a list of all your apps), in which case you must provide Basic Authentication.

If your request contains a file, you must send a Multipart request. Add multipart/form-data to your Content-Type header, as well as a boundary, which is a delimiter string that separates each data field.

Content-Type: multipart/form-data; boundary=--some_boundary_delimiter_string

Content-Disposition: form-data; name="{key}"


Content-Disposition: form-data; name="{key}"


Content-Disposition: form-data; name="{key}"


Content-Disposition: form-data; name="{key}"; filename="{file_name}"
Content-Type: {Content-Type}


  import os
  import requests
  api_headers = {'Api-Token': '{api_token}'}
  data = {
    'key1': {value},
    'key2': {value}
  filepath = os.path.join(os.path.dirname(__file__), '{file_path}', '{file_name}')
  upload_files = {'file_key': ('{file_name}', open(filepath, 'rb'))}
  res = requests.post('{url}', headers=api_headers, data=data, files=upload_files)
  curl -X {HTTP Method} 
  -H "Api-Token: {api_token}" 
  -H "Content-Type: multipart/form-data; boundary=--some_boundary_delimiter_string" 
  -F "key1=value" 
  -F "key2=value" 
  -F "file_key=@filename" 
Python request example
  # python: Create User API
  import os
  import requests
  api_headers = {'Api-Token': '{api_token}'}
  data = {
    'user_id': 'some_user_id',
    'nickname': 'some_nickname',
    'issue_access_token': True,
  filepath = os.path.join(os.path.dirname(__file__), '{file_path}', '{file_name}')
  upload_files = {'profile_file': ('{file_name}', open(filepath, 'rb'))}
  res = requests.post('https://{region_identifier}.sendbird.com/v3/users', 


To use the Platform API with a specific application, you must authenticate a request using your API Token. You can find the token in your Dashboard under Overview - App Credentials. And the API Token you'll find in your Dashboard is a Master API Token. Master API Token is issued when an application is created, and it cannot be revoked or changed.
With Master API Token, you can issue an API Token with it, revoke other API Token, or list up API Tokens issued. As stated above, an API Token must be included in your HTTP Request Header for authentication.

Note: This is a change from the Old Server API, where the token had to be included in the payload.

Request Header
"Api-Token": {API_Token}

DO NOT request any Platform API from your client application. If your API Token information is compromised, you risk losing all your data.

Authenticate with HTTP Basic Authentication when you want to create, delete, or list applications. In these scenarios, you can authenticate your request with your login details rather than with an API Token. Generate a Basic Auth Header by inputting your login email and password.

If you create a Basic Auth header manually, then do the following:

  1. The email and password are combined with a single colon (:). For example, api@sendbird.com:1234
  2. The resulting string is encoded using the RFC2045-MIME variant of Base64, except not limited to 76 char/line. For example, 'api@sendbird.com:1234' | base64
  3. The authorization method and a space, "Basic ", is then prepended to the encoded string. For example, Basic YXBpQHNlbmRiaXJkLmNvbToxMjM0Cg==
  4. Add the resulting string to your header with an Authorization key. For example, Authorization: Basic YXBpQHNlbmRiaXJkLmNvbToxMjM0Cg==

URL Encoding

When sending requests over HTTP, it is required that you encode your URLs into a browser-readable format. urlencoding replaces unsafe non-ASCII characters with a % followed by hex digits to ensure readability.

In the following, user_id is urlencoded. For example, user_id@email.com is urlencoded to user_id%40email.com.

GET https://{region_identifier}.sendbird.com/v3/users/{user_id}

Note: If you want region_identifier for your app, sign in to the SendBird DashBoard, select the application, open the Overview, and see the App Credentials > API URL.

Like the following, you can encode URLs in most languages.

import urllib
urllib.quote('api@sendbird.com', safe='')

which returns:


Therefore, your full request looks like:

GET https://{region_identifier}.sendbird.com/v3/users/api%40sendbird.com