Si estás programando con el API de Twitter, tal vez te has tropezado con el error 44: media parameter is invalid, al intentar publicar un tuit acompañado de una imagen.
Probablemente no es la primera vez que te encuentras con comportamientos inesperados. Habrás visto que hay funciones que devuelven códigos de estado 200, aunque no se hayan ejecutado correctamente, o campos retweeted que valen false, aunque el tweet haya sido retuiteado.
Yo he estado trabajando principalmente en un curador de contenidos automatizado. Es decir, un bot que selecciona y publica, en su cuenta de Twitter (@AlicanteMkt), artículos sobre marketing digital (u otros temas, si se configura para ello).
Actualmente tuitea cada 24 minutos, siempre y cuando consiga contenido de valor. En consecuencia, me he tropezado con estos problemas con mas frecuencia de la deseada.
En esta ocasión me ocurrió debido a que dos de los referentes de @AlicanteMkt, publicaron, el mismo día, artículos cuya imagen principal es de aproximadamente 4 MB.
Parece increíble que existan agencias de marketing online que publican sus posts con imágenes tan grandes ¿No piensan en el tiempo de carga de las páginas, la usabilidad de la web y el SEO? Ambas son dirigidas por diseñadores gráficos, entiendo que sus prioridades son otras, pero PhotoShop ofrece excelentes herramientas para reducir el «peso» de las imágenes.
Por otro lado, tampoco es comprensible que Twitter le permita al bot subir las imágenes, y luego le impida tuitearlas.
Como ocurre en otros casos, esta situación está prevista en la documentación del API de Twitter. Pero es tan particular, que resulta confusa.
¿Cuándo se presenta el error 44?
El procedimiento para publicar tuits con imágenes mediante el API es el siguiente:
- Subir la imagen a Twitter, utilizando la función POST media/upload. Si son varias, se realiza una llamada para cada una. El ID de la imagen subida, se obtiene en el campo media_id.
- Llamar a la función POST statuses/
update colocando en el parámetro media_ids el ID de la imagen subida previeamente. Si son varias, se separan los valores con comas.
La función POST media/upload nos permite subir imágenes de hasta 5 MB y vídeos de hasta 15 MB. Sin embargo, nos advierte que, si la imagen va a ser adjuntada a un tuit, el tamaño máximo es de 3 MB.
En consecuencia, si trabajas con una imagen cuyo tamaño se encuentra entre 3 MB y 5 MB, podrás subirla a Twitter sin problemas. Pero, al intentar publicarla con POST statuses/update, obtendrás el mensaje de error 44 (media parameter is invalid).
Es importante observar que esta limitación no se aplica a la interfaz de Twitter. En ese caso, la imagen se comprime, para que cumpla con los requisitos.
¿Porqué Twitter permite subir imágenes de 5 MB si el máximo que se puede tuitear es de 3MB?
Las imágenes que subes a Twitter mediante el API, se pueden utilizar con otros fines:
- POST account/update_profile_background_image permite cambiar la imagen de fondo de tu perfil (¿hay alguien que la siga usando?). La cual debe tener un mínimo de 2048 pixeles de alto y un tamaño máximo es de 800 Kb.
- POST account/update_profile_image se utiliza para actualizar la imagen de perfil o avatar. Esta debe tener al menos 400 pixeles de ancho y máximo 700 Kb.
- POST account/update_profile_banner cambia el banner o foto del encabezado del perfil. Twitter no especifica los requisitos que debe cumplir esta imagen. Pero, en la sección Profile Images and Banners Profile Images, se observa que las dimensiones máximas con las que se almacena son 1252×626 pixeles. Sin embargo, no dice nada sobre el tamaño del archivo.
En conclusión, las imágenes entre 3 MB y 5 MB, sólo pueden utilizarse como foto del encabezado.
¿Has tenido algún problema similar con el API de Twitter? Déjame un comentario.