Publicação

A API de Vídeo permite publicar vídeos em Páginas e Grupos. A publicação em usuários não é compatível.

Também é possível publicar reels em Páginas. Para mais informações, consulte Reels Publishing API.

Na publicação de vídeos, é preciso escolher o protocolo de carregamento e enviar uma solicitação POST à borda /videos da Página ou do grupo em questão. Essa API é compatível com os protocolos de carregamento retomável e não retomável. Recomendamos o uso do protocolo de carregamento retomável. Ele é mais versátil e responde melhor a interrupções na conexão.

Os exemplos deste documento usam um nó de Página, mas também se aplicam a nós de Grupos.

Requisitos

Todas as ações de publicação exigem um token de acesso e permissões apropriados conforme o nó de destino. Durante os testes, você pode gerar tokens e conceder permissões ao app por meio do Explorador da Graph API. Consulte o guia Introdução para saber como fazer isso. Quando o app estiver pronto para produção, talvez seja necessário implementar o Login do Facebook para obter tokens e permissões dos usuários.

Como publicar em Páginas

O usuário do app deve ser administrador da Página em questão. Você precisará do token de acesso à Página do usuário, que deve conceder as permissões pages_show_list, pages_read_engagement e pages_manage_posts ao app.

Como publicar em Grupos

O usuário do app deve ser administrador do grupo em questão. Você precisará do token de acesso do usuário, e esse usuário deve conceder a permissão publish_to_groups ao app.

Carregamento retomável

O protocolo de carregamento retomável é o mais comum para publicações, já que permite dividir os vídeos em partes menores para não atingir o tempo-limite. Isso é útil para carregar vídeos grandes, cenário em que as chances de ocorrerem erros de conexão são maiores. Normalmente, se um erro de conexão ocorresse durante o carregamento de um vídeo grande, seria necessário recomeçar do zero. Com o protocolo de carregamento retomável, apenas a parte afetada precisa ser recarregada. As partes já carregadas permanecem intactas.

Você pode publicar um vídeo em uma Página ou um grupo. Veja as etapas para publicação:

  1. Iniciar a sessão de carregamento em uma Página ou um grupo
  2. Carregar as partes individualmente, na ordem em que elas deverão ser agrupadas
  3. Concluir a sessão de carregamento

Depois do término da sessão, agruparemos as partes, além de codificar e publicar o vídeo.

Limitações

Os vídeos têm o limite de 10 GB de tamanho e 4 horas de duração.

Etapa 1: iniciar a sessão de carregamento

Para iniciar a sessão de carregamento, envie uma solicitação POST ao ponto de extremidade de vídeos de Página:

POST /v19.0/{page-id}/videos
  ?upload_phase=start
  &access_token={access-token}
  &file_size={file-size}

Inclua os seguintes parâmetros:

Nome do parâmetroValor

upload_phase

start

access_token

O token de acesso à Página para publicar em uma Página ou o token de acesso do usuário para publicar em um grupo.

file_size

O tamanho total do arquivo em bytes.

Exemplo de solicitação

curl -X POST \
  "https://graph-video.facebook.com/v19.0/1755847768034402/videos" \
  -F "upload_phase=start" \
  -F "access_token=EAADI..." \
  -F "file_size=22420886"

Exemplo de resposta

{
  "video_id":"2918040888250909",          //Capture this value (optional)
  "start_offset":"0",                     //Capture this value
  "end_offset":"1048576",
  "upload_session_id":"2918040901584241"  //Capture this value
}

Guarde os valores start_offset e upload_session_id retornados pela API. Eles serão usados na próxima etapa para carregar a primeira parte do vídeo. Pode ser interessante registrar também o valor video_id. Ele não é necessário para a publicação, mas será o ID do vídeo publicado.

Etapa 2: carregar as partes individualmente

Carregue as partes do vídeo na ordem em que elas deverão ser agrupadas. Para isso, envie solicitações POST consecutivas ao ponto de extremidade de vídeos de Página:

POST /v19.0/{page-id}/videos
  ?upload_phase=transfer
  &access_token={access-token}
  &upload_session_id={upload-session-id}
  &start_offset={start-offset}
  &video_file_chunk={video-file-chunk}

Inclua estes dados como multipart/form-data no corpo da solicitação:

Nome do dado de formulárioValor

upload_phase

transfer

access_token

O token de acesso à Página para publicar em uma Página ou o token de acesso do usuário para publicar em um grupo.

upload_session_id

O ID da sessão de carregamento.

start_offset

O valor start_offset retornado na resposta anterior.

video_file_chunk

O nome da parte do vídeo a ser carregada.

A cada parte carregada, um novo valor start_offset é retornado. Faça uma nova solicitação usando o último valor start_offset retornado e o nome da próxima parte do vídeo a ser carregada (atribuída a video_file_chunk). Repita esse processo para carregar as partes restantes.

Exemplo de solicitação para a primeira parte

curl -X POST \
  "https://graph-video.facebook.com/v19.0/1755847768034402/videos"  \
  -F "upload_phase=transfer" \
  -F "upload_session_id=2918040901584241" \
  -F "access_token=EAADI..." \
  -F "start_offset=0" \
  -F "video_file_chunk=@/Users/...xaa"

