Servicios de la API de YouTube: Funcionalidad mínima obligatoria

Nota: Cumplir con las Políticas para Desarrolladores de YouTube proporciona orientación y ejemplos para ayudarte a garantizar que tus clientes de la API sigan partes específicas de las Condiciones y las Políticas de los Servicios de la API de YouTube (Condiciones del Servicio de la API). La guía ofrece información sobre cómo YouTube aplica ciertos aspectos de las Condiciones del Servicio de la API, pero no reemplaza ningún documento existente.

En este documento, se definen los requisitos funcionales mínimos para los clientes de la API que implementan o proporcionan acceso a funciones específicas de los servicios de la API de YouTube ("Clientes de la API").

Estos requisitos y lineamientos garantizan que los clientes de la API proporcionen una experiencia del usuario coherente que proteja los intereses de los usuarios, los propietarios del contenido y los anunciantes de YouTube. Estas reglas son una parte integral de las Condiciones del Servicio de la API de YouTube y se deben seguir en el desarrollo y la implementación de cualquier Cliente de API.

Es posible que los requisitos de este documento cambien para que podamos garantizar mejores experiencias de usuario con las funciones existentes de YouTube. También cambiarán en respuesta a las funciones nuevas y actualizadas de YouTube. En ocasiones, estos cambios pueden requerir que actualices tus clientes de API para abordar los nuevos requisitos. En el historial de revisiones de las Condiciones del Servicio, se documentarán todos los cambios, por lo que te recomendamos que consultes ese documento con frecuencia o que te suscribas a su feed RSS para asegurarte de que puedas conocer rápidamente los cambios que puedan afectar a tus clientes de la API.

Además de los requisitos que se indican en este documento, te recomendamos que sigas las prácticas recomendadas que se describen en las Políticas de los Servicios de la API de YouTube y que se analizan en otras partes de la documentación de los servicios de la API de YouTube. Incluso cuando no son estrictamente necesarias, estas prácticas ayudan a tus clientes de la API a recuperarse más rápido de los errores y a optimizar el uso de la cuota si utilizan servicios de la API de YouTube que asignan cuota. Al mismo tiempo, estas prácticas ayudan a garantizar la integridad del ecosistema de YouTube y, sobre todo, a brindar la mejor experiencia posible a los usuarios de tus clientes de API y de las aplicaciones de YouTube.

Reproductor incorporado de YouTube y reproducción de video

Los requisitos de esta sección se relacionan específicamente con los reproductores de YouTube integrados. Las Políticas de los Servicios de las APIs de YouTube también incluyen varias políticas pertinentes para los clientes de la API que reproducen contenido audiovisual de YouTube.

Identidad y credenciales del cliente de API

Los clientes de API que usan el reproductor integrado de YouTube (incluida la API de YouTube IFrame Player) deben proporcionar identificación a través del encabezado de solicitud HTTP Referer. En algunos entornos, el navegador establecerá HTTP Referer automáticamente, y los clientes de la API solo deben asegurarse de no establecer Referrer-Policy de una manera que suprima el valor de Referer. YouTube recomienda usar strict-origin-when-cross-origin Referrer-Policy, que ya es el valor predeterminado en muchos navegadores.

Del mismo modo, si se integra el reproductor incorporado de YouTube en una ventana creada con window.open de JavaScript, los clientes de la API no deben usar la función noreferrer, que suprime el valor de Referer.

Cómo establecer el encabezado Referer

