Publicación

La API de video te permite publicar videos en páginas y grupos. No se admite la publicación en usuarios.

También puedes volver a publicar reels en páginas. Para obtener más información, consulta API de publicación de reels.

El proceso para publicar videos incluye la elección de un protocolo de subida y el envío de una solicitud POST al perímetro /videos de la página o el grupo objetivo. La API admite protocolos de subida reanudables y no reanudables. Te recomendamos usar el protocolo de subida reanudable, ya que es más versátil y administra con eficacia las interrupciones en la conexión.

Ten en cuenta que todos los ejemplos de este documento usan un nodo de página, pero se aplican de la misma manera a los nodos de grupo.

Requisitos

Todas las acciones de publicación requieren un token de acceso y permisos basados en el nodo objetivo. Durante la prueba, puedes generar fácilmente tokens y conceder permisos a tu app con el explorador de la API Graph. Consulta nuestra guía Primeros pasos para obtener más información. Cuando tu app esté lista para producción, es probable que debas implementar el inicio de sesión con Facebook para obtener tokens y permisos de los usuarios de tu app.

Publicar en páginas

El usuario de la app debe ser administrador de la página objetivo. Necesitarás el token de acceso a la página del usuario de la app y éste deberá conceder a tu app los permisos pages_show_list, pages_read_engagement y pages_manage_posts.

Publicar en grupos

El usuario de la app debe ser administrador del grupo objetivo. Necesitarás el token de acceso de usuario del usuario de la app, y éste deberá conceder a tu app el permiso publish_to_groups.

Subida reanudable

El protocolo de subida reanudable es el protocolo de publicación preferido, ya que puedes dividir videos grandes en segmentos más pequeños para evitar que se agote el tiempo de espera. Esto es especialmente útil para videos grandes en los que es más probable que surja un error de conexión. Si surge un error de conexión mientras subes un video grande, normalmente deberás volver a subir el video completo. Sin embargo, si usas el protocolo de subida reanudable, solo deberás volver a subir el segmento afectado; no será necesario volver a subir los segmentos que ya se subieron.

Puedes publicar un video en una página o en un grupo. Para hacer la publicación, sigue estos pasos:

  1. Inicializa una sesión de subida en la página o en el grupo.
  2. Sube segmentos individuales en el orden en el que se deben ensamblar.
  3. Finaliza la sesión de subida.

Una vez que finalice la sesión de subida, volveremos a ensamblar el video, lo codificaremos y lo publicaremos.

Limitaciones

Los videos están limitados a 10 GB y 4 horas.

Paso 1: inicializar una sesión de subida

Para inicializar una sesión de subida de video, envía una solicitud POST al punto de conexión de videos de la página:

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

Incluye los siguientes parámetros:

Nombre del parámetroValor

upload_phase

start

access_token

Tu token de acceso a la página, si publicas en una página, o tu token de acceso de usuario, si publicas en un grupo.

file_size

El tamaño total de tu archivo de video en bytes.

Ejemplo de solicitud

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

Ejemplo de respuesta

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

Captura los valores de start_offset y upload_session_id devueltos por la API. Los usarás en el paso siguiente para subir tu primer segmento de video. Es posible que también quieras capturar el valor video_id. No lo necesitas para la publicación, pero será el identificador del video que se publique.

Paso 2: subir segmentos individuales

Sube cada uno de los segmentos de tu video en el orden en el que se deben ensamblar enviando solicitudes POST consecutivas al punto de conexión de videos de la 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}

Incluye los siguientes datos como multipart/form-data en el cuerpo de la solicitud:

Nombre del formulario de datosValor

upload_phase

transfer

access_token

Tu token de acceso a la página, si publicas en una página, o tu token de acceso de usuario, si publicas en un grupo.

upload_session_id

Tu identificador de sesión de subida.

start_offset

El valor start_offset devuelto en la respuesta anterior.

video_file_chunk

El nombre del segmento de video para subir.

Cada vez que subas correctamente un segmento, se devolverá un nuevo valor start_offset. Repite esta solicitud con el valor start_offset recién devuelto y el nombre del siguiente segmento de video que se subirá (asignado a video_file_chunk), y continúa con el resto de los segmentos de la misma manera.

Ejemplo de solicitud para el primer segmento

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"

Ejemplo de respuesta

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

Solicitud de ejemplo para el segundo segmento

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"

Ejemplo de respuesta

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

Una vez que hayas subido el segmento final, la API responderá con los valores start_offset y end_offset correspondientes, e indicará que puedes finalizar la sesión de subida.

Ejemplo de respuesta final

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

Paso 3: finalizar la sesión de subida

Una vez que finalices la sesión de subida, reensamblaremos el video completo, lo codificaremos y, luego, lo publicaremos en la página. Para finalizar la sesión de subida, envía una solicitud POST final al punto de conexión de videos de la página:

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

Incluye los siguientes parámetros:

Nombre del parámetroValor

upload_phase

finish

access_token

Tu token de acceso a la página, si publicas en una página, o tu token de acceso de usuario, si publicas en un grupo.

upload_session_id

Tu identificador de sesión de subida.

También puedes incluir cualquier parámetro adicional compatible con el punto de conexión de videos de la página, como title, description y thumb.

Ejemplo de solicitud

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"

Ejemplo de respuesta JSON

{
  "success":true
}

Si recibes esta respuesta, significa que comenzamos a ensamblar y codificar el video completo. Después de algunos minutos, se mostrará el video publicado.

Subida no reanudable

Te recomendamos subir los archivos con el protocolo de subida reanudable, ya que puede administrar las interrupciones con eficacia y admite archivos más grandes. Sin embargo, si prefieres subir archivos utilizando el protocolo de subida no reanudable, envía una solicitud POST al perímetro de videos de la página e incluye el parámetro source (para los archivos de video locales) o el parámetro file_url (para archivos alojados en un servidor público) en el cuerpo de tu solicitud como multipart/form-data. También puedes incluir cualquier parámetro adicional compatible con el punto de conexión de videos de la página, como title, description y thumb.

Limitaciones

Los videos están limitados a 1 GB y 20 minutos. Si tu video es más grande, divídelo en segmentos y publícalo con el protocolo de subida reanudable.

Ejemplo de solicitud de archivos locales

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

Ejemplo de solicitud de archivos alojados

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

En caso de éxito, la API responderá con el identificador del video publicado.

Ejemplo de respuesta

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

Imágenes en miniatura de videos

Generamos automáticamente imágenes en miniatura utilizando imágenes fijas de videos publicados. Puedes mejorar el brillo, el color y el contraste de las imágenes en miniatura generadas. Para proporcionar tu propia imagen en miniatura, incluye el campo thumb con el protocolo reanudable o no reanudable. Si usas el protocolo no reanudable, incluye el campo thumb durante el Paso 3: finalizar la sesión de subida. Las imágenes en miniatura que proporciones no se modificarán.

Requisitos para las imágenes en miniatura

Formato: BMP, GIF, JPEG, PNG, TIFF
Tamaño de archivo: 10 MB o menos.

No hay requisitos para la dimensión de las imágenes, pero deben tener la misma relación de aspecto que tu video.

Ejemplo de solicitud de subida reanudable con imagen en 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"

Ejemplo de respuesta JSON

{
  "success":true
}

Ejemplo de solicitud de subida no reanudable con imagen en 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"

Ejemplo de respuesta

{
  "id":"287788272232962"
}