Introduction to the REST API

Welcome to Stream's REST API documentation!

Please note

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 at support@getstream.io if you have questions.

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

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.

Framework integrations are also available for Rails, Django, and Laravel, in addition to community-contributed libraries for .NET and Scala.

You're currently not logged in. Log in so we can add your API key and other information in the documentation snippets elsewhere on this page.

First steps

1. Complete 'Getting Started'

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

2. Review Official Clients

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.

With the official JS client, you can see the tests and examine how the API requests are structured in your browser's network tab.

To see the tests, simply clone the stream-js package, and open test/browser/test.html in your browser.

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

3. Browse Documentation

Stream's API consists of two authentication methods and eight REST endpoints. Be sure to review the basics.

Authentication Methods:

  • Application
  • Feed

REST Endpoints:

  • Activities
  • Feed
  • Feed Detail
  • Followers
  • Following
  • Following Detail
  • Batch Activity Add
  • Batch Follow
  • Reactions
  • Reactions Detail
  • Reactions pagination
  • Open Graph
  • Collection
  • Collection Detail
  • Batch Collection
  • Files
  • Images
  • User
  • User Detail

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

Basics

Base API URL:
https://api.stream-io-api.com/api/v1.0/

Location Support

The Stream API is currently available in 3 regions:

  • us-east
  • eu-west
  • singapore

Examples:

https://us-east-api.stream-io-api.com/api/v1.0/

https://eu-west-api.stream-io-api.com/api/v1.0/

https://singapore-api.stream-io-api.com/api/v1.0/

Common Parameters

The following common GET parameters should be sent for every request:

Name Type Description
api_key string The API Key

Note: Every request should also include the appropriate authorization header.

JSON for POST Data

All POST data must be JSON encoded. This allows you to send complex data structures to the Stream API endpoint!

Authentication

API Keys and Token

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.
You can find more information on JWT at jwt.io/introduction.

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

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:

  1. Stream-Auth-Type: jwt
  2. Authorization: <token>

Important: Some JWT libraries prefix the generated token with the string "Bearer". 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.

Stream uses JWT to provide two types of authentication:

Server-Side Authentication

Requests from a back-end application to the Stream API for a specific single resource use Server-Side Authentication to authenticate requests.

JWT usage for server-side authentication

For server-side authentication, the application should send a token that is signed with the API Secret of the Stream app. This token must include a permission scope compatible to the request that is being performed. Permission scopes are defined using the following fields: resource, action and feed_id.

The resource field of the JWT payload allows you to define which API endpoints can be accessed, you can pick one of the following:

The action field of the JWT payload allows you to define which HTTP verbs are allowed by a request:

The feed_id field in the JWT payload specifies for which feed/resource the permissions specified before are granted. The value of this field should be a concatenation of the feed group's slug and the user_id of the feed instance. For example, if your feed group is called "news" and your user ID is 1234, the resulting concatenation would be "news1234". Similarly to the resource and action field, a single * character will grant the permissions on all feeds.

Token examples

Below are some example tokens for different use cases:

// A token which allows every possible action on all feeds. Useful for
// development and server side, but unsuitable for usage on the client.
{
    "resource": "*",
    "action": "*",
    "feed_id": "*"

}

// A token which allows reading, modification and deletion of activities on
// the feed of the user with id 123.
{
    "resource": "feed",
    "action": "*",
    "feed_id": "user123"

}

// A token which allows reading the followers of the feed of user with id 123.
{
    "resource": "follower",
    "action": "read",
    "feed_id": "user123"

}

Client-Side Authentication

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

JWT usage for client-side authentication

When using Stream on web or mobile apps, you can use a different kind of auth that allows you to authenticate users instead of your server-side application. This authentication enforces per-user permission checks.

Client-side auth is selected when a JWT token includes user_id in the payload. You can include additional fields in the JWT payload as long as they don't overlap with the server-side authentication ones.

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.

Token example

# The token claims contain only user_id
#   {
#     "user_id": "bob_johnson_1"
#   }
# The token claims contain user_id and extra fields
#   {
#     "user_id": "bob_johnson_1",
#     "user_group": "admins"
#   }

