API vs SDK: Explained with Examples
Tags: api, webdev, javascript, beginners
Published: 2023-09-12 15:01:53

In this article we are going to learn what are APIs and What is an SDK?

Their differences and similarities along with detailed examples.

**API:** Application Programming Interface are a set of rules and protocols using which different types of software can communicate with each other.

API is provided by a software that gives you the ability to control the said software to get the desired result.

For example, imagine you are in an restaurant and the menu items act as on API, you can order the desired item and get it delivered without knowing how it is prepared

Like an server API can give you data regarding the users etc

**SDK:** Software Development Kit is a large set of software tools and programs that are provided by the vendor to help in development of applications using the vendor's software

In our software analogy, if the API is the menu from which you can order stuff and SDK can be compared to the kitchen itself that gives you tools and technologies to prepare any food items yourself

In essence, the SDK provides you with a more granular approch than the API does. But on the other hand you need to be more skilled in the vendors software to be able to use it.

## APIs: In Detail

As we have seen above APIs are application programming interface. These are a set of rules and protocols that are built into the software that allow us or another software to control the given software (That is whose API it is)

An example would be to recieve user data from a server API

The API would defined the methods and the data formats in which other application can request and get the data or interact with

### What are the diffrent Types of APIs

Here are three prominent types of API that are most commonly used

### Rest API (Representational State Transfer API)

This is the most commonly used types of APIs in the world. The REST API uses the HTTP methods, status code and MIME types to communicate between a client and a server.

Examples of REST API: As it is the most commonly used API in the world and it is mostly used in the client server architecture. Most all internet services including social media platforms like Twitter or Music or TV streaming like Spotify or Netflix all run on APIs

## Salient Features of REST APIs

1. Stateless
2. Client Server architecture
3. Cacheable

## GraphQL

GraphQL is a language query API developed and released by Facebook now Meta in 2015. GraphQL has been projected as an alternative to REST API but is not as popular and as widely used as REST APIs

It has been designed to be as fast as possible, giving the clients exactly the data which is requested and nothing more than that thus reducing payload and increasing speed

### Salient Features of GraphQL

Flexible Queries: Clients can specify only which data they need and thus increases speed and is also quite flexible in nature

Scheme is the single source of truth: In graphQL the Scheme is the single source of truth.

### SOAP (Simple Object Access Protocol)

SOAP relies heavily on XML and with schemas it is a very strongly typed messaging framework

It is a protocol for exchanging structured information when implementing web services

It was released in the 1990s but it's popularity declined with the advent of REST API which were better than SOAP and were widely implemented

There are four parts of SOAP API

- Envelope: What is the structure of the message
- Encoding: What are the rules to explain the type of data
- Requests: How to structure API requests
- Responses: How the server response is structured

### Salient features of SOAP


- **Standardized**: It has pre defined rules for communication of meessages via XML
- **ACID Compliant transactions:** It has support for transactional operations
- **Built in error handling:** It has built in error handling

## Real Life Example  of API

DeadSimpleChat is a Chat API and SDK provider. You can visit the DeadSimpleChat.com and try out the REST API your self

Just Click on the GetStarted page to create an account. Once you have created an account go to

deadsimplechat.com/developer/rest-api

Fetching a list of chatrooms

You can get a list of chat rooms by sending the request to

```bash
https://api.deadsimplechat.com/consumer/api/v1/chatrooms

```
You can use this api and others to create your own chat application with chat and users and moderators

Here is a sample response for your reference:

```json
{
    "passwordProtected": false,
    "enableOneToOneChat": false,
    "moderatorOnlyOneToOneChat": false,
    "enableChannels": false,
    "showNotificationForAllChannels": false,
    "enableLikeMessage": false,
    "defaultNotificationEnabled": false,
    "roomId": "x8z343Tlt",
    "name": "Demo Chat Room",
    "preModeratedChatRoom": false,
    "roomPassword": null
}

```

You can even assign users to chat using the API


## Benefits of using APIs

### Scalability

**Ability to Grow and expand:** When applications are using API they can easily scale to millions of users and scale down to as few users quickly as well.

This is because of the client server arhitecture of the API, the API fetch data from the servers which are designed to handle load hence applications with API can scale a lot

**Distributed nature of development:** Again because of the client server architecture of the API, an applications front end interface and its back end and APIs can be development by different teams in parallel

A company can also purchase a backend service from an API provider, like chat API provided by DeadSimpleChat

Here a company does not need to bother about building the back end and the scalable APIs they can purchase a subscription from DeadSimpleChat and just work on building the front-end.

**Can be distributed among different servers:** Different serves can be made to handle different API calls of the same backend service

Thus distributing the load and making the API more robust

### Flexibility

**Interoperability and easy integration:** APIs provide ways to control a software application using a set of methods and protocols.

Every API provider defines their own set of methods and protocols defines what will happen in a specific API call.

Thus a software providing APIs can be easily integrated in another software

**Modularity:** With API the application can be changed with Modularity. If one part needs to be changed it does not affect other parts of the API

**APIs are Tech Stack Agnostic:**  APIs run on the web and follow the web protocols and thus are tech stack agnostic. You can make REST API calls using any tech stack you want

## What is an SDK?

Software Development Kit is a comprehensive set of tools and programs that are used to develop specific applications using the given platform or framework whose SDK it is

