You might have noticed in any of our reviews or articles about social media marketing tools that cater to Instagram that we often refer to the Instagram API. Indeed, many of the products that lack Instagram capabilities often mention the limitations they face as a result of Instagram's API. Some developers clearly have better API access than others.
But it wasn't always this way. Facebook (the company) provided reasonably open access to the APIs for both Facebook and Instagram until late 2018. However, the unauthorized activities of particular groups of people caused Facebook to take a look at the access it was giving developers to its products. They initially tightened up access to Facebook and Instagram APIs, before changing them completely, and now taking a closer look at why people want to use the APIs and how they intend to use them.
Our Guide to Recent Changes to the Instagram API:
What is an API?
While most of us have probably seen references to Instagram's API (and probably API's for other types of software too), the average person doesn't really understand what an API is. Technically, the letters stand for Application Programming Interface, although that name doesn’t make things any clearer.
To understand the term, you have to realize the basics of how the internet works. Websites live, as code, on giant computers, called servers. Although anybody could technically store and run their website from a computer as home (a “local server”), in reality, most sites live on large specialist servers. This is just as true for Facebook and Wikipedia, as it is for Joe Smith's personal website or the website for your local burger bar.
While we don't tend to type full web addresses now (our browsers do the work for us behind the scenes, as do the apps we use for many popular sites like Instagram), every time we click on a link we are technically sending a request to the site's remote server.
As far as your browser or app is concerned, the part of a website's server it interacts with is its Application Programming Interface (API). So every time you go to Instagram in a server, open the Instagram app, and click or tap on an Instagram link, you are interacting with Instagram’s API. The API is the section of the server that receives requests and sends responses.
APIs allow visitors to a website to perform particular actions. They also act as gatekeepers because they stop site visitors from doing certain acts. You can only interact with Instagram in ways that their API permits.
Why Instagram Made Changes to its API in 2018 and 2019
Instagram's parent company, Facebook, encountered a security problem from 2015 to 2018 when a researcher from Cambridge Analytica, a political consulting firm, accessed data on millions of Facebook users for a British PR firm, SCL Group, to use in the Trump presidential campaign. Facebook exposed the raw data of 87 million Facebook users.
Aleksandr Kogan, a Russian-American researcher at Cambridge University, built a Facebook app that was a quiz. It collected data from the people who took the quiz, and it also received raw data from their Facebook friends, thanks to a loophole in Facebook’s API.
At this point, Cambridge Analytica broke Facebook's rules by selling the data, but that didn't stop their access to it.
The news became public when a former Cambridge Analytica employee went public as a whistleblower in early 2018.
The fallout of this data breach was gigantic, with Facebook’s founder and CEO, Mark Zuckerberg, having to testify in front of the United States Congress. In May 2019, the FTC voted to fine Facebook $5 billion for the data breach.
One of the flow-on effects was that Facebook severely restricted access to the APIs on its family of products, including Instagram. They shut down the existing Instagram API in 2018, limiting what third-party apps could do with Instagram. Facebook also restricted access to the API on its flagship product at the same time, making things tough for vendors wanting to integrate access to the Facebook family of apps into their products.
You might have noticed from our reviews of social media management platforms, that not all the platforms offer equal Instagram capabilities. Things are improving now, but for a while, there was a clear line – some products allowed you to carry out the entire Instagram scheduling process, just as you can the other social networks. Other platforms, however, will enable you to schedule your Instagram posts in advance, but they can only send you a reminder to manually make your Instagram posts. The reason for this delineation is the change in the API. The first products that offered Instagram scheduling were able to include full publishing. But once Instagram restricted its API access, other firms couldn’t offer Instagram publishing to their clients. The latest API has allowed more flexibility, but it is dependent on Instagram manually checking application, and that is taking a long time for some products.
Instagram’s New Graph API
Facebook closed down access to its original API in 2018. For a while, the situation was muddled, and this caused the inconsistencies referred to above. Most of the apps that had previously had access to Instagram's API retained it, but new apps struggled to receive approval.
Facebook and Instagram replaced their old API with a new one called Graph API. It is now the primary way for apps to read and write to the Facebook social graph. All of their SDKs and products (including Instagram) interact with the Graph API in some way, and their other APIs are extensions of the Graph API.
Developers still find that it is much harder to connect their products to Instagram, as the new Graph API is much more restrictive than the old one. You can't collect data without using Instagram's new Graph API, and Instagram restricts use. You need to ask for approval to use Instagram data, and there are extensive processes developers have to go through.
It was notable that when we reviewed the social media management platform, Socialoomph, in mid-2019, that Instagram was the only major social network they didn’t cater for. You could use Socialoomph to schedule Facebook posts, but the process was considerably harder than for any of the competition. End users had to apply to the Facebook Development team to gain access to the API, and Facebook treated each person's use of Socialoomph as a separate development, requiring each end-user to go through the full set of tests they require of software developers. If this is a sign of things to come for Facebook and Instagram, we may see fewer new apps in the future that rely on API access.
How Developers Can Use the New API
Although the Graph API is far more restricted than the old API, it does offer developers some hope. Third-party Instagram apps aren’t yet dead. You will need either an Instagram Business Account or an Instagram Creator Account to access any information collected, however.
The Instagram Graph API still allows developers to build (approved) apps that interact with Instagram. The API can be used to get and publish media, manage and reply to comments on your media, identify media where you have been @mentioned by other Instagram users, find hashtagged media, and get basic metadata and metrics about other Instagram Businesses and Creators.
The Instagram Graph API targets Instagram Businesses and Creators who need insight into, and full control over, all of their social media interactions. If you are building an app for consumers or you only need to get an app user's basic profile information, photos, and videos, you could consider using the Instagram Basic Display API instead.
Instagram considers the most common uses of the Graph API to be:
- getting and managing published photos, videos, and Stories
- getting basic data about other Instagram Business users and Creators
- moderating comments and their replies
- measuring media and profile interaction
- discovering hashtagged media
- discovering @mentions
- publishing photos and videos (currently in closed beta)
Instagram Basic Display API
Instagram now has an alternative API you can use to get basic profile information, photos, and videos in your Instagram accounts. You can use the Instagram Basic Display API to access any type of Instagram account, but it only provides read-access to basic data.
It has minimal capabilities, however, and doesn't support Stories, comments, promoted posts, or insights.
Steps to Using the New API
If you wish to use the Instagram Graph API to interact with Instagram and collect Instagram data, you need to create an account as a Facebook Developer. To gain access to a user's data, you need an access token. An access token is a string that identifies a user, app, or Page and can be used by the app to make graph API calls. When someone connects with an app using Facebook/Instagram Login and approves the request for permissions, the app obtains an access token that provides temporary, secure access to Facebook/Instagram APIs.
Once connected, any Facebook User who can perform Tasks on behalf of that Page will be able to grant your app a User access token, which you can then include in API requests.
To gain access to the Graph API, a developer will need:
- An Instagram Business Account or Instagram Creator Account
- A Facebook Page connected to that account
- A Facebook Developer account that can perform Tasks on that Page
- A registered Facebook App with Basic settings configured
Before you switch your app to Live mode, Facebook/Instagram needs to make sure that you will use their products and data in an approved manner. To achieve this goal, they require many apps to undergo App Review. The process involves specifying the type of data your app will be requesting from users and describing how you will use that data. Based on your submission, they may follow up and ask you to complete additional steps. If you switch your app to Live mode before you have been approved, you will lose access to all data, including that of your app, test users, test pages, and app developers and app admins.