Pede a URL de envio direto de uma mídia
POST/api/media/upload-url
- Auth
- Exige token
- X-CommunityId
X-CommunityIdEnvie o X-CommunityId da comunidade em que a operação acontece.
Substituiu o antigo envio de vídeo pelo servidor (100 MB, URL pública), removido. Confere finalidade, space, permissão, tipo, extensão e tamanho **antes de assinar** e devolve um `PUT` pré-assinado de 10 minutos amarrado à chave, ao `Content-Type` e ao tamanho exatos. O navegador envia direto ao S3 e depois chama `POST /api/media/confirm`.
Finalidades (o space precisa ser do módulo certo): - `contentVideo`: vídeo (MP4, WebM, MOV) de um post, até **2 GB**; space `content` ou `feed`; quem o `canCreate` do space permite. Em comunidade com streaming nativo ligado, a confirmação enfileira a conversão para HLS (`processingStatus`: `queued` → `processing` → `ready`/`failed`). - `eventRecording`: gravação (vídeo) de um evento, até 2 GB; space `events`; só a equipe. - `galleryImage`: imagem (JPG, PNG, WEBP, GIF) até 20 MB; space `gallery`; quem o `canCreate` permite. - `classifiedImage`: imagem até 20 MB; space `classifieds`; quem o `canCreate` permite.
A mídia nova é **sempre privada**, com link assinado, mesmo em space público; o que foi enviado antes continua com a URL de sempre. Os limites de uso da comunidade só avisam (veja o `confirm`).
Headers
| Nome | Tipo | Descrição |
|---|---|---|
X-CommunityIdopcional | string (uuid) | ID da comunidade em que a operação acontece. Obrigatório na maioria dos endpoints com escopo de comunidade. |
Corpo da requisição application/json
| Nome | Tipo | Descrição |
|---|---|---|
purposeobrigatório | contentVideo | eventRecording | galleryImage | classifiedImage | |
spaceIdobrigatório | string (uuid) | |
nameobrigatório | string | max 255 |
mimeTypeobrigatório | string | |
sizeobrigatório | integer | Bytes. · ≥ 1 |
Respostas
| Código | Descrição |
|---|---|
200 | URL de envio. |
400 | Requisição inválida — falha de validação. |
401 | Token ausente, inválido ou expirado. |
403 | Autenticado, mas sem permissão para esta operação. |
404 | Recurso não encontrado. |
429 | Mais de 60 envios por hora para este perfil. |
500 | Erro interno do servidor. |
Exemplo com curl
curl -X POST "https://api.memberfy.net/api/media/upload-url" \
-H "Authorization: Bearer $TOKEN" \
-H "X-CommunityId: $COMMUNITY_ID" \
-H "Content-Type: application/json" \
-d '{"purpose":"contentVideo","spaceId":"00000000-0000-0000-0000-000000000000","name":"string","mimeType":"video/mp4","size":1}'