Getting Started

Learn How Easy It Can Be To Build Scalable Newsfeeds and Activity Streams

Stream has official clients for JS/Node, Ruby, Python, PHP, Go, Java and C#/.NET.

Setup

Let's get set up! First, install the client as specified below:

# install directly with gem
gem install "stream-ruby"

# or add this to your Gemfile and then run bundler
gem "stream-ruby"

All source code can be found on GitHub.

To instantiate the client you need an API key and secret . You can find the key and secret on the dashboard. The examples below already include your key and secret.

# Instantiate a new client (server side)
require 'stream'
client = Stream::Client.new('{{ api_key }}', '{{ api_secret }}', :location => 'us-east')
# Find your API keys here https://getstream.io/dashboard/

If you want to use Stream on your mobile or web application, you need to generate a token server-side that the client can use to authenticate as a user of your application.

Generate User Token Server-Side

This code generates the token for one of your users; a common place to do this is at signup or login. The token is then passed to the frontend.

user_token = client.create_user_session_token('the-user-id')

Use Stream API client-side

const stream = require("getstream");

// Instantiate new client with a user token
const client = stream.connect(
  "{{ api_key }}",
  "{{ feed_token }}",
  "{{ app_id }}",
);

// OR

import stream from "getstream";

const client = stream.connect(
  "{{ api_key }}",
  "{{ feed_token }}",
  "{{ app_id }}",
);

More details about authentication can be found in the REST docs

Quick Start

The quick start below shows you how to build a scalable social network. It highlights the most common API calls:

chris = client.feed('user', 'chris')

# Add an Activity; message is a custom field - tip: you can add unlimited custom fields!
activity_data = { :actor => 'chris', :verb => 'add', :object => 'picture:10', :foreign_id => 'picture:10', :message => 'Beautiful bird!' }
chris.add_activity(activity_data);

# Create a following relationship between Jack's "timeline" feed and Chris' "user" feed:
jack = client.feed('timeline', 'jack')
jack.follow('user', 'chris')

# Read Jack's timeline and Chris' post appears in the feed:
activities = jack.get(:limit => 10)

# Remove an Activity by referencing it's foreign_id
chris.remove_activity('picture:10', foreign_id=true)

That was a good deal of information at once. The getting started docs provide a more detailed and interactive explanation.