Endpoint: Activities

The activities endpoint is located at
(enrich)/activities/
Authentication method: Server-Side Authentication
Resource Name:  activities

The Activities endpoint can be used to update activity data stored by Stream API (POST) or to retrieve specific activities by either ID or the combination of foreign ID and timestamp (GET).

POST

This is useful when you want to update certain activity metadata used during feed ranking. Activities are updated by foreign_id. Changing the original time property of the activity is not allowed.

Name Type Description Default
activities list A JSON encoded list of activities to update. Maximum length is 100.

GET

URI parameters

Name Type Description
enrich string If URI contains word "enrich", the response will be enriched.

Query parameters

Name Type Description Optional
ids string A comma separated list of activity IDs. Maximum length is 100.
foreign_ids string A comma separated list of activity foreign IDs. Maximum length is 100, and must match the length of timestamps.
timestamps string A comma separated list of activity timestamps. Maximum length is 100, and must match the length of foreign_ids.
withRecentReactions boolean If true activity object will have attribute "latest_reactions" that contains list of recently created reactions
recentReactionsLimit int Specify number of reactions in the "latest_reactions" attribute, maximum value is 25.
withOwnReactions boolean If true activity object will have attribute "own_reactions" that contains list of reactions created by the user himself.
withReactionCounts boolean If true activity object will have attribute "reaction_counts" that contains number of reactions for each kind

Endpoint: Activity

The activity endpoint is located at
activity/
Authentication method: Server-Side Authentication
Resource Name:  activities

The Activity endpoint can be used to partially update activity data stored by Stream API.

POST

For updating only parts of one or more activities by changing, adding, or removing fields.

Name Type Description Default
changes list A JSON encoded list of changes to apply. Maximum length is 100.

Within every change set it is possible to reference the target fields directly or using the dotted notation ("grandfather.father.child"), given that it respects the existing hierarchy.

Every value of the set object will replace the original value, while the ones int the unset list will be removed from the activity.

Name Type Description Default Optional
id string The target activity ID.
foreign_id string The target activity foreign ID (matched with time).
time string The target activity timestamp (matched with foreign_id).
set object An object containing the set operations, where keys are the target fields and the values are the values to be set. Maximum 25 top level keys.
unset list A list of strings containing the fields to be removed from the activity. Maximum 25 keys.

Note: the keys of set and unset must not collide.

Endpoint: Feed

The feed endpoint is located at
(enrich)/feed/(feed_slug)/(user_id)/
Authentication method: Server-Side Authentication
Resource Name:  feed

The Feed endpoint is to retrieve activities in a feed (GET), or to submit an activity or list of activities (POST).

GET

For retrieving the activities in a feed the following parameters as shown below are supported.

URI parameters

Name Type Description
enrich string If URI contains word "enrich", the response will be enriched.

Query parameters

Name Type Description Default Optional
limit int The amount of activities requested from the APIs 25
id_gte int Filter the feed on ids greater than or equal to the given value
id_gt int Filter the feed on ids greater than the given value
id_lte int Filter the feed on ids smaller than or equal to the given value
id_lt int Filter the feed on ids smaller than the given value
offset int The offset 0
withRecentReactions boolean If true activity object will have attribute "latest_reactions" that contains list of recently created reactions
recentReactionsLimit int Specify number of reactions in the "latest_reactions" attribute, maximum value is 25.
withOwnReactions boolean If true activity object will have attribute "own_reactions" that contains list of reactions created by the user himself.
withReactionCounts boolean If true activity object will have attribute "reaction_counts" that contains number of reactions for each kind

Passing both id_lt[e] and id_gt[e] is not supported.

Note on Pagination: Using id_lte for pagination is preferable to using offset.

Note on Aggregated Feeds: When using id_lte to paginate an aggregated feed, use the ID of the group that is returned from the API. Using an ID of an individual activity within the group will not work and result in an error.

If ranking is enabled on your feed group you can supply the ranking method to use by supplying the ranking method's slug on the following GET parameter:

Name Type Description Default Optional
ranking string The slug of the ranking method to use

POST

For the POST request, you can either submit the data for one single activity or a list of activities. In addition to these base fields, extra data will be parsed as custom fields.

