---
title: "Fanout Leg Died"
method: POST
path: "/fanout-leg-died"
---

# Fanout Leg Died

`POST /fanout-leg-died`

## Request

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

start.sh v3 (2026-09-19) calls this from a leg's supervisor every time
that destination's ffmpeg exits while the SOURCE is still live, just
before relaunching it. Durable only (fanout_leg_events, migration 0075):
no in-memory state, no user email, no admin alert here. The hourly
monitor (chk_fanout_leg_deaths) and the weekly report count the rows per
user; the user-facing signal stays the existing destination-status /
drop-email path, whose copy now says the connection dropped on our side
and is being reconnected.

The path is never logged (it carries the stream key); the hash start.sh
prints correlates the two logs. dest_id is trusted only if it parses as
a UUID AND belongs to the resolved user; otherwise stored NULL.

## Headers

- `X-Sleipnir-Hook-Auth` string, nullable

## Request body

- FanoutLegDiedPayload
  - `path` string, nullable
  - `index` integer, nullable
  - `dest_id` string, nullable
  - `attempt` integer, nullable
  - `ran_seconds` integer, nullable
  - `exit_code` integer, nullable
  - `gave_up` boolean, 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)