En los entornos en los que HTTP Referer está vacío de forma predeterminada y el navegador no lo establece automáticamente, los clientes de la API deben tomar medidas para proporcionar su identidad a través de medios alternativos. En las integraciones de WebView, como una app para dispositivos móviles o una app para computadoras, HTTP Referer está vacío de forma predeterminada y Referer suele establecerse con una de estas técnicas:

  • App para dispositivos móviles con un reproductor dentro de un archivo HTML local

    En esta configuración, el reproductor se carga en un archivo HTML que se incluye en la app. Cuando se carga este archivo HTML, configurar el parámetro baseUrl establecerá el Referer.

  • App para dispositivos móviles sin archivo HTML local

    En esta configuración, el reproductor se carga directamente desde https://www.youtube.com/embed/VIDEO_ID sin ningún archivo HTML adjunto. Para establecer Referer, agrégalo como un encabezado HTTP:

    • Android loadUrl con el encabezado HTTP Referer agregado al parámetro additionalHttpHeaders
    • iOS loadRequest: con el encabezado HTTP Referer agregado a la solicitud. Por ejemplo:

      NSString *bundleId = [[NSBundle mainBundle] bundleIdentifier];
      NSString *referrer = [[NSString stringWithFormat:@"https://%@", bundleId] lowercaseString];
      NSURL *referrerUrl = [NSURL URLWithString:referrer];
      
      NSString *destination = @"https://www.youtube.com/embed/VIDEO_ID";
      NSURL *destinationUrl = [NSURL URLWithString:destination];
      
      NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:destinationUrl];
      [request addValue:referrerUrl forHTTPHeaderField:@"Referer"];
      
      // Create an instance of WKWebView (omitted for simplicity), then load the NSMutableURLRequest.
      [webView loadRequest:request];
      
  • App para dispositivos móviles con un reproductor dentro de una pestaña del navegador nativo

    • Android CustomTabs

      Usa Intent.EXTRA_REFERRER para establecer el sitio de referencia. Asegúrate de usar el esquema android-app:// en lugar de https:// cuando crees el Uri. Por ejemplo:

      String destinationUrl = "https://www.youtube.com/embed/VIDEO_ID";
      CustomTabsIntent customTabsIntent = new CustomTabsIntent.Builder().build()
      customTabsIntent.intent.putExtra(Intent.EXTRA_REFERRER, Uri.parse("android-app://" + context.getPackageName()));
      customTabsIntent.launchUrl(this, Uri.parse(destinationUrl));
      
    • iOS SFSafariViewController

      SFSafariViewController no admite la configuración de Referer. En este caso, establece el parámetro del reproductor origin.

  • App para computadoras

    En esta configuración, establece Referer agregándolo como un encabezado HTTP:

En otras plataformas en las que HTTP Referer está vacío de forma predeterminada, configura el valor de Referer configurando el WebView en el que se carga el reproductor. La técnica exacta puede variar según la plataforma.

Si eres propietario de una biblioteca, un framework, un complemento, un servicio o un wrapper que usan los desarrolladores para integrar el reproductor integrado de YouTube, debes recuperar el ID de la app del entorno (es posible que esto no sea posible, según la plataforma) o permitir que los desarrolladores pasen su ID de la app para que se pueda configurar Referer (y el parámetro del reproductor widget_referrer, si corresponde) como se describió anteriormente.

Formato de URL de referencia

Cuando proporcionas explícitamente el encabezado Referer configurando un parámetro de WebView o agregando un encabezado HTTP, el formato suele ser una URL completamente calificada. Especifica HTTPS como el protocolo. Dentro de la URL, el nombre de dominio debe ser el identificador de tu aplicación ("ID de app") que está registrado en la tienda que distribuyó tu app a los usuarios finales. Si tu app se proporciona a los usuarios a través de un canal de distribución alternativo, usa el ID de la app que se registró en el sistema operativo durante la instalación de la app. En la mayoría de los casos, el ID de tu app será un nombre de dominio invertido (también conocido como "formato de DNS inverso"), como com.google.android.youtube. Ejemplos representativos:

En algunas plataformas, el ID de la app no es un nombre de dominio invertido. En estos casos, usa el ID único de la app que asigna la tienda que la distribuye. Cuando el ID de la app de la tienda sea una cadena alfanumérica generada (asignada por la tienda o las herramientas de desarrollo, no elegida por el desarrollador de la app), incluye el nombre visible de la app (reemplaza los espacios por guiones) y el ID de la app de la tienda, separados por un punto. Por ejemplo: <my-app-name>.<AppID>. Este valor debe ser estable en los cambios de versión de la app. Si la app no está alojada en una tienda, usa el ID de la app que se registró en el sistema operativo durante la instalación. Por lo general, se trata de un identificador único en el manifiesto de la app. Excluye los detalles sobre la versión de la app y la arquitectura compatible. Ejemplos representativos:

  • Chrome Web Store: alojadas en la tienda

    Por lo general, el ID de la app de la tienda es la última parte de la ruta de acceso en la URL de la app https://chromewebstore.google.com/detail/<hyphenated-app-name>/<AppID>. Usa el nombre de la app con guiones y el ID de la app de Play Store para compilar la cadena <my-app-name>.<AppID> que se describió anteriormente.

  • Windows: Alojado en la tienda

    Por lo general, el ID de la app de la tienda es la última parte de la ruta de acceso en la URL de la app https://apps.microsoft.com/detail/<AppID>. Usa el ID de la app de Play Store para compilar la cadena <my-app-name>.<AppID> que se describió anteriormente. También se debe incluir el nombre de la app con guiones.

  • Windows: Distribución fuera de la tienda

    Las apps para Windows contienen una identidad de paquete en el manifiesto de la app: Name_Version_Architecture_ResourceID_PublisherID. Usa solo el atributo Name.

  • Xbox: Alojado en la tienda

    Por lo general, el ID de la app de la tienda es la última parte de la ruta de acceso en la URL de la app https://www.xbox.com/<region>/games/store/<hyphenated-app-name>/<AppID>. Usa el nombre de la app con guiones y el ID de la app de Play Store para compilar la cadena <my-app-name>.<AppID> que se describió anteriormente.

