Getting Started

This SDK is the server half of your integration. Your users connect from your app with a client SDK, and anything that needs a connected user or a live WebSocket belongs there: client initialization, guest and anonymous sessions, typing indicators and presence. See the client-side overview for what lives there. Token signing stays on this side, because it needs your API secret.

Setup

The official Java SDK for Stream covers Chat, Video, Moderation, and Feeds.

Add the dependency:

Maven:

<dependency>
    <groupId>io.getstream</groupId>
    <artifactId>stream-sdk-java</artifactId>
    <version>$streamVersion</version>
</dependency>

Gradle:

implementation 'io.getstream:stream-sdk-java:$streamVersion'

Initialize the client with your API key and secret (available on the Dashboard):

import io.getstream.services.framework.StreamSDKClient;

var client = new StreamSDKClient("your-api-key", "your-api-secret");

You can also load credentials from environment variables (STREAM_API_KEY, STREAM_API_SECRET):

var client = new StreamSDKClient();

Server-side Token

Your backend generates a user token that the client SDKs use to authenticate. A typical place to issue this token is during login or registration.

var token = client.tokenBuilder().createToken("user-id");
// return the token to the client app

Tokens with an expiry (in seconds):

var token = client.tokenBuilder().createToken("user-id", 3600);

For token expiry and revocation details, see Authentication and tokens.

Making Your First API Call

Create a user, open a channel, and send a message:

import io.getstream.models.*;
import io.getstream.services.Chat;
import java.util.Map;

// Upsert a user
client.updateUsers(UpdateUsersRequest.builder()
    .users(Map.of("john", UserRequest.builder().id("john").name("John").build()))
    .build()).execute();

// Create or join a channel
Chat chat = client.chat();
chat.channel("messaging", "hello-world")
    .getOrCreate(GetOrCreateChannelRequest.builder()
        .data(ChannelInput.builder()
            .createdByID("john")
            .build())
        .build());

// Send a message
chat.channel("messaging", "hello-world")
    .sendMessage(SendMessageRequest.builder()
        .message(MessageRequest.builder()
            .text("Hello, Stream!")
            .userID("john")
            .build())
        .build());