// Created on savesnippets.com ยท https://savesnippets.com/UFyiTscd0KCYJR import io.ktor.client.* import io.ktor.client.engine.cio.* import io.ktor.client.plugins.contentnegotiation.* import io.ktor.client.request.* import io.ktor.client.call.* import io.ktor.http.* import io.ktor.serialization.kotlinx.json.* import kotlinx.coroutines.runBlocking import kotlinx.serialization.Serializable @Serializable data class NewUser(val name: String, val email: String) @Serializable data class CreatedUser(val id: Int, val name: String, val email: String) val client = HttpClient(CIO) { install(ContentNegotiation) { json() } // auto JSON (de)serialization expectSuccess = true } suspend fun createUser(req: NewUser): CreatedUser = client.post("https://api.example.com/users") { contentType(ContentType.Application.Json) setBody(req) }.body() // <-- typed deserialize via body() fun main() = runBlocking { val user = createUser(NewUser("Alice", "a@x.com")) println(user) }