Devolve `{ url, expiresAt, thumbnailUrl? }` (1 hora, `inline`, aceita `Range`) **depois** da checagem de acesso: quem vê o space (plano, grupo, pago ou privado inclusive) e o dono da mídia está aberto à pessoa (post aprovado, anúncio no prazo, imagem aprovada, gravação de evento para a equipe, quem está inscrito ou tem a compra do evento). Sem acesso: 403 e **nenhum link**. Mídia ainda sem dono só abre para quem enviou e para a equipe. Nunca grave nem registre a URL. Vídeo de comunidade com streaming nativo ligado: quando a versão adaptativa (HLS) já está pronta, vem também `hls` (`manifestUrl`, `params` com `Policy`, `Signature` e `Key-Pair-Id`, `expiresAt`, `heights`). O player pede `manifestUrl` e **anexa `params` na query de toda requisição** (manifesto, listas e segmentos); sem cookies. O link vale 2 horas: peça outro perto de `expiresAt`. Enquanto `processingStatus` for `queued` ou `processing`, ou se for `failed`, não há `hls` e o MP4 de `url` segue tocando. Sem `hls`, use `url`.