Name Type Description Default Optional
actor string The actor performing the activity
verb string The verb of the activity
object string The object of the activity
target string The optional target of the activity
time string The optional time of the activity, isoformat Current time
to list See the documentation on Targeting & "TO" support.
foreign_id string A unique ID from your application for this activity. IE: pin:1 or like:300

When you are sending a list of activities, the parameters are:

Name Type Description
activities list A JSON encoded list of activity data. The data for individual activities is the same as specified above.

Endpoint: Feed Detail

The feed detail endpoint is located at
feed/(feed_slug)/(user_id)/(activity_id|foreign_id)/
Authentication method: Server-Side Authentication
Resource Name:  feed

The Feed Detail endpoint allows you to delete activities. The Stream API allows you to delete activities by the activity id generated by Stream, or by the foreign id you generate and put within your activity:

  • The activity id is returned to you in the response when the activity is first created.
  • The foreign id is a unique reference which represents the activity in your database.

Note: By setting foreign ids you ensure uniqueness and no longer need to store the Stream-generated activity id in your database. Read more about foreign ids versus activity ids over at the Stream general docs.

DELETE

Note: Deleting an activity using your foreign id requires setting a foreign_id URL query parameter to "1":

Name Type Description Optional
foreign_id string Send a value of 1 to indicate you want to delete by foreign id

Endpoint: Followers

The followers endpoint is located at
feed/(feed_slug)/(user_id)/followers/
Authentication method: Server-Side Authentication
Resource Name:  follower

The Followers endpoint is used to retrieve a paginated list of the given feed's followers (ie, which other feeds follow this feed). The resource is limited to the most recent 500 results.

GET

Name Type Description Default Optional
limit int The amount of feeds following this feed requested from the APIs 25
offset int The offset, max 400 0

Endpoint: Following

The following endpoint is located at
feed/(feed_slug)/(user_id)/follows/
Authentication method: Server-Side Authentication
Resource Name:  follower

The Following endpoint is for retrieving a list of feeds that this feed follows (GET), or to follow a target feed (POST). The resource is limited to the most recent 500 results.

GET

Returns a paginated list of the feeds which this feed is following.

Name Type Description Default Optional
limit int The amount of followed feeds requested from the APIs 25
offset int The offset, max 400 0
filter string List of comma separated feed ids to filter on. IE user:1,user:2. Allows you to check if a certain feed is followed.

POST

Follows a target feed.
Name Type Description Default Optional
target string The target feed this feed should follow. For example user:44.
activity_copy_limit integer How many activities should be copied from the target feed, max 1000 100

Endpoint: Following Detail

The following detail endpoint is located at
feed/(feed_slug)/(user_id)/following/(target)/
Authentication method: Server-Side Authentication
Resource Name:  follower

The Following Detail endpoint allows you to unfollow a target feed.

DELETE

Name Type Description Default Optional
keep_history string When provided the activities from target feed will not be kept in the feed

Target is in the syntax of [feed]:[id]. For example, "user:1".

Note: Unfollow target's activities are purged from the feed unless the keep_history parameter is provided.

Endpoint: Batch Activity Add

The batch follow endpoint is located at
feed/add_to_many/
Authentication method: Server-Side Authentication
Resource Name:  feed
Feed ID:  *

The Batch Activity Add endpoint allows you to add an activity to multiple feeds in one single request.

Batch Activity Add has a limit of 5,000 target feeds. Requests that exceed this limit will return an error.

POST

Name Type Description
feeds list The list of feeds where the activity will be stored eg. ['user:1', 'flat:2' ]
activity object A JSON encoded activity object (see feed endpoint for reference)

Endpoint: Follow Many

The follow many endpoint is located at
follow_many/
Authentication method: Server-Side Authentication
Resource Name:  follower
Feed ID:  *

The Follow Many endpoint allows you to create multiple follows in one single batch request.

Follow Many has is a limit of 2,500 follows per request.

POST

Note: The `activity_copy_limit` parameter is a query parameter.