En el caso de los clientes de API con una gran cantidad de solicitudes a YouTube (consulta Uso y cuotas), es posible que se requieran credenciales adicionales para acceder al reproductor incorporado de YouTube.

El incumplimiento de estos requisitos puede provocar una reducción de la funcionalidad en el reproductor incorporado de YouTube.

Tipo de WebView

Cuando integres el reproductor incorporado de YouTube en una WebView, usa uno de los tipos de WebView proporcionados por el SO cuando estén disponibles. Por ejemplo:

Tamaño del reproductor de YouTube incorporado

Los reproductores insertados deben tener una ventana gráfica de al menos 200 px por 200 px. Si el reproductor muestra controles, debe tener el tamaño suficiente para mostrar los controles por completo, sin reducir la ventana gráfica por debajo del tamaño mínimo. Recomendamos que los reproductores de 16:9 tengan al menos 480 píxeles de ancho y 270 píxeles de alto.

Reproducción automática y reproducción con escritura de secuencias de comandos

En esta sección, se abordan las reproducciones automáticas. Se aplica a los reproductores incorporados de YouTube que usan el parámetro de reproductor autoplay o inician la reproducción automática de forma programática con el servicio de la API de IFrame Player de YouTube o con otro servicio de la API de YouTube.

  • Los reproductores incorporados que reproducen automáticamente un video deben iniciar la reproducción inmediatamente cuando se carga la página o tan pronto como el reproductor incorporado sea completamente visible. Sin embargo, un Cliente de API no debe iniciar una reproducción automática hasta que el reproductor esté visible y más de la mitad del reproductor se vea en la página o pantalla.

  • Una página o pantalla no debe tener más de un reproductor de YouTube que reproduzca contenido automáticamente de forma simultánea.

  • Las miniaturas de YouTube que inician la reproducción deben tener al menos 120 píxeles de ancho y 70 píxeles de alto.

Atributos del reproductor de YouTube

