How to Use Ktor-Client in Your Android App

Ktor is an open-source framework for building asynchronous servers and clients in connected systems using the powerful Kotlin programming language. It runs on coroutines and was made by JetBrains.

Ktor can be compared to network library such as OkHttp and Retrofit.

Ktor is an asynchronous HTTP client that runs on several platforms. Ktor client is designed for various platforms, such as Android, Native (iOS and desktop), JVM, and JavaScript. Ktor is built on Kotlin multi-platform mobile (KMM). This means you can create both iOS and Android applications with Kotlin and share a huge part of Kotlin code for both platforms. It means that Kotlin multi-platform mobile uses Kotlin as the base code. With this, you have to use the Kotlin libraries if you want to share the code across Android and iOS. Ktor client is a Kotlin based library, thus making it easier to implement the KMM principles.

Why we use Ktor’s

As in android already have a very powerful Retrofit library so why we need it. So Answer is Retrofit library is platform-dependent and if we want to use for Multiplatform application like Android recently launch then how we can achieve from retrofit so now ktor’s comes in mind for that solution.

Ktor’s uses coroutines internally for asynchronous programming which makes our code very clean and minimal just like coroutines did with suspend functions. Moreover it is as easy to add headers, serialization, logging etc in our app, as it is with Retrofit.


This guide will help you learn more about Ktor. We will set up Ktor client to make HTTP requests to a JSON API and display the data using kotlin.

Setting up Android project for Ktor-Client

Adding the required libraries

Let’s add all the necessary libraries that we need to process and display data. We need the following libraries:

Ktor dependencies

you must add below line in the app.gradle file

plugins {
id 'kotlinx-serialization'

Also required changes in project.gradle

here ‘kotlin-multiplatform’ is required if you creating application for multiplatform otherwise you can use “kotlinx-serialization” and also classpath “org.jetbrains.kotlin:kotlin-serialization” required for serialization and deserialization purpose.

Now lets add maven “” in setting.gradle (if using gradle version 7.3.3 or later) and also need to add plugin. Here we have used both if multiple form required then we can “kotlin-multiplatform” otherwise for Android “kotlinx-serialization” will be enough.

Now create a HttpClient class for handle All type of request, but here we are only using Android client.

Now lets create a model class to use any api with annotation Serializable.

After create model lets create a API class which will handle all request.

Now we create a repository class where all required method’s will be mention.

Now create a repository implementation class which will handle all request and response.

Now in our project we can use this class to call api method and will get the success or fail response in our caller class

You can also download full source code from here.

For more detail, We will discuss more in the next part.



Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store
Abhishek Srivastava

Abhishek Srivastava


Senior Software Engineer | Android | Java | Kotlin |Xamarin Native Android |Flutter |Go