---
title: "Start a stream"
method: POST
path: "/streams/{id}/start"
tags: ["streams"]
---

# Start a stream

`POST /streams/{id}/start`

Move the stream into Activating via `streamlifecycle.Transition(_, CmdStart)`.
Returns the loaded stream after the lifecycle owner accepted the command. The
resolver does not block on the orchestrator/agent observing the change.

Typed errors (extensions.code):
  - STREAM_ILLEGAL_TRANSITION when the current state forbids start
  - STREAM_GUARD_FAILED when a pre-flight guard rejected start
    (Extensions carries `reason` + `cause`).

## Path parameters

- `id` string, required

## Headers

- `Idempotency-Key` string

## Response `200`

Successful response.

- Stream
  - `createdAt` string, date-time, required
  - `framerate` 'f_24' | 'f_25' | 'f_30' | 'f_60', nullable
  - `id` string, required
  - `name` string, nullable
  - `quality` 'q_720p' | 'q_1080p' | 'q_1440p' | 'q_2160p', nullable
  - `state` 'draft' | 'invalid' | 'scheduled' | 'preparing' | 'activating' | 'active' | 'failing' | 'failed' | 'stopping' | 'stopped', nullable

## Other responses

- `401` — Missing or invalid access token.
- `403` — The token lacks the required scope or access to the resource.
- `404` — The resource does not exist or is not visible to the caller.
- `422` — The request body or parameters are invalid.
- `429` — Rate limit exceeded. Retry after the indicated delay.
- `502` — The upstream data service returned an error.

---

[API](https://skmtc.dev/streamloop/apis/streamloop-api.md) · [All operations](https://skmtc.dev/streamloop/apis/streamloop-api/llms.txt) · [OpenAPI document](https://skmtc-service-production.skmtc.workers.dev/v1/apis/streamloop/streamloop-api/revisions/7f30ccbac1b1/schema)