Name Type Description Default Optional
list A JSON encoded list of a follow object {'source': 'source:id', 'target': 'target:id'} . eg. [{'source': 'flat:1', 'target': 'user:2'}, ]
activity_copy_limit integer How many activities should be copied from the target feed, max 1000 100

Endpoint: Reaction

The reactions endpoint is located at
reaction/
Authentication method: Client-Side Authentication

The reaction endpoint can be used to add reactions to Stream API.

POST

Request data

Name Type Description Optional
kind string Type of reaction. Must not be empty or longer than 255 characters.
activity_id string Activity ID for the reaction. Must be a valid activity ID.
user_id string user_id of the reaction. Must not be empty or longer than 255 characters.
data object Extra data of the reaction
target_feeds list Target feeds for the reaction. List of feed ids (e.g.: timeline:bob)
parent string ID of the parent reaction. If provided, it must be the ID of a reaction that has no parents.

Note: when using client-side auth the user_id field must not be provided as the value will be taken from the user token.

Note: If a reaction with the same ID already exists, the request will error with code 409 Conflict.

Returned reaction object schema

Name Type Description Optional
id string Reaction ID.
kind string Type of reaction.
activity_id string Activity ID for the reaction.
user_id string user_id of the reaction.
user object User of the reaction
data object Extra data of the reaction
created_at date When the reaction was created.
updated_at date When the reaction was last updated.
parent string ID of the parent reaction. Empty unless the reaction is a child reaction.
latest_children object Children reactions, grouped by reaction type.
children_counts object Child reaction count, grouped by reaction kind.

Endpoint: Reaction detail

The reactions endpoint is located at
reaction/(id)/
Authentication method: Client-Side Authentication

The reaction detail endpoint can be used to retrieve (GET) a reaction, update (PUT) reaction data and target feeds and delete (DELETE) reactions.

GET

The returned object schema is described in the reactions endpoint

DELETE

Will return an empty response on success.

PUT

Request data

Name Type Description Optional
data object Extra data of the reaction
target_feeds list Target feeds for the reaction. List of feed ids (e.g.: timeline:bob)

Returns the updated reaction object. The object schema is described in the reactions endpoint

Endpoint: Reaction pagination

The Reaction pagination endpoint is located at
reaction/(lookup_attr)/(lookup_value)/(kind)/
Authentication method: Client-Side Authentication

The reaction pagination endpoint can be used to fetch (GET) reactions based on certain criteria.

GET

URI parameters

Name Type Description Optional
lookup_attr string Name of the reaction attribute to paginate on. Can be activity_id, reaction_id or user_id.
lookup_value string Value to use depending if paginating reactions for an activity, from a user or reactions of a reaction.
kind string Type of reaction( e.g.: like).

Query parameters

Name Type Description Optional
limit string Amount of reactions requested from the API. Default: 10. Max: 25. Values larger than the max will be ignored and the max limit will be used.
id_gte string Filter the reactions on ids greater than or equal to the given value
id_gt string Filter the reactions on ids greater than the given value
id_lte string Filter the reactions on ids smaller than or equal to the given value
id_lt string Filter the reactions on ids smaller than the given value
with_activity_data boolean Returns the activity data when lookup_attr is activity_id

Note: passing both id_lt[e] and id_gt[e] is not supported.

Note: when using id_lt[e] the reactions are ordered by the created_at field, in descending order.

Note: when using id_gt[e] the reactions are ordered by the created_at field, in ascending order.

Response object

Name Type Description
results list List of reactions. The reaction object schema can be found here
activity object The activity data, this field is returned only when with_activity_data is sent.
next string A url string that can be used to fetch the next page of reactions.

Endpoint: Open Graph

The Open Graph endpoint is located at
og/
Authentication method: Client-Side Authentication

The Open Graph endpoint can be used to scrape (GET) open graph data from a website.

The Open Graph protocol enables any web page to become a rich object in a social graph. More information can be found here.

GET

Query parameters

Name Type Description
url string URL to scrape.

Response object

Name Type Description Optional
title string Value of the title OG field.
type string Value of the type OG field.
url string Value of the url OG field.
site string Value of the site OG field.
site_name string Value of the site_name OG field.
description string Value of the description OG field.
determiner string Value of the determiner OG field.
locale string Value of the locale OG field.
images list List of og images
videos list List of og videos
audios list List of og audios

