---
title: "Get a user's live-stream status"
method: GET
path: "/users/{identifier}/stream"
tags: ["Streaming"]
---

# Get a user's live-stream status

`GET /users/{identifier}/stream`

Returns whether a user is live, the platforms they are live on, and their primary (highest-viewer) stream details. The {identifier} may be a username or a Convex user ID. Visible for public or limited profiles, plus self; a private non-self profile returns 403. Unknown or currently-banned users return 404 (a banned user's existence is not leaked). When offline, isLive is false, platforms is empty, and primaryStream is null. Requires stream.read.

## Path parameters

- `identifier` string, required — Username or Convex user ID.

## Response `200`

The user's live-stream status.

- ApiStreamStatusEnvelope — Stream status plus a response timestamp.
  - `stream` ApiStreamStatus, required — API-safe live-stream status for a user.
    - `userId` string, required — User ID these stream details belong to.
    - `isLive` boolean, required — Whether the user is live on any platform.
    - `platforms` StreamPlatform[], required — Platforms the user is currently live on.
    - `primaryStream` ApiPrimaryStream, required — The user's primary (highest-viewer) live stream.
      - `platform` 'TWITCH' | 'YOUTUBE' | 'KICK', required — Supported streaming platform.
      - `streamUrl` string, nullable, required — Watch URL, when known.
      - `title` string, nullable, required — Stream title, when known.
      - `gameName` string, nullable, required — Game/category being streamed, when known.
      - `viewerCount` integer, nullable, required — Current viewer count, when known.
      - `thumbnailUrl` string, nullable, required — Stream thumbnail URL, when known.
      - `startedAt` string, nullable, required — Stream start time (platform-provided ISO timestamp), when known.
      - `lastLiveAt` string, nullable, required — ISO timestamp the user was last observed live, when known.
  - `timestamp` string, required — ISO 8601 timestamp.

## Other responses

- `401` — Missing or invalid API key.
- `403` — API key lacks the required permission.
- `404` — Resource not found.
- `429` — Rate limited.
- `500` — Internal server error.

---

[API](https://skmtc.net/teambattles/apis/teambattles-api.md) · [All operations](https://skmtc.net/teambattles/apis/teambattles-api/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/teambattles/teambattles-api/versions/2ffe8fb53b7d/schema)