Exemplo de resposta

{
  "start_offset":"10485760",  //Value for second chunk
  "end_offset":"15728640"
}

Exemplo de solicitação para a segunda parte

curl -X POST \
  "https://graph-video.facebook.com/v19.0/1755847768034402/videos"  \
  -F "upload_phase=transfer" \
  -F "upload_session_id=2918040901584241" \
  -F "access_token=EAADI..." \
  -F "start_offset=10485760" \
  -F "video_file_chunk=@/Users/...xab"

Exemplo de resposta

{
  "start_offset":"20971520",  //Value for third chunk
  "end_offset":"22420886"
}

Após o carregamento da última parte, a API responderá com valores start_offset e end_offset correspondentes, indicando que a sessão pode ser concluída.

Exemplo de resposta final

{
  "start_offset":"22420886",  //When values match you can
  "end_offset":"22420886"     //end the upload session
}

Etapa 3: concluir a sessão de carregamento

Depois do término da sessão, agruparemos as partes, além de codificar e publicar o vídeo. Para concluir a sessão de carregamento, envie uma última solicitação POST ao ponto de extremidade de vídeos de Página:

POST /v19.0/{page-id}/videos
  ?upload_phase=finish
  &access_token={access-token}
  &upload_session_id={upload-session-id}

Inclua os seguintes parâmetros:

Nome do parâmetroValor

upload_phase

finish

access_token

O token de acesso à Página para publicar em uma Página ou o token de acesso do usuário para publicar em um grupo.

upload_session_id

O ID da sessão de carregamento.

Também é possível incluir parâmetros adicionais compatíveis com o ponto de extremidade de vídeos de Página (como title, description e thumb).

Exemplo de solicitação

curl -X POST \
  "https://graph-video.facebook.com/v19.0/1755847768034402/videos"  \
  -F "upload_phase=finish" \
  -F "access_token=EAADI..." \
  -F "upload_session_id=2918040901584241"

Exemplo de resposta JSON

{
  "success":true
}

Você receberá essa resposta quando começarmos a agrupar as partes e a codificar o vídeo completo. O vídeo publicado deverá ficar disponível depois de alguns minutos.

Carregamento não retomável

Recomendamos o uso do protocolo de carregamento retomável, já que ele responde melhor a interrupções na conexão e é compatível com arquivos maiores. Se preferir carregar os arquivos com o protocolo de carregamento não retomável, basta enviar uma solicitação POST à borda de vídeos de Página e incluir o parâmetro source (para arquivos locais de vídeo) ou file_url (para arquivos hospedados em um servidor público) no corpo da solicitação como multipart/form-data. Também é possível incluir parâmetros adicionais compatíveis com o ponto de extremidade de vídeos de Página (como title, description e thumb).

Limitações

Os vídeos têm o limite de 1 GB de tamanho e 20 minutos de duração. Se o arquivo for maior do que isso, divida-o em partes e faça a publicação por meio do protocolo de carregamento retomável.

Exemplo de solicitação com arquivo local

curl -X POST \
  "https://graph-video.facebook.com/v19.0/1755847768034402/videos" \
  -F "access_token=EAADd..." \
  -F "source=@/Users/...incredible.mov"

Exemplo de solicitação com arquivo hospedado

curl -X POST \
  "https://graph-video.facebook.com/v19.0/1755847768034402/videos" \
  -F "access_token=EAADd..." \
  -F "file_url=https://socialsizz.../incredible.mov"

Se o processo for bem-sucedido, a API responderá com o ID do vídeo publicado.

Exemplo de resposta

{
  "id":"287788272232962"  //ID of the published Video
}

Miniaturas de vídeo

As miniaturas são geradas automaticamente com imagens dos vídeos publicados. Elas podem ser ajustadas para melhorar o brilho, a cor e o contraste. Se preferir, você pode fornecer a imagem da miniatura. Para isso, inclua o campo thumb no protocolo escolhido (retomável ou não retomável). No protocolo retomável, inclua o campo thumb na Etapa 3: concluir a sessão de carregamento. Não alteraremos as imagens de miniatura fornecidas por você.

Requisitos para imagens de miniatura

Formato: BMP, GIF, JPEG, PNG ou TIFF.
Tamanho do arquivo: 10 MB ou menos.

Não há requisitos em relação à dimensão da imagem. Porém, a taxa de proporção precisa ser a mesma do vídeo.

Exemplo de solicitação de carregamento retomável com miniatura

curl -X POST \
  "https://graph-video.facebook.com/v19.0/1755847768034402/videos" \
  -F "upload_phase=finish" \
  -F "access_token=EAADI..." \
  -F "upload_session_id=2918040901584241"
  -F "thumb=@/Users/...thumbnail_image.png"

Exemplo de resposta JSON

{
  "success":true
}

Exemplo de solicitação de carregamento não retomável com miniatura

curl -X POST \
  "https://graph-video.facebook.com/v19.0/1755847768034402/videos" \
  -F "access_token=EAADd..." \
  -F "source=@/Users/...incredible.mov"
  -F "thumb=@/Users/...thumbnail_image.png"

Exemplo de resposta

{
  "id":"287788272232962"
}