OG Image object

Name Type Description Optional
image string Value of the image OG field.
url string Value of the url OG field.
secure_url string Value of the secure_url OG field.
width string Value of the width OG field.
height string Value of the height OG field.
type string Value of the type OG field.
alt string Value of the alt OG field.

OG Video object

Name Type Description Optional
image string Value of the image OG field.
url string Value of the url OG field.
secure_url string Value of the secure_url OG field.
width string Value of the width OG field.
height string Value of the height OG field.
type string Value of the type OG field.
alt string Value of the alt OG field.

OG Audio object

Name Type Description Optional
audio string Value of the audio OG field.
url string Value of the url OG field.
secure_url string Value of the secure_url OG field.
type string Value of the type OG field.

Endpoint: Collection

The collection endpoint is located at
collections/(collection_name)/
Authentication method: Client-Side Authentication

The collection endpoint can be used to add collection objects(POST) to a specific collection.

POST

Request data

Name Type Description Optional
id string Collection object ID
user_id string user_id of the collection object.
data object Collection object data

Note: when using client-side auth the user_id field must not be provided as the value will be taken from the user token.

Note: If a collection object with the same ID already exists, the request will error with code 409 Conflict.

Returned collection object schema

Name Type Description
collection string Collection name
id string Collection object ID.
foreign_id string ForeignID of the collection object. The format is <collection_name>:<collection_object_id>
data object Collection object data
created_at date When the collection object was created.
updated_at date When the collection object was last updated.

Endpoint: Collection detail

The collection endpoint is located at
collections/(collection_name)/(id)/
Authentication method: Client-Side Authentication

The collection detail endpoint can be used can be used to retrieve (GET), update (PUT) and delete (DELETE) collection objects.

GET

The returned object schema is described in the collection endpoint.

PUT

Request data

Name Type Description
data object Collection object data

The returned object schema is described in the collection endpoint.

DELETE

Will return an empty response on success.

Endpoint: Collections batch

The collections endpoint is located at
collections/
Authentication method: Server-Side Authentication
Resource Name:  collections
Feed ID:  *

The collections detail endpoint can be used can be used to retrieve (GET), upsert (POST) and delete (DELETE) multiple collection objects at once.

GET

Query parameters

Name Type Description
foreign_ids string Comma separated list of foreign ids. A foreign id has the format <collection_name>:<collection_object_id>. The maximum number of foreign ids is 1000. E.g.: collection1:id1,collection1:id2,collection3:id5

Returned object schema

Name Type Description
response object Response object containing a data field which is an array of collection objects. The schema for the objects can be found in the collection docs.

Example response object:


{
    "response": {
        "data": [
            {
                "collection": "collection1",
                "created_at": "2018-11-29T12:03:52.792967Z",
                "data": {
                    "flag": false,
                    "field": "value"
                },
                "foreign_id": "collection1:id1",
                "id": "asdf",
                "updated_at": "2018-11-29T12:28:20.735841Z"
            }
        ]
    }
}

POST

Request data

Name Type Description
data object A map between collection names and the collection objects that will be upserted

Example request data:


{
    "data": {
        "collection1": [
            {
                "id": "id1",
                "data": {
                    "field": "value",
                    "flag": false
                },
                "user_id": "user1"
            },
            {
                "id": "id2",
                "data": {
                    "field": "modify"
                }
            }
        ],
        "collection2": [
            {
                "id": "id23",
                "data": {
                    "user": "data"
                }
            }
        ]
    }
}


Note: You cannot have collection objects with the same id within the same collection.

The endpoint returns a clone of the data field from the request data upon success.

DELETE

Note: You can only delete objects from a single collection per request.

Query parameters

Name Type Description
collection_name string The name of the collection.
ids string Comma separated list of collection object ids. E.g.: id1,id2,id3

Will return an empty response on success.

Endpoint: Files

The files endpoint is located at
files/
Authentication method: Server-Side Authentication
Resource Name:  files
Feed ID:  *
Authentication method: Client-Side Authentication

The files endpoint can be used can be used to upload (POST) and delete (DELETE) files to and from Stream API.

