Skip to main content
Creates a new broadcast bound to an existing source. Starts in NOT_STARTED. Endpoint: POST /2/users/:user_id/broadcasts
The source must already be actively receiving an RTMP feed (is_stream_active: true), or this endpoint returns a 404. See the broadcast lifecycle overview.

Request body

Example request

Success response

Key fields returned at creation

  • media_key / media_id: Required later for chat access and some playback.
  • video_access: Playback URLs (HLS variants). lhls* and replay_url may appear later or for certain modes.
  • share_url: Public viewer link (https://x.com/i/broadcasts/{id}).
  • state: Always starts "NOT_STARTED".
  • is_high_latency: Informational only; it does not reflect the is_low_latency value you sent.
  • twitter_user_id vs user_id vs owner_id: twitter_user_id is your numeric X user id (returned as a string) — use this for the :user_id path parameter in every endpoint. user_id (e.g. "1DYEXPNqZwqEg") is a separate alphanumeric livestream-platform id; do not use it in paths. Note also that the Source object’s owner_id is delivered as a JSON number and will lose precision for real (19-digit) user IDs — never rely on it; use twitter_user_id or your authenticated id instead.
After creation, start pushing your RTMP feed to the source’s rtmps_url + rtmp_stream_key if you haven’t already, then publish.