Instagram – the Facebook-owned photo-sharing app with 400 million users – is a great resource for digital signage. More public and focused than Facebook, more visual than Twitter, and more users than any alternative, Instagram is a great way to get users to interact with your screens. But Instagram is being a bit of a pain in the ass lately. They’ve updated their platform, and it’s not an enjoyable transition for developers – and we only have until June 1st, 2016 to get our ducks in a row.
Instagram added video clips to its service in 2013. In 2015, media no longer had to be square. Both changes required designers and developers using the Instagram API to make some changes. But this round of changes is less visible to the average user, and much worse for developers.
‘Simplified Platform Policy’
The first change they advertise is about the ‘use cases’ that are permitted from now on. It boils down to just three piles:
- For the end-user: Apps to expose your photos to a 3rd party service (for printing or publishing elsewhere)
- For companies: Apps to ‘monitor brands’ and assist with advertising
- For broadcasters: Apps to display content
Unsaid – if your app doesn’t fit in those three cases, Instagram doesn’t want you anymore. This – brutally – includes widgets and plugins for websites. Embedding Instagram posts around your brand on your site is no longer a simple matter of installing a Drupal or WordPress plugin.
‘New Review Process’
Once upon a time, you could register an application and hammer the API with whatever requests you needed. You could be up and running from scratch in minutes.
Now, each application is shoved in a sandbox that acts like you are the only person to ever create an Instagram account, and you’ve only taken 20 photos. You must develop your entire application inside that sandbox, with those incredibly tight restrictions, before starting the review process.
And the review process is brutal.
Instagram will reject your application if it’s a ‘one-off’ application – they are encouraging reusable platforms, and denying experiments and single-use applications. Which means if you developed something for using Instagram in-house only, Instagram will deny you access past June 1. Tough luck.
Instagram will also reject the previously mentioned widgets and plugins, so don’t even bother.
The requirements are brutal for any company; Instagram is under no obligation to tell you specifics about why your application was rejected, and can reject it based on it’s own internal interpretation of it’s own rules. And the requirement of a video showing the application in use is unfair, to put it lightly. Before you know for sure if you can use Instagram’s API, you have to either build a working version of your application, or provide a mock up which runs the risk of getting you in hot water with Instagram down the road.
‘More Community Control’
The third and final thing they mention in their release is that two API endpoints are being killed off. Both endpoints were probably too permissive in the first place, and apps that were basing their main activity on those endpoints most likely won’t make it through the new approval process. But for a very specific pile of developers, it’s devastating.
There are more changes to the API, only some of which are mentioned in the platform changelog. Of interest to some developers is the fact that every endpoint now requires an ‘access token’ – so a user authorization – instead of the old method where some endpoints were allowed to be viewed with just the ‘client id’. So if your application is currently ‘userless’ – for example, if it just displays content around one hashtag, like digital signage often does – you now have to build a way to add users to your application.
Another obnoxious change (depending on your implementation) – media objects no longer include information about either comments or likes. And there’s no way to ask for comment or like information about media in aggregate, you have to run a query about each item, once for comments and once more for likes. And if you wanted the same information about likes as you do comments – for example, the profile picture of who liked the photo – that’s another request for each like.
So if each request returns the current max of 33 items, and if each item has a single comment and a single like, to get information about what was said, who liked it, and what they look like, it’s gone from a single API request to a whopping 100.
It’s Not All Bad… If…
If you started using the Instagram API after November 2015, none of this matters – it’s normal for you. How lucky. For developers and companies that have been using it longer, these changes can fall anywhere from annoying to business-ending.
From my personal experience? It tacked on two weeks of development, and an ongoing cost since we’re running far more API requests than we ever were before. It’s a pain in the ass, and the only relief comes from knowing that I won’t have to go through this process again any time soon.
These changes are in contrast to the changes Twitter made in 2013. Twitter made the business decision to make their entire platform more open to developers, with the understanding that people use their platform in ways they never envisioned. Instagram is sliding the other direction, closing off information and letting fewer developers use the data, and only for purposes on an approved list.
One of the two companies will blink, and move their policies towards the other. As a developer, I hope that developers rally around the infinite possibilities of Twitter. And I hope Instagram reconsiders their review policies. Approving each use case and denying one-off applications is a great way to quash original thinking.
Header photograph by Olga, licensed under Creative Commons