What is an API? Explained in plain English
Tags: beginners, webdev, codenewbie, programming
Published: 2020-11-02 17:41:54

---
title: What is an API? Explained in plain English
published: true
description: The explanation for beginners without metaphors about waiters or taxi drivers!
tags: beginners, webdev, codenewbie, programming
cover_image: https://dev-to-uploads.s3.amazonaws.com/i/fk7295q5xizp4iaqmt73.jpg
canonical_url: https://alanmynah.com/blog/what-is-an-api
---
<i><span>Photo by <a href="https://unsplash.com/@k8townsend?utm_source=unsplash&amp;utm_medium=referral&amp;utm_content=creditCopyText">Kate Townsend</a> on <a href="https://unsplash.com/s/photos/venice-waiter?utm_source=unsplash&amp;utm_medium=referral&amp;utm_content=creditCopyText">Unsplash</a></span><i>

## What exactly is an API?

Any aspiring developer, product(project) manager new to the software industry, eventually gets hit with the term `API` and when questioned about the exact meaning of this acronym, encounters a lot of hand-waving and generic statements. Add all sorts of metaphors about waiters, beers (possibly because it makes people think of IPA), and waiters bringing your unwilling teacher's favourite beverages.

> `API` stands for - **A**pplication **P**rogramming **I**nterface

Officially, `API` stands for - **A**pplication **P**rogramming **I**nterface, but that doesn't clarify anything, does it? Otherwise, you wouldn't be reading this.

## Start from `UI`

Let's start from some solid ground. When you go to any website, you see a collection of buttons, links, dropdowns, text fields, and date pickers. As a whole, it is a way for us, users, to interact with the system.

> **U**ser **I**nterfaces are for us, users, to interact with systems.

We say it's a **U**ser **I**nterface. Netflix has one, when you go to watch a film on your laptop, you use a keyboard and a mouse to interact with the `UI`. On your TV, it's a clunky remote. And on your phone, you use your fingers to tap on the screen.

Some cars have stereos that get operated with knobs and buttons and more modern versions have touchscreens. All of these are **U**ser **I**nterfaces.

## `UI` is a gateway into `API`

`API`s are ways for us, developers, to interact with programs.

> **A**pplication **P**rogramming **I**nterfaces, are for us, developers, to interact with systems.

Users interact with `UI`s that developers wrote by interacting with APIs that other (or same) developers created.

Developers write programs that expose some interactive points for others to use.

## Why create API?

I can sense a question: "Why to create a program to interact with another program that does what I want? Why not have one?"

`UI`s only care about creating a pretty, intuitive, and safe environment for your users to access the services you provide.

`API`s only care about providing access to these services in a secure, consistent, and reasonably fast manner.

Mixing the two is possible, but the industry found that [separating concerns](https://en.wikipedia.org/wiki/Separation_of_concerns#:~:text=In%20computer%20science%2C%20separation%20of,code%20of%20a%20computer%20program.) is a pretty good idea.

## Summary

`API` is simply a catch-all term for interaction points exposed by one program for developers to use to create their own.

The reason for such monumental confusion is because the term 'API' is oftentimes used proverbially and sometimes as a replacement for words like 'system', 'services', 'backend', or your companies moniker, like 'the beast', 'monster', 'flake', etc.

Hope this clears things up and if you've still got some questions, feel free to get in touch!