Introduction

Copied!

Welcome to Stream's REST API documentation!

Please note

Copied!

The REST documentation is recommended for advanced users that want to write their own API clients. Have a look below at the official clients, framework integrations, and community-contributed libraries.

Always feel free to get in touch if you have questions.

Are you looking for a ready-made client or framework library?

Copied!

If you're looking to get started quickly, official clients are available for a whole host of languages including Ruby, JavaScript, Python, PHP, Go, and more.

First steps

Copied!

1. Complete 'Getting Started'

Copied!

Before you start writing your client, we recommend that you complete the getting started tutorial. It explains the Chat API concepts, and allows you to get familiar with Stream.

2. Review Official Clients

Copied!

Reviewing the official Stream API clients is a great source of inspiration for writing your own client.

A good starting point is the official JavaScript client as it runs its test suite in the browser.

You can review all of our open-source libraries at the official Stream GitHub page.

3. Browse Documentation

Copied!

This documentation page includes all API endpoints and describes the three authentication available to use Stream Chat.

Got stuck? No worries at all, feel free to contact support at any time.

Basics

Copied!

Common Parameters

Copied!

Every request should contain api_key query parameter and appropriate authorization header

nametypedescriptiondefaultoptional
api_keystringApplication public API key-

Compression

Copied!

Stream API supports gzip and deflate compression, make sure that your client negotiate compression. Enabling compression can reduce significantly latency and used bandwidth and it's highly recommended.

JSON

Copied!

Unless specified differently, all request body data must be JSON encoded and all responses are also JSON encoded.

Authentication

Copied!

API Keys and Tokens

Copied!

Every API request to Stream must include: the API Key of the app performing the request and an authentication token generated using the API Key secret. Token must be a JWT token including a signature generated with the HS256 algorithm.

If you are not familiar with JWT we highly recommend reading more about it here. Libraries to generate JWT are available for most programming languages. The full list is available here.

The authentication token must include the correct claims (also called payload). A token valid for a type of request or for a user_id might not be valid for another one. Your application should generate the appropriate token; when using client-side auth, each user should have its own unique token.

Sending an Authenticated Request

Copied!

All API requests to Stream must include a query parameter called api_key with the API Key in use. Once the token is generated correctly it is used to authenticate a request. This is done by setting two HTTP headers on the request:

Header

Value

Description

Stream-Auth-Type

jwt

Sets authentication type. Possible values: jwt, anonymous

Authorization

<token>

Sets JWT authentication token when jwt auth type is used

Some HTTP libraries prefix token with "Bearer " string. This prefix should be removed before sending the request to Stream.

When dealing with authentication tokens, you should keep in mind that tokens are like passwords. Never share tokens with untrusted parties.

Server-side

Copied!

Requests from a back-end application to Stream Chat API should use Server-Side Authentication to authenticate requests.

JWT Usage for Server-side Authentication

Copied!

For server-side authentication, the application should send a token that is signed with the API Secret of the Stream app. This token must not include any claim beside claims defined by JWT specifications (ie. "iat", "exp", ...).

When using server-side authentication; there will be no permission checking and you will be able to perform any valid request for any of your user.

You should never share a server-side token with any untrusted party or use it directly on the mobile or web-browser. If your API secret or server-side token gets compromised you should create a new API Key from the dashboard and delete the one that got compromised.

Some endpoints can only used with server-side auth; ie. changing the configuration of your application or perform other actions such as changing users' role.

Token Example

Copied!

Here is the server-side token for a fictional application with API Secret "top-secret": eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.e30.-hJRcjmUOcS0P-Pllpe8gnOtMINmm7Ktebd3eKUroAc

Client-side

Copied!

Requests from a front-end application to the Stream Chat API should use Client-Side Authentication to authenticate requests.

JWT Usage For Client-side Authentication

Copied!

When using client-side auth, you generate different token to each of your user and include their string ID in the user_id claim.

