Skip to main content
This route is deprecated and will be removed on January 1, 2027, after which it returns 404. Use Create a Source (POST /2/sources) instead. See the migration guide.
Creates a new RTMPS ingest point. Endpoint: POST /2/users/:user_id/sources

Path parameters

Request body

Example request

Success response (200)

Notes

  • On this route, id is the source’s stream key (rtmp_stream_key == id). Treat it as a secret: anyone with the key can stream to your source. The /2/sources routes identify the same source by a separate, non-secret source id instead; look it up with Get Sources.
  • Both rtmp_url and rtmps_url are RTMPS (TLS) URLs. Configure your encoder with rtmps_url and rtmp_stream_key.
  • rtmp_region is the region of the X ingest location serving the source (us-east-1 or us-west-2), which can differ from the region you requested (for example, eu-central-1 is served from us-east-1).
  • is_stream_active is true while the source is receiving video from your encoder.
  • owner_id is a JSON number, not a string — for real (19-digit) X user IDs it exceeds the safe-integer range of many languages (e.g. JavaScript) and loses precision when parsed normally. Do not rely on owner_id; use your authenticated numeric user id (or a broadcast’s twitter_user_id, which is a string).
  • Sources don’t currently include recommended encoder settings (recommended_configuration), detected stream settings (stream_attributes) or compatibility_info.
  • Sources created before October 31, 2026 can also include the classification fields video_service and creation_origin ({ value, name, original_name } objects) and their original ingest hostnames. You can safely ignore the classification fields.