Los atributos y parámetros del reproductor de YouTube, incluida, por ejemplo, la apariencia de la marca de YouTube en el reproductor, se especifican en la documentación y las especificaciones de la API de YouTube (https://developers.google.com/youtube). No debes realizar cambios en el reproductor de YouTube que no se describan de forma explícita en la documentación de la API.

Marcos y superposiciones

No debes mostrar superposiciones, marcos ni otros elementos visuales delante de ninguna parte de un reproductor incorporado de YouTube, incluidos los controles del reproductor. Del mismo modo, no debes usar superposiciones, marcos ni otros elementos visuales para ocultar ninguna parte de un reproductor incorporado, incluidos los controles del reproductor.

Deslizamientos del mouse sobre zonas activas

No debes usar eventos de desplazamiento del mouse o táctiles en un reproductor de YouTube para iniciar ninguna acción en nombre del usuario, como abrir una ventana o suscribirse a un canal.

Sube videos

Si los clientes de la API permiten que los usuarios suban contenido a varias plataformas, los usuarios deben poder seleccionar y anular la selección de las plataformas a las que quieren subir sus videos.

Requisitos de los datos

Los clientes de la API que permiten a los usuarios subir videos a YouTube deben permitir que los usuarios establezcan los valores en la siguiente lista. Las propiedades que no se mencionan son opcionales.

  Nombre Descripción
Propiedades de recursos
snippet.title Obligatorio. Título del video. YouTube muestra un error si el valor supera los 100 caracteres. YouTube admite todos los caracteres UTF-8 válidos, excepto < y >.

snippet.description Obligatorio. Descripción del video. YouTube muestra un error si el valor supera los 5,000 bytes. YouTube admite todos los caracteres UTF-8 válidos, excepto < y >.
status.privacyStatus Obligatorio. Es el parámetro de configuración de privacidad del video. Los usuarios deben poder elegir si el video subido será público, privado o no listado.
Parámetros de la solicitud
onBehalfOfContentOwnerChannel Condicionalmente obligatorio. Si las credenciales de autorización de la solicitud identifican a un propietario de contenido y se configura el parámetro onBehalfOfContentOwner, el usuario de la API también debe poder especificar el canal de YouTube al que se subirá el video.

Cómo se muestran los comentarios

  Nombre Descripción
Propiedades de recursos
snippet.textDisplay Obligatorio. Es el texto del comentario. El cliente de la API debe (a) mostrar el texto completo de un comentario o una respuesta a un comentario, o (b) truncar el texto y proporcionar una forma para que el usuario pueda acceder fácilmente al texto completo desde la versión truncada.

Este requisito se aplica a todos los comentarios y respuestas a comentarios, independientemente del tipo de recurso con el que se asocien los comentarios (videos, canales, etc.).

Ten en cuenta que el valor de la propiedad snippet.topLevelComment del recurso commentThread es un recurso comment y la propiedad replies.comments[] es una lista de recursos comment. Por lo tanto, este requisito también se aplica a las propiedades snippet.topLevelComment.snippet.textDisplay y replies.comments[].snippet.textDisplay.
snippet.title
(channel)
Obligatorio (sugerencia). Es el título del canal.
  • Si el comentario se relaciona con un canal, el cliente de la API debe mostrar el nombre del canal.
  • Si el comentario se relaciona con un video, el cliente de la API debe mostrar el nombre del canal que subió el video.
snippet.title
(video)
Condicionalmente obligatorio (sugerencia) Título del video. Este valor se debe mostrar si el comentario pertenece a un video.
snippet.moderationStatus Condicionalmente obligatorio. Si el valor del parámetro moderationStatus en la solicitud a la API es heldForReview o likelySpam, la pantalla debe identificar claramente ese estado con el valor de la propiedad, un lenguaje similar (p.ej., "Este comentario está en espera de revisión"), un encabezado (p.ej., "En espera de revisión") o algún otro lenguaje inequívoco. El método commentThreads.list admite la capacidad de recuperar comentarios según su estado de moderación.

Cómo agregar comentarios

  Nombre Descripción
Propiedades de recursos
snippet.title
(channel)
Obligatorio. Es el título del canal.
  • Si el usuario agrega un comentario sobre un canal, el cliente de la API debe mostrar el nombre del canal.
  • Si el usuario agrega un comentario sobre un video, el cliente de la API debe mostrar el nombre del canal que subió el video.
snippet.title
(video)
Obligatorio. Si el usuario agrega un comentario sobre un video, el cliente de la API debe mostrar el título del video.
Otros requisitos
Comment author's channel name Obligatorio. El cliente de la API debe identificar claramente la cuenta de usuario de YouTube a la que se atribuirá el comentario. Si las credenciales de autorización de la solicitud identifican a un propietario del contenido y se configura el parámetro onBehalfOfContentOwner, el usuario de la API también debe poder especificar el canal de YouTube al que se atribuirá el comentario.

Cómo agregar respuestas a comentarios

  Nombre Descripción
Propiedades de recursos
snippet.textDisplay Obligatorio. Es el texto del comentario. El cliente de la API debe mostrar el texto del comentario al que responde el usuario de acuerdo con las reglas definidas en la sección Cómo mostrar comentarios de este documento.
snippet.title
(channel)
Obligatorio. Es el título del canal.
  • Si el usuario responde a un comentario sobre un canal, el cliente de la API debe mostrar el nombre del canal.
  • Si el usuario responde a un comentario sobre un video, el cliente de la API debe mostrar el nombre del canal que subió el video.
snippet.title
(video)
Obligatorio. Si el usuario responde a un comentario sobre un video, el cliente de la API debe mostrar el título del video.
Otros requisitos
Comment author's channel name Obligatorio. El cliente de la API debe identificar claramente la cuenta de usuario de YouTube a la que se atribuirá la respuesta al comentario. Si las credenciales de autorización de la solicitud identifican a un propietario del contenido y se configura el parámetro onBehalfOfContentOwner, el usuario de la API también debe poder especificar el canal de YouTube al que se atribuirá la respuesta al comentario.

Cómo editar o borrar respuestas a comentarios

  Nombre Descripción
Propiedades de recursos
snippet.textDisplay Obligatorio. Es el texto del comentario. El cliente de la API debe mostrar el texto del comentario que el usuario está editando o borrando de acuerdo con las reglas definidas en la sección Cómo mostrar comentarios de este documento.
snippet.title
(channel)
Obligatorio. Es el título del canal.
  • Si el usuario edita o borra un comentario sobre un canal, el cliente de la API debe mostrar el nombre del canal.
  • Si el usuario edita o borra un comentario sobre un video, el cliente de la API debe mostrar el nombre del canal que subió el video.
snippet.title
(video)
Obligatorio. Si el usuario edita o borra un comentario sobre un video, el cliente de la API debe mostrar el título del video.
Otros requisitos
Comment author's channel name Obligatorio. El cliente de la API debe identificar claramente la cuenta de usuario de YouTube a la que se atribuye el comentario.

Cómo bloquear a un usuario en el chat en vivo (o quitar el bloqueo)

  Nombre Descripción
Propiedades de recursos
snippet.title
(channel)
Obligatorio. Es el nombre del canal de YouTube al que se le prohíbe o levanta la prohibición. Además, el nombre debe vincularse al canal o también debe mostrarse la URL del canal.
Otros requisitos
Nombre del canal del autor del comentario Obligatorio. El cliente de la API debe identificar claramente la cuenta de usuario de YouTube que se usa para agregar o quitar la prohibición.