reference

RTMP / RTMPS: the query-string credential contract

RTMP is the maximum-compatibility ingest path. TRaX authenticates RTMP with credentials in the URL query string: ?user= and ?pass=. Not a /live/<key> path suffix, and not the URL's userinfo section.

Format

rtmp://<trax-media-host>:1935/<path>?user=<stream-key>&pass=<stream-key>
rtmps://<trax-media-host>:1936/<path>?user=<stream-key>&pass=<stream-key>

The stream key fills both parameters. The <path> is the input's stream path (inputs/generic-input-<id> for an input created over /v1), the same grammar as SRT and WHIP/WHEP. You do not assemble this URL yourself: the complete field of the ingest endpoint, or the studio's Connection Information panel, hands it to you whole.

Hard rules

  1. Credentials go in the query string. The ingest server reads user and pass from the query and nowhere else. rtmp://host/live/<key> does not authenticate. rtmp://<user>:<pass>@host/<path> (userinfo) does not authenticate either: the server reads an empty user and refuses the connect. Older TRaX material showed the userinfo form; it is dead.
  2. Encoders with a split Server / Stream Key field. OBS, Streamlabs and vMix publish to <Server>/<Stream Key>, so split the URL at its last /: Server rtmp://<host>:1935/inputs, Stream Key generic-input-<id>?user=<key>&pass=<key>. The query string travels with the key, which is where the server expects it. ffmpeg and other single-URL encoders take the whole URL as-is.
  3. RTMPS for anything you would not say out loud. Plain RTMP (1935) is unencrypted; the key is visible on the wire. Prefer RTMPS (1936) or SRT.
  4. The key does not expire. Authentication happens at connect time and the stream key is static for the life of the input, so an encoder's auto-reconnect can redial the same URL indefinitely. Revocation is rotating the key (once that endpoint is live) or deleting the input.

Failure modes

Symptom Likely cause
Connection refused / auth error at connect Credentials in userinfo or the path instead of the query string; a mangled or revoked key
Auth OK but stream not visible Wrong <path>: authenticated to an input that is not the one you think
Works in ffmpeg, refused from OBS The split is wrong. The query string must be on the Stream Key side of the /, and Server must end at /inputs