POST

Request data

Name Type Description
file file File to upload. Must be sent as form data (Content-Type: multipart/form-data).

Returned object schema

Name Type Description
file string Publicly reachable CDN URL of the uploaded file.

DELETE

Query parameters

Name Type Description
url string URL of the file to delete. This is the URL returned by the POST request.

Will return an empty response on success.

Endpoint: Images

The images endpoint is located at
images/
Authentication method: Server-Side Authentication
Resource Name:  files
Feed ID:  *
Authentication method: Client-Side Authentication

The images endpoint can be used can be used to process(GET), upload (POST) and delete (DELETE) images.

GET

Query parameters

Name Type Description Default Optional
url string URL of the image to process. This is the URL returned by the POST request.
resize string Strategy used to adapt the image the new dimensions. Allowed values are: clip, crop, scale, fill. clip
crop string Cropping modes as a comma separated list. Allowed values are top, bottom, left, right, center. center
w number Width of the processed image.
h number Geight of the processed image.

Returned object schema

Name Type Description
file string Publicly reachable CDN URL of the processed image.

POST

Request data

Name Type Description
file file Image to upload. Must be sent as form data (Content-Type: multipart/form-data).

Returned object schema

Name Type Description
file string Publicly reachable CDN URL of the uploaded image.

DELETE

Query parameters

Name Type Description
url string URL of the image to delete. This is the URL returned by the POST request.

Will return an empty response on success.

Endpoint: User

The user endpoint is located at
user/
Authentication method: Server-Side Authentication
Resource Name:  users
Feed ID:  *
Authentication method: Client-Side Authentication

The user endpoint can be used to add a user(POST) via Stream API.

POST

Request data

Name Type Description
id string User ID. Must not be empty or longer than 255 characters.
data object User aditional data.

Query parameters

Name Type Description Optional
get_or_create boolean If true, if a user with the same ID already exists, it will be returned. Otherwise, the endpoint will return 409 Conflict.

Response object schema

Name Type Description Optional
id string User ID.
data object User aditional data.
created_at date When the user was created.
updated_at date When the user was last updated.
followers_count number Number of users that follow this user.
following_count number Number of users this user is following.

Endpoint: User detail

The user detail endpoint is located at
user/(id)/
Authentication method: Server-Side Authentication
Resource Name:  users
Feed ID:  *
Authentication method: Client-Side Authentication

The user detail endpoint can be used can be used to retrieve (GET), update (PUT) and delete (DELETE) a user.

GET

Query parameters

Name Type Description Optional
with_follow_counts boolean If true, the following_count and followers_count will be included in the response.

The returned object schema is described in the user endpoint.

PUT

Note: You can only change a user's data field.

Request data

Name Type Description
data object User data field.

The returned object schema is described in the user endpoint.

DELETE

Will return an empty response on success.

Options

All clients should support several options:

API Location (Region)

Location/Region should be configurable when initializing the Stream client.

Request Timeout

The request timeout should be configurable. We recommend 3 seconds as a default.

On average, it takes ~60ms to retrieve your feed. However, it is possible for network latency to spike, which is why we recommend setting a timeout.

Best Practices

Here's a brief list of best practices that we recommend when building a new API SDK for interacting with Stream:

Test Code Coverage (>95%)

We recommend building both unit and integration tests, and ensuring a code coverage above 95%.

Code Examples - Every API Endpoint

Document the API calls for every operation.

Check out the README of the stream-python repo for a good starting point.

Input Validation

Feed slugs and user ids need to match the \w+ regular expression. Your client should validate input before sending an API call.

Error Mapping

Errors from the Stream API should be mapped to exception classes and properly raised.

Software Licensing

We recommend using the MIT or BSD license when releasing open-source software.

Offering Support

If you release your software as open-source, and place it on GitHub, we ask that you pay close attention to any issues and pull requests by other community members. If your SDK gains significant support, we may also request to take over your open-source project as an officially-supported library so we can assist with support efforts.

Naming Conventions

We try to keep our variable names consistent amongst the various API clients, except in the case where common lint-checker software will raise too many errors. This section explains some common terminology we use in our SDK libraries.