For example you might integrate chat into your application or website using the DeadSimpleChat [Chat SDK](https://deadsimplechat.com)

You can configure the chat functionality and provide deep integration into your website or app using the SDK thus it is used to develop chat for your website or app

## Components of an SDK
**Libraries:** Libraries are pre written code or methods that you can use to easy implement functionality in your app. They provide standared solutions so you do not have to write much code

**Code Samples:** Code samples also come under SDK because they teach a developer how to achive a functionality to integration with the help of pre written code with best practices

**Documentation:** Documentation is also a part of the SDK because it assists the developer on how to use the methods provided in the SDK

**Development tools:** Development tools such as emulators and software simulators are also a part of the SDK as they help developer envision how their software will work and look like

**APIs:** SDKs may also contain some APIs to control certain parts of the application.

**Example:** Xcode, Android Studio and DeadSimpleChat SDK are all examples of SDK

## Real Life Example: Adding Chat to your Mobile App or website using DeadSimpleChat SDK

DeadSimpleChat JavaScript Chat SDK gives you a means to integrate chat in your website or mobile app

In this section we will see a real life example of how a SDK works which will help you differentiate between chat api and sdk

### Setup and integration

To import the chat sdk simply paste the below given script tag in the head section of your website

```bash
<script src="https://cdn.deadsimplechat.com/sdk/1.0/dschatsdk.min.js"></script>

```
### Initializing the chat

The chat works through an iFrame. You can paste the iframe code in your webpage like

```bash
<iframe id="chat-frame" src="https://deadsimplechat.com/sq94k9OZV" width="100%" height="600px"></iframe>

```

**Note:** This is an example code, when working on your chat application your specific code will be available on your Dashboard

### Connecting to the SDK

Now the next step is to connect the chat iframe to the SDK , this can be done using the below code

```bash
(async () => {
    const sdk = new DSChatSDK("sq94k9OZV", "chat-frame", "YOUR_PUBLIC_API_KEY");
    await sdk.connect();
})();
```
### Issuing commands

Now that we have connected to the SDK we can issue the commands. Here is an basic example of how you can listen to events and issues commands using an SDK

```bash
// Listen to the "message" event
sdk.on("message", (message) => {
    console.log("New Message Arrived", message);
});

// Joining the chat room
sdk.join({username: "John"});

// Sending a message
sdk.sendMessage("Hello World");
```

## Benefits of SDK
### Tools and Libraries to speed up development

One of the major advantages of an SDK is that it has all the ready made tools and libraries available to quickly develop your application

For example: You want to send a message in the chat, use the DeadSimpleChat SDK and call the sendMessage method with the message and the user from which you want to send the message and that's it. You have sent a message in the chat

### Streamline Integration:

SDKs are for easy integration and development of application. they provide pre build methods and development tools to easily integrate the software in your application

### Few Bugs

As the SDK provides standerdized methods for doing something in the software. These methods are usually throughly tested and there are no other ways to integrate other than use these methods. This results in fewer bugs

### Standardization

SDKs provide standared methods and tools for implementing functionalities and developing the software

Which also results in better aherence to coding standards

### Support and developer community

### Regular updates
As the software provider provides the developers with the SDK, they also provide it with regular updates including addition of new featues and bug fixes etc

Thus the support is always provided by the SDK provider

### Documentation
The SDKs always come with proper written documentation which is also provided by the SDK provider

Documentation is regarding how each method and tool works in the SDK thus developers studying the documentation have proper knowledge and are able to use the SDK properly

| Attribute        | API                                       | SDK                                                                         |
|------------------|-------------------------------------------|-----------------------------------------------------------------------------|
| Primary Purpose  | Client and server Comunication            | Toolkit for creating software                                               |
| Primary Use-case | Data retrieval, functionality integration | Platform-specific development, providing standard methods and functionality |
| Abstraction      | High-level interface                      | Lower-level access with tools, libraries, and sometimes included APIs       |
|                  |                                           

### API Application Programming Interface

What is?

An API is a set of protocols and methods that allow an application to communicate with another application or server. It defines methods by which application can send data and messages to each other

Usage

Interoperability: APIs are interoperable, because they work on the web and hence can easily work with any tech stack. SDKs are normally rigid and platform specific

Data Access: APIs are often used to provide data from the server to the client especially the REST API are used to provide data from the server to the client

Extend the functionality: You can easily extend the functionality of an application by using the APIs


### SDK Software Development Kit

What is?

SDK is a set of software development tools including libraries, documentation, methods  and pre built code that is used to develop or integrate software

Usage

Platform Specific: Unlike APIs which can work with any tech stack. The SDKs are often platform specific and will only work with a specific platform

Fast development: SDKs provide a standarad tools and methods for doing common tasks and hence lead to faster development time

Standardization: SDKs have pre built methods and tools to achieve common tasks such as adding a user, sending a message etc and hence you do not have to build common functionalities from scratch and can easily build software

## Need [Chat API ](https://deadsimplechat.com)for your website or app

[DeadSimpleChat](https://deadsimplechat.com) is an Chat API provider

Add Scalable Chat to your app in minutes
10 Million Online Concurrent users
99.999% Uptime
Moderation features
1-1 Chat
Group Chat
Fully Customizable
Chat API and SDK
Pre-Built Chat

## Conclusion

In this article we learned about what are APIs and what are SDKs. We also learned about how they are used with examples.

I hope you liked the article and thank you for reading