Pular para o conteúdo

Enviar um vídeo

Há dois caminhos de ingest. Escolha conforme onde o arquivo está.

Se o vídeo já está numa URL pública, deixe a plataforma baixá-lo:

Terminal window
curl -X POST https://api.devstreamcore.com/v1/videos \
-H "Authorization: Bearer sc_live_..." \
-H "Content-Type: application/json" \
-d '{
"input": [{ "url": "https://exemplo.com/meu-video.mp4" }],
"title": "Meu primeiro vídeo",
"quality": "1080p"
}'

Resposta 201 — o objeto Video já com status: "preparing". A transcodificação começa em background.

Quando o arquivo está no seu lado. Suporta multipart automático (arquivos ≥ 50 MiB).

Terminal window
curl -X POST https://api.devstreamcore.com/v1/uploads \
-H "Authorization: Bearer sc_live_..." \
-H "Content-Type: application/json" \
-d '{ "new_video_settings": { "title": "Upload do cliente" }, "file_size_bytes": 12345678 }'

Resposta (single-PUT, arquivo < 50 MiB):

{
"id": "up_xxxx",
"url": "https://.../presigned-put-url",
"video_id": "vid_xxxx",
"timeout": 3600,
"status": "waiting",
"cors_origin": null
}

Para arquivos ≥ 50 MiB (ou multipart: true) a resposta traz parts[] (uma URL presignada por chunk) + upload_id + chunk_size.

PUT do arquivo direto na(s) URL(s) presignada(s) — sem o header Authorization (a URL já está assinada):

Terminal window
curl -X PUT "<url-presignada>" \
-H "Content-Type: video/mp4" \
--data-binary @meu-video.mp4

No multipart, faça um PUT por chunk e guarde o ETag de cada parte.

Terminal window
curl -X POST https://api.devstreamcore.com/v1/uploads/up_xxxx/finalize \
-H "Authorization: Bearer sc_live_..." \
-H "Content-Type: application/json" \
-d '{ "mime_type": "video/mp4", "file_size_bytes": 12345678, "duration_secs": 92 }'

No multipart, inclua também upload_id e parts: [{ partNumber, etag }].

Resposta 200 — o objeto Video. O finalize é idempotente.

Detalhes de cada campo na API Reference.