A common approach is to have your users authenticate with your app server-side and to provision a user token so that API calls to Stream can be done on their behalf directly on your mobile/web app.

For security reasons, some API endpoints and some specific actions can be performed only server-side.

User tokens will effectively authenticate the user based on the user_id claim. After that all API calls will be checked for permissions.

More information about permissions is available on Chat Documentation.

Token Example

Copied!

Here is the user token for user "jack" on a fictional application with API Secret "top-secret": eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VyX2lkIjoiamFjayJ9.pO3Fa8TJnPXsl62-XHK94S8hFk6dUz_2Q9au6H5xBSQ

Anonymous

Copied!

Anonymous authentication allows you to use a sub-set of Chat's API without generating a user token.

Anonymous authentication works exactly as client-side auth with a couple of exceptions:

  • You must not send the Authorization header

  • You must send the stream-auth-type header set to anonymous

For security reasons, only a small subset of the API endpoints will be available to anonymous users.

Websocket

Copied!

Stream Chat uses Websocket connections to propagate chat events to all connected clients in real-time. Websockets are only used by Chat API servers to push events to users, you do not need them server-side.

Your Chat application should create a websocket connection per each user and wait until such connection is established before doing any other API call.

Websocket and Authentication

Copied!

Websocket connections must include authentication information; since it is not possible to send HTTP headers or a request body; such information must be included as query parameters:

Query parameter

Value

Description

stream-auth-type

jwt

Same as Stream-Auth-Type header

authorization

<token>

Same as Authorization header

Websocket and User Data

Copied!

Websocket connection must include the full information for the current user as well; the API endpoint will ensure that such user exists and will update it if necessary.

For information about request payload please see Connect Endpoint

Websocket Hello Event

Copied!

When the websocket connection is created with valid credentials and user payload; you will receive an event which includes fundamental information for later user of chat. Such message includes:

  • Current user's information including unread counts, the list of muted users and banned status

  • The connection_id for this session; you should store this, some API endpoints requires this parameter to be provided

Websocket Health-check events

Copied!

After the websocket connection is correctly established, the client will receive health-checks messages periodically. Your Chat client should make sure that such health-check event is received not later than 30 seconds ago; if that's not the case you should close and retry connecting.

Websocket and retries

Copied!

Unlike REST API calls, websocket connections are long-lived and might get closed due to internet connection errors. The recommended approach is to monitor internet connection, websocket close and error events and always retry to connect when a network issue causes the connection to break.

Websocket and Precondition Errors

Copied!

If you provide invalid authentication information or invalid data payload, an error message will be sent to the client and the connection will be closed with a status 1000 Normal Closure immediately after.

You can inspect the error message to gather more information about the failure and use that to decide what to do next. Error messages are JSON encoded and have the same schema as the ones from REST API endpoints.

