How to Update the Twitter Profile Banner using the Twitter API using Netlify Functions

Posted on October 4, 2021

You might be interested also to this post.

Here the code to create a Netlify Functions that receives a URL of an image and update your Twitter Profile Banner.

You need a Twitter Developer Account and relative credentials.

Twitter setup and dependencies:

const axios = require('axios')
const Twitter = require('twitter')

const client = new Twitter({
  consumer_key: process.env.TWITTER_CONSUMER_KEY,
  consumer_secret: process.env.TWITTER_CONSUMER_SECRET,
  access_token_key: process.env.TWITTER_ACCESS_TOKEN_KEY,
  access_token_secret: process.env.TWITTER_ACCESS_TOKEN_SECRET
})

The function handler:

exports.handler = async (event, context) => {
    
  // get the remote image as binary buffer
  const response = await axios(url, { responseType: 'arraybuffer' })
  
  // convert it as Base64, since it's required by the Twitter API
  const buffer = Buffer.from(response.data, 'binary').toString('base64')
    
  // call the Twitter API
  const res = await client.post('account/update_profile_banner', { banner: buffer })

  return {
    headers,
    statusCode: 200,
    body: JSON.stringify({ok:true})
  }
}

For brevity, I'm not checking and validating input values, but you should do it!