# Welcome

Every Stream product runs on the same platform: one app, one set of users and auth tokens, one webhook system, one permission model. This section documents those shared mechanics once, so they work the same way whether you're building with [Chat](https://getstream.io/chat/docs/), [Video](https://getstream.io/video/docs/), [Feeds](https://getstream.io/activity-feeds/docs/), or [Moderation](https://getstream.io/moderation/docs/).

## Start here

Whatever you're building, your server ends up doing the same three things:

1. **[Construct a client](https://getstream.io/docs/platform/backend-sdks/)**

   One object, seven languages, every product.

2. **[Create users](https://getstream.io/docs/platform/users/)**

   A user is created once and exists in chat, video, feeds and moderation, with [a role](https://getstream.io/docs/platform/permissions/) that determines what they're allowed to do.

3. **[Sign tokens](https://getstream.io/docs/platform/authentication/)**

   Their devices connect with a JWT that only your server can sign.

## Identity and access

- [Users](https://getstream.io/docs/platform/users/): Created once, shared everywhere: the same person behind every channel, call and feed.
- [Authentication and tokens](https://getstream.io/docs/platform/authentication/): Your server signs a token per user. Their devices connect with it.
- [Permissions and roles](https://getstream.io/docs/platform/permissions/): The subject, resource and action model that decides who can do what.

One app serving many customers? [Multi-tenancy and teams](https://getstream.io/docs/platform/multi-tenancy/) keeps them isolated. [GDPR and privacy](https://getstream.io/docs/platform/gdpr/) covers export and deletion requests.

## Events and notifications

- [Webhooks](https://getstream.io/docs/platform/webhooks/): HTTP callbacks to your backend when anything happens: signatures, SQS and SNS, retries and the IP allowlist.
- [Push notifications](https://getstream.io/docs/platform/push-notifications/): Reach your users' devices when something happened to them, in every product.

Push has a page for each step: [configuring providers](https://getstream.io/docs/platform/push-providers/), [registering devices](https://getstream.io/docs/platform/push-devices/), [per-user preferences](https://getstream.io/docs/platform/push-preferences/) and [testing and troubleshooting](https://getstream.io/docs/platform/push-troubleshooting/).

## Using the API

Reference pages for the request mechanics every product shares:

- **[Rate limits](https://getstream.io/docs/platform/rate-limits/)**: how limits work, reading limit headers and handling 429 responses.
- **[Query syntax operators](https://getstream.io/docs/platform/query-syntax-operators/)**: the filter operators shared by every query endpoint.
- **[Async operations](https://getstream.io/docs/platform/async-operations/)**: waiting on the long-running tasks that return a task ID.
- **[Error handling](https://getstream.io/docs/platform/error-handling/)**: the typed exception hierarchy the backend SDKs raise.
- **[Logging](https://getstream.io/docs/platform/logging/)**: structured SDK log events with identical fields in every language.
- **[Connection pooling](https://getstream.io/docs/platform/connection-pooling/)**: the HTTP pool and timeout settings the SDKs configure by default.
- **[API error codes](https://getstream.io/docs/platform/api-error-codes/)**: every error the API returns, with Stream codes and HTTP statuses.

## What stays with each product

Product-specific detail lives in each product's own documentation. Pages here link to those references where they apply:

- webhook event catalogs
- per-endpoint rate limit tables
- permission and capability references
- push template variables

## FAQ

**Do users work in every product?**

Yes. A [user](https://getstream.io/docs/platform/users/) is created once and exists in Chat, Video, Feeds and Moderation.

**Can a client call the API without my server?**

Clients connect with a JWT that only your server can sign. During development, [developer tokens](https://getstream.io/docs/platform/authentication/#developer-tokens) skip the signing.

**How do I keep customers separate inside one app?**

[Teams](https://getstream.io/docs/platform/multi-tenancy/) partition users and their content within a single app.

**What happens when I hit a rate limit?**

The API returns 429. The [rate limits page](https://getstream.io/docs/platform/rate-limits/) explains the limit headers and how to back off.

**How does my backend find out about events?**

[Webhooks](https://getstream.io/docs/platform/webhooks/): signed HTTP callbacks, with SQS and SNS as alternative transports.

**Can I read these docs as markdown?**

Append `.md` to any page URL. [/llms.txt](https://getstream.io/llms.txt) indexes every page.

---

For the most recent version of this documentation, visit [https://getstream.io/docs/platform/](https://getstream.io/docs/platform/).