composer require getstream/getstream-phpGetting 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 PHP SDK for Stream covers Chat, Video, Moderation, and Feeds.
Install the SDK:
Initialize the client with your API key and secret (available on the Dashboard):
use GetStream\ChatClient;
$client = new ChatClient("your-api-key", "your-api-secret");Or load credentials from environment variables (STREAM_API_KEY, STREAM_API_SECRET) or a .env file:
use GetStream\ClientBuilder;
$client = ClientBuilder::fromEnv()->buildChatClient();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.
$token = $client->createUserToken("user-id");
// return the token to the client appMaking Your First API Call
Create a user, open a channel, and send a message:
use GetStream\GeneratedModels as Models;
// Upsert a user
$client->updateUsers(new Models\UpdateUsersRequest(
users: ["john" => new Models\UserRequest(
id: "john",
name: "John",
)],
));
// Create or join a channel
$client->getOrCreateChannel("messaging", "hello-world",
new Models\ChannelGetOrCreateRequest(
data: new Models\ChannelInput(
createdByID: "john",
),
)
);
// Send a message
$client->sendMessage("messaging", "hello-world",
new Models\SendMessageRequest(
message: new Models\MessageRequest(
text: "Hello, Stream!",
userID: "john",
),
)
);