When the connection is closed with such status you should not blindly retry to create the connection as it will almost certainly fail again with the same error. {

Websocket Events

Copied!

Once the websocket is created, you can move on and subscribe the user to channels either by using the Query Channels API endpoint or the Get Or Create Channel . From that point on, you will receive events related to all channels the user is watching (ie. messages from other users, typing events, mark read events, ...).

Websocket Notification Events

Copied!

You should expect the websocket connection to receive events that are not related to channels that the user is watching with the current websocket connection.

Channel types

Copied!

Create channel type

Copied!
POST /channeltypes

Creates new channel type

Read more: Overview

Request Body Schema

Copied!
Name
Type
Description
name
* string

Name

Channel type name

typing_events
boolean

Typing events

Typing events support

read_events
boolean

Read events

Read events support

connect_events
boolean

Connect events

Connect events support

reactions
boolean

Reactions

Enables message reactions

replies
boolean

Replies

Enables message replies (threads)

search
boolean

Search

Enables message search

mutes
boolean

Mutes

Enables mutes

uploads
boolean

Uploads

Enables file uploads

url_enrichment
boolean

URL enrichment

Enables URL enrichment

custom_events
boolean

Custom events

Enables custom events

push_notifications
boolean

Push notifications

Enables push notifications

message_retention
string

Message retention

Number of days to keep messages. 'infinite' disables retention

max_message_length
number

Maximum message length

Number of maximum message characters

automod
* string

Auto moderation

Enables automatic message moderation

allowed values:

  • disabled
  • simple
  • AI

automod_behavior
string

Auto moderation behavior

Sets behavior of automatic moderation

allowed values:

  • flag
  • block

commands
string[]

Commands

List of commands that channel supports

permissions
PolicyRequest[]

Permissions

List of permissions for the channel type

roles
object

Roles

Object with roles and permissions for permissions v2

blocklist
string

Blocklist

Name of the blocklist to use

blocklist_behavior
string

Blocklist behavior

Sets behavior of blocklist

allowed values:

  • flag
  • block

Responses

Copied!
201 - Successful response
400 - Bad request
429 - Too many requests

Delete channel type

Copied!
DELETE /channeltypes/{name}

Deletes channel type

Read more: Overview

Parameters

Copied!
Name
Type
Description
name
string

Name

Channel type name

Responses

Copied!
200 - Successful response
400 - Bad request
429 - Too many requests

Get channel type

Copied!
GET /channeltypes/{name}

Gets channel type

Read more: Overview

Parameters

Copied!
Name
Type
Description
name
string

Name

Channel type name

Responses

Copied!
200 - Successful response
400 - Bad request
429 - Too many requests

List channel types

Copied!
GET /channeltypes

Lists all available channel types

Read more: Overview

Responses

Copied!
200 - Successful response
400 - Bad request
429 - Too many requests

Update channel type

Copied!
PUT /channeltypes/{name}

Updates channel type

Read more: Overview

Parameters

Copied!
Name
Type
Description
name
string

Request Body Schema

Copied!
Name
Type
Description
permissions
PolicyRequest[]
replace_roles
boolean
roles
object
typing_events
boolean

Typing events

Typing events support

read_events
boolean

Read events

Read events support

connect_events
boolean

Connect events

Connect events support

search
boolean

Search

Enables message search

reactions
boolean

Reactions

Enables message reactions

replies
boolean

Replies

Enables message replies (threads)

mutes
boolean

Mutes

Enables mutes

uploads
boolean

Uploads

Enables file uploads

url_enrichment
boolean

URL enrichment

Enables URL enrichment

custom_events
boolean

Custom events

Enables custom events

push_notifications
boolean

Push notifications

Enables push notifications

message_retention
string

Message retention

Number of days to keep messages. 'infinite' disables retention

max_message_length
number

Maximum message length

Number of maximum message characters

automod
* string

Auto moderation

Enables automatic message moderation

allowed values:

  • disabled
  • simple
  • AI

automod_behavior
string

Auto moderation behavior

Sets behavior of automatic moderation

allowed values:

  • flag
  • block

blocklist
string

Blocklist

Name of the blocklist to use

blocklist_behavior
string

Blocklist behavior

Sets behavior of blocklist

allowed values:

  • flag
  • block

automod_thresholds
ThresholdsRequest

Auto moderation thresholds

Sets thresholds for AI moderation

commands
string[]

Commands

List of commands that channel supports

Responses

Copied!
201 - Successful response
400 - Bad request
429 - Too many requests

Channels

Copied!

Delete channel

Copied!
DELETE /channels/{type}/{id}

Deletes channel

Read more: Deleting & Hiding a Channel

Parameters

Copied!
Name
Type
Description
type
string

Channel type

Channel type to interact with

id
string

Channel ID

Channel ID to interact with

Responses

Copied!
200 - Successful response
400 - Bad request
429 - Too many requests

Events

Copied!
Name
Description
channel.deleted

When channel is deleted

Export channels

Copied!
POST /export_channels

Exports channel data to JSON file

Read more: Exporting Channels

Request Body Schema

Copied!
Name
Type
Description
channels
ChannelExportRequest[]

Channels

Export options for channels

>=1

<=25

Responses

Copied!
201 - Successful response
400 - Bad request
429 - Too many requests

Export channels status

Copied!
GET /export_channels/{id}
Read more: Exporting Channels

Parameters

Copied!
Name
Type
Description
id
string

ID

Task ID

Responses

Copied!
200 - Successful response
400 - Bad request
429 - Too many requests

Get or create channel (type, id)

Copied!
POST /channels/{type}/{id}/query

This method creates a channel or returns an existing one with matching attributes

Read more: Watching a Channel

Parameters

Copied!
Name
Type
Description
type
string

Type

Channel type

id
string

ID

Channel ID

Request Body Schema

Copied!
Name
Type
Description
connection_id
string

Connection ID

Websocket connection ID to interact with

data
ChannelRequest
watch
boolean

Watch

Start watching the channel

state
boolean

State

Refresh channel state

presence
boolean

Presence

Fetch user presence info

messages
MessagePaginationParamsRequest
members
PaginationParamsRequest
watchers
PaginationParamsRequest

Responses

Copied!
201 - Successful response
400 - Bad request
429 - Too many requests

Events

Copied!
Name
Description
channel.created

If channel is created

member.added

If member is added

member.removed

If member is removed

member.updated

If member is updated

user.watching.start

If watch: true

Get or create channel (type)

Copied!
POST /channels/{type}/query

This method creates a channel or returns an existing one with matching attributes

Read more: Watching a Channel

Parameters

Copied!
Name
Type
Description
type
string

Type

Channel type

Request Body Schema

Copied!
Name
Type
Description
connection_id
string

Connection ID

Websocket connection ID to interact with

data
ChannelRequest
watch
boolean

Watch

Start watching the channel

state
boolean

State

Refresh channel state

presence
boolean

Presence

Fetch user presence info

messages
MessagePaginationParamsRequest
members
PaginationParamsRequest
watchers
PaginationParamsRequest

Responses

Copied!
201 - Successful response
400 - Bad request
429 - Too many requests

Events

Copied!
Name
Description
channel.created

If channel is created

member.added

If member is added

member.removed

If member is removed

member.updated

If member is updated

user.watching.start

If watch: true

Hide channel

Copied!
POST /channels/{type}/{id}/hide

Marks channel as hidden for current user

Read more: Deleting & Hiding a Channel

Parameters

Copied!
Name
Type
Description
type
string

Channel type

Channel type to interact with

id
string

Channel ID

Channel ID to interact with

Request Body Schema

Copied!
Name
Type
Description
clear_history
boolean

Clear history

Whether to clear message history of the channel or not

user_id
string

User ID

Server-side only. User ID which server acts upon

user
UserObjectRequest

User

Server-side only. User object which server acts upon

Responses

Copied!
201 - Successful response
400 - Bad request
429 - Too many requests

Events

Copied!
Name
Description
channel.hidden

When channel is hidden

Mark all read

Copied!
POST /channels/read

Marks all user channels as read

Request Body Schema

Copied!
Name
Type
Description
user_id
string

User ID

Server-side only. User ID which server acts upon

user
UserObjectRequest

User

Server-side only. User object which server acts upon

Responses

Copied!
201 - Successful response
400 - Bad request
429 - Too many requests

Events

Copied!
Name
Description
notification.mark_read

Notifies all connected clients that all channels are marked as read

Mark read

Copied!
POST /channels/{type}/{id}/read

Marks channel as read up to the specific message

Parameters

Copied!
Name
Type
Description
type
string

Channel type

Channel type to interact with

id
string

Channel ID

Channel ID to interact with

Request Body Schema

Copied!
Name
Type
Description
message_id
string

Message ID

ID of the message that is considered last read by client

user_id
string

User ID

Server-side only. User ID which server acts upon

user
UserObjectRequest

User

Server-side only. User object which server acts upon

Responses

Copied!
201 - Successful response
400 - Bad request
429 - Too many requests

Events

Copied!
Name
Description
message.read

When the channel is marked as read

Mute channel

Copied!
POST /moderation/mute/channel

Mutes channel for user

Read more: Muting Channels

Request Body Schema

Copied!
Name
Type
Description
channel_cid
* string

Channel CID

Channel CID to mute (if one channel)

channel_cids
* string[]

Channel CIDs

Channel CIDs to mute (if multiple channels)

<=25

expiration
number

Expiration

Duration of mute in minutes

user_id
string

User ID

Server-side only. User ID which server acts upon

user
UserObjectRequest

User

Server-side only. User object which server acts upon

Responses

Copied!
201 - Successful response
400 - Bad request
429 - Too many requests

Events

Copied!
Name
Description
channel.muted

When channel is muted

Partially update channel

Copied!
PATCH /channels/{type}/{id}

Updates certain fields of the channel

Read more: Updating a Channel

Parameters

Copied!
Name
Type
Description
type
string

Channel type

Channel type to interact with

id
string

Channel ID

Channel ID to interact with

Request Body Schema

Copied!
Name
Type
Description
set
* object

Set

Sets new field values

unset
* string[]

Unset

Array of field names to unset

user_id
string

User ID

Server-side only. User ID which server acts upon

user
UserObjectRequest

User

Server-side only. User object which server acts upon

Responses

Copied!
200 - Successful response
400 - Bad request
429 - Too many requests

Events

Copied!
Name
Description
channel.updated

When channel is updated

Query channels

Copied!
POST /channels

Query channels with filter query

Read more: Querying Channels

Request Body Schema

Copied!
Name
Type
Description
filter_conditions
object
sort
* SortParamRequest[]

Sort

List of sort parameters

<=5

watch
boolean

Watch

Whether to start watching found channels or not

state
boolean

State

Whether to update channel state or not

presence
boolean

Presence

message_limit
number

Message limit

Number of messages to limit

>=0

member_limit
number

Member limit

Number of members to limit

>=0

<=100

limit
number

Limit

Number of channels to limit

offset
number

Offset

Channel pagination offset

user_id
string

User ID

Server-side only. User ID which server acts upon

user
UserObjectRequest

User

Server-side only. User object which server acts upon

connection_id
string

Connection ID

Websocket connection ID to interact with

Responses

Copied!
201 - Channels list
400 - Bad request
429 - Too many requests

Query members

Copied!
GET /members

Find and filter channel members

Read more: Querying Members

Parameters

Copied!
Name
Type
Description
payload
QueryMembersRequest

Responses

Copied!
200 - Successful response
400 - Bad request
429 - Too many requests
Copied!
GET /search

Search messages across channels

Read more: Search

Parameters

Copied!
Name
Type
Description
payload
SearchRequest

Payload

JSON object with search payload

Responses

Copied!
200 - Successful response
400 - Bad request
429 - Too many requests

Show channel

Copied!
POST /channels/{type}/{id}/show

Shows previously hidden channel

Read more: Deleting & Hiding a Channel

Parameters

Copied!
Name
Type
Description
type
string

Channel type

Channel type to interact with

id
string

Channel ID

Channel ID to interact with

Request Body Schema

Copied!
Name
Type
Description
user_id
string

User ID

Server-side only. User ID which server acts upon

user
UserObjectRequest

User

Server-side only. User object which server acts upon

Responses

Copied!
201 - Successful response
400 - Bad request
429 - Too many requests

Events

Copied!
Name
Description
channel.visible

When channel is shown

Stop watching channel

Copied!
POST /channels/{type}/{id}/stop-watching

Call this method to stop receiving channel events

Parameters

Copied!
Name
Type
Description
type
string

Channel type

Channel type to interact with

id
string

Channel ID

Channel ID to interact with

Request Body Schema

Copied!
Name
Type
Description
connection_id
string

Connection ID

Websocket connection ID to interact with

Responses

Copied!
201 - Successful response
400 - Bad request
429 - Too many requests

Events

Copied!
Name
Description
user.watching.stop

When successfully stopped watching

Sync

Copied!
POST /sync

Returns all events happened since client disconnect in specified channels

Request Body Schema

Copied!
Name
Type
Description
channel_cids
string[]

Channel CIDs

List of channel CIDs to sync

>=1

<=255

last_sync_at
* string

Last sync at

Date from which synchronization should happen

user_id
string

User ID

Server-side only. User ID which server acts upon

user
UserObjectRequest

User

Server-side only. User object which server acts upon

Responses

Copied!
201 - Successful response
400 - Bad request
429 - Too many requests

Truncate channel

Copied!
POST /channels/{type}/{id}/truncate

Truncates channel

Read more: Deleting & Hiding a Channel

Parameters

Copied!
Name
Type
Description
type
string

Channel type

Channel type to interact with

id
string

Channel ID

Channel ID to interact with

Responses

Copied!
201 - Successful response
400 - Bad request
429 - Too many requests

Events

Copied!
Name
Description
channel.truncated

When channel is truncated

Unmute channel

Copied!
POST /moderation/unmute/channel

Unmutes channel for user

Read more: Muting Channels

Request Body Schema

Copied!
Name
Type
Description
channel_cid
* string

Channel CID

Channel CID to mute (if one channel)

channel_cids
* string[]

Channel CIDs

Channel CIDs to mute (if multiple channels)

<=25

expiration
number

Expiration

Duration of mute in minutes

user_id
string

User ID

Server-side only. User ID which server acts upon

user
UserObjectRequest

User

Server-side only. User object which server acts upon

Responses

Copied!
201 - Successful response
400 - Bad request
429 - Too many requests

Events

Copied!
Name
Description
channel.unmuted

When channel is unmuted

Update channel

Copied!
POST /channels/{type}/{id}

Change channel data

Read more: Updating a Channel

Parameters

Copied!
Name
Type
Description
type
string

Channel type

Channel type to interact with

id
string

Channel ID

Channel ID to interact with

Request Body Schema

Copied!
Name
Type
Description
add_members
* string[]

Add members

List of user IDs to add to the channel

<=100

remove_members
* string[]

Remove members

List of user IDs to remove from the channel

<=100

add_moderators
* string[]

Add moderators

List of user IDs to make channel moderators

<=100

demote_moderators
* string[]

Demote moderators

List of user IDs to take away moderators status from

<=100

invites
* string[]

Invites

List of user IDs to invite to the channel

<=100

cooldown
number

Cool down

Sets cool down period for the channel in seconds

>=0

<=120

accept_invite
boolean

Accept invite

Set to true to accept the invite

reject_invite
boolean

Reject invite

Set to true to reject the invite

message
MessageRequest

Message

Message to send to the chat when channel is successfully updated

Messages Overview
skip_push
boolean

Skip push

When message is set disables all push notifications for it

data
ChannelRequest

Data

Channel data to update

user_id
string

User ID

Server-side only. User ID which server acts upon

user
UserObjectRequest

User

Server-side only. User object which server acts upon

Responses

Copied!
201 - Successful response
400 - Bad request
429 - Too many requests

Events

Copied!
Name
Description
channel.updated

When channel is successfully updated

member.added

When new channel member is added

member.removed

When new channel member is removed

member.updated

When new channel member is updated

message.new

When system message is set

Custom commands

Copied!

Create command

Copied!
POST /commands

Creates custom chat command

Read more: Custom Commands Webhook

Request Body Schema

Copied!
Name
Type
Description
name
* string

Name

Unique command name

description
* string

Description

Description, shown in commands auto-completion

args
string

Arguments

Arguments help text, shown in commands auto-completion

set
string

Set

Set name used for grouping commands

Responses

Copied!
201 - Successful response
400 - Bad request
429 - Too many requests

Delete command

Copied!
DELETE /commands/{name}

Deletes custom chat command

Read more: Custom Commands Webhook

Parameters

Copied!
Name
Type
Description
name
string

Responses

Copied!
200 - Successful response
400 - Bad request
429 - Too many requests

Get command

Copied!
GET /commands/{name}

Returns custom command by its name

Read more: Custom Commands Webhook

Parameters

Copied!
Name
Type
Description
name
string

Responses

Copied!
200 - Successful response
400 - Bad request
429 - Too many requests

List commands

Copied!
GET /commands

Returns all custom commands

Read more: Custom Commands Webhook

Responses

Copied!
200 - Successful response
400 - Bad request
429 - Too many requests

Update command

Copied!
PUT /commands/{name}

Updates custom chat command

Read more: Custom Commands Webhook

Parameters

Copied!
Name
Type
Description
name
string

Name

Unique command name

Request Body Schema

Copied!
Name
Type
Description
description
* string

Description

Description, shown in commands auto-completion

args
string

Arguments

Arguments help text, shown in commands auto-completion

set
string

Set

Set name used for grouping commands

Responses

Copied!
201 - Successful response
400 - Bad request
429 - Too many requests

Devices

Copied!

Create device

Copied!
POST /devices

Adds a new device to a user, if the same device already exists the call will have no effect

Read more: Devices

Request Body Schema

Copied!
Name
Type
Description
id
string
push_provider
string

allowed values:

  • firebase
  • apn

user_id
string

User ID

Server-side only. User ID which server acts upon

user
UserObjectRequest

User

Server-side only. User object which server acts upon

Responses

Copied!
201 - Successful response
400 - Bad request
429 - Too many requests

Delete device

Copied!
DELETE /devices

Deletes device

Read more: Devices

Parameters

Copied!
Name
Type
Description
id
string

ID

Device ID to delete

user_id
string

User ID

Server-side only. User ID which server acts upon

Responses

Copied!
200 - Successful response
400 - Bad request
429 - Too many requests

List devices

Copied!
GET /devices

Returns all available devices

Read more: Devices

Parameters

Copied!
Name
Type
Description
user_id
string

User ID

Server-side only. User ID which server acts upon

Responses

Copied!
200 - Successful response
400 - Bad request
429 - Too many requests

Events

Copied!

Send event

Copied!
POST /channels/{type}/{id}/event

Sends event to the channel

Read more: Event Object

Parameters

Copied!
Name
Type
Description
type
string

Channel type

Channel type to interact with

id
string

Channel ID

Channel ID to interact with

Request Body Schema

Copied!
Name
Type
Description
event
* EventRequest

Event

Represents an event that happened in Stream Chat

Event Object

Responses

Copied!
201 - Successful response
400 - Bad request
429 - Too many requests

Events

Copied!
Name
Description
[any]

Any event could be sent through this endpoint

Send user event

Copied!
POST /users/{user_id}/event

Sends a custom event to a user

Read more: Event Object

Request Body Schema

Copied!
Name
Type
Description
target_user_id
* string
event
* UserCustomEventRequest

Responses

Copied!
201 - Successful response
400 - Bad request
429 - Too many requests

Events

Copied!
Name
Description
[custom]

Only custom event could be sent through this endpoint

Sync

Copied!
POST /sync

Returns all events happened since client disconnect in specified channels

Request Body Schema

Copied!
Name
Type
Description
channel_cids
string[]

Channel CIDs

List of channel CIDs to sync

>=1

<=255

last_sync_at
* string

Last sync at

Date from which synchronization should happen

user_id
string

User ID

Server-side only. User ID which server acts upon

user
UserObjectRequest

User

Server-side only. User object which server acts upon

Responses

Copied!
201 - Successful response
400 - Bad request
429 - Too many requests

Files

Copied!

Delete file

Copied!
DELETE /channels/{type}/{id}/file

Deletes previously uploaded file

Read more: File Uploads

Parameters

Copied!
Name
Type
Description
url
string

URL

File URL to delete

Responses

Copied!
200 - Successful response
400 - Bad request
429 - Too many requests

Delete image

Copied!
DELETE /channels/{type}/{id}/image

Deletes previously uploaded image

Read more: File Uploads

Parameters

Copied!
Name
Type
Description
url
string

URL

File URL to delete

Responses

Copied!
200 - Successful response
400 - Bad request
429 - Too many requests

Upload file

Copied!
POST /channels/{type}/{id}/file

Uploads file

Read more: File Uploads

Parameters

Copied!
Name
Type
Description
type
string

Channel type

Channel type to interact with

id
string

Channel ID

Channel ID to interact with

Request Body Schema

Copied!
Name
Type
Description
file
string

File

multipart/form-data file field

Responses

Copied!
201 - Successful response
400 - Bad request
429 - Too many requests

Upload image

Copied!
POST /channels/{type}/{id}/image

Uploads image

Read more: File Uploads

Parameters

Copied!
Name
Type
Description
type
string

Channel type

Channel type to interact with

id
string

Channel ID

Channel ID to interact with

Request Body Schema

Copied!
Name
Type
Description
file
string

File

multipart/form-data file field

upload_sizes
ImageSizeRequest[]

Upload sizes

multipart/form-data field with JSON-encoded array of image size configurations

Responses

Copied!
201 - Successful response
400 - Bad request
429 - Too many requests

GDPR

Copied!

Deactivate user

Copied!
POST /users/{user_id}/deactivate

Deactivates user with possibility to activate it back

Read more: GDPR

Parameters

Copied!
Name
Type
Description
user_id
string

User ID

Request Body Schema

Copied!
Name
Type
Description
user_id
* string

User ID

mark_messages_deleted
boolean

Mark messages deleted

Makes messages appear to be deleted

created_by_id
string

Created by ID

Server-side only. ID of user who deactivated the user

Responses

Copied!
201 - Successful response
400 - Bad request
429 - Too many requests

Events

Copied!
Name
Description
user.deactivated

When user is deactivated

Delete user

Copied!
DELETE /users/{user_id}

Deletes user and optionally all their belongings

Read more: GDPR

Parameters

Copied!
Name
Type
Description
user_id
string

User ID

ID of user to delete

mark_messages_deleted
boolean

Mark messages deleted

Delete user messages

hard_delete
boolean

Hard delete

Delete all user data (messages, reactions, etc.)

delete_conversation_channels
boolean

Delete conversations

Delete all one-to-one channels of the user

Responses

Copied!
200 - Successful response
400 - Bad request
429 - Too many requests

Events

Copied!
Name
Description
channel.deleted

When channel is deleted

message.deleted

When message is deleted

user.deleted

When user is deleted

Reactivate user

Copied!
POST /users/{user_id}/reactivate

Activates user who's been deactivated previously

Read more: GDPR

Parameters

Copied!
Name
Type
Description
user_id
string

User ID

Request Body Schema

Copied!
Name
Type
Description
user_id
* string

User ID

restore_messages
boolean

Restore messages

Restore previously deleted messages

name
string

Name

Set this field to put new name for the user

created_by_id
string

Created by ID

Server-side only. User ID who's reactivating the user

Responses

Copied!
201 - Successful response
400 - Bad request
429 - Too many requests

Events

Copied!
Name
Description
user.reactivated

When user is reactivated

Messages

Copied!

Delete file

Copied!
DELETE /channels/{type}/{id}/file

Deletes previously uploaded file

Read more: File Uploads

Parameters

Copied!
Name
Type
Description
url
string

URL

File URL to delete

Responses

Copied!
200 - Successful response
400 - Bad request
429 - Too many requests

Delete image

Copied!
DELETE /channels/{type}/{id}/image

Deletes previously uploaded image

Read more: File Uploads

Parameters

Copied!
Name
Type
Description
url
string

URL

File URL to delete

Responses

Copied!