---
title: "Api Whip Publish"
method: POST
path: "/api/whip/publish"
---

# Api Whip Publish

`POST /api/whip/publish`

## Request

- Base URL: `https://sleipnir.tv` (the document declares no server; this is the origin it was published from)
- URL: `https://sleipnir.tv/api/whip/publish`
- Auth: none declared

Authenticated WHIP signaling proxy for the browser encoder (golive-beta).

The browser never talks to the internal `whip` MediaMTX instance
directly -- it POSTs its SDP offer here instead, exactly like every
other authenticated API route (session cookie via get_current_user).
The stream key used for the internal WHIP publish is DERIVED from the
caller's own session (user.stream_key), never accepted from the
request -- so a browser can only ever publish under its own logged-in
user's key, structurally, not by a validation check that could have a
bug. `whip` itself has no public port; only this route can reach it.

## Cookies

- `relay_session` string, nullable

## Response `200`

Successful Response

- unknown

## Other responses

- `422`: Validation Error

---

[API](https://skmtc.dev/sleipnir/apis/relay-control-plane.md) · [All operations](https://skmtc.dev/sleipnir/apis/relay-control-plane/llms.txt) · [OpenAPI document](https://skmtc.dev/sleipnir/apis/relay-control-plane/revisions/79829f6945a4?raw)
