---
title: "API Use Cases"
description:
  "Step-by-step tutorials for securing your API with JWT authentication or a
  shared secret header, with code examples for every major language and
  framework."
canonicalUrl: "https://zuplo.com/use-cases"
sourceUrl: "https://zuplo.com/use-cases"
pageType: "other"
generatedAt: "2026-09-04"
---

# API Integration Tutorials

> Step-by-step code examples for securing and integrating your API across every
> major language and framework.

200 tutorials, searchable and filterable by language. Each covers one of two
approaches:

- **JWT authentication** — secure the API using JWT authentication with JWKS.
- **Shared secret header** — secure the API using a shared secret.

Available for: C, C#, C++, Dart, Elixir, Erlang, Go, Java, Java/Kotlin,
Java/Polyglot, Java/Scala, JavaScript, Kotlin, Lua, Perl, PHP, Python, Ruby,
Rust, Scala, Swift, and TypeScript.

## Tutorials by language

### C

| Framework          | JWT authentication                                                 | Shared secret header                                                 |
| ------------------ | ------------------------------------------------------------------ | -------------------------------------------------------------------- |
| Apache HTTP Server | [Tutorial](/use-cases/api-key-auth/c/apachehttpserver/jwt-backend) | [Tutorial](/use-cases/api-key-auth/c/apachehttpserver/secure-header) |
| HAProxy            | [Tutorial](/use-cases/api-key-auth/c/haproxy/jwt-backend)          | [Tutorial](/use-cases/api-key-auth/c/haproxy/secure-header)          |
| Nginx              | [Tutorial](/use-cases/api-key-auth/c/nginx/jwt-backend)            | [Tutorial](/use-cases/api-key-auth/c/nginx/secure-header)            |

### C#

| Framework    | JWT authentication                                                  | Shared secret header                                                  |
| ------------ | ------------------------------------------------------------------- | --------------------------------------------------------------------- |
| ASP.NET Core | [Tutorial](/use-cases/api-key-auth/csharp/aspnetcore/jwt-backend)   | [Tutorial](/use-cases/api-key-auth/csharp/aspnetcore/secure-header)   |
| Carter       | [Tutorial](/use-cases/api-key-auth/csharp/carter/jwt-backend)       | [Tutorial](/use-cases/api-key-auth/csharp/carter/secure-header)       |
| NancyFX      | [Tutorial](/use-cases/api-key-auth/csharp/nancyfx/jwt-backend)      | [Tutorial](/use-cases/api-key-auth/csharp/nancyfx/secure-header)      |
| ServiceStack | [Tutorial](/use-cases/api-key-auth/csharp/servicestack/jwt-backend) | [Tutorial](/use-cases/api-key-auth/csharp/servicestack/secure-header) |

### C++

| Framework | JWT authentication                                      | Shared secret header                                      |
| --------- | ------------------------------------------------------- | --------------------------------------------------------- |
| Envoy     | [Tutorial](/use-cases/api-key-auth/c/envoy/jwt-backend) | [Tutorial](/use-cases/api-key-auth/c/envoy/secure-header) |

### Dart

| Framework | JWT authentication                                             | Shared secret header                                             |
| --------- | -------------------------------------------------------------- | ---------------------------------------------------------------- |
| Dart Frog | [Tutorial](/use-cases/api-key-auth/dart/dartfrog/jwt-backend)  | [Tutorial](/use-cases/api-key-auth/dart/dartfrog/secure-header)  |
| Serverpod | [Tutorial](/use-cases/api-key-auth/dart/serverpod/jwt-backend) | [Tutorial](/use-cases/api-key-auth/dart/serverpod/secure-header) |
| Shelf     | [Tutorial](/use-cases/api-key-auth/dart/shelf/jwt-backend)     | [Tutorial](/use-cases/api-key-auth/dart/shelf/secure-header)     |

### Elixir

| Framework | JWT authentication                                             | Shared secret header                                             |
| --------- | -------------------------------------------------------------- | ---------------------------------------------------------------- |
| Phoenix   | [Tutorial](/use-cases/api-key-auth/elixir/phoenix/jwt-backend) | [Tutorial](/use-cases/api-key-auth/elixir/phoenix/secure-header) |

### Erlang

| Framework | JWT authentication                                            | Shared secret header                                            |
| --------- | ------------------------------------------------------------- | --------------------------------------------------------------- |
| Cowboy    | [Tutorial](/use-cases/api-key-auth/erlang/cowboy/jwt-backend) | [Tutorial](/use-cases/api-key-auth/erlang/cowboy/secure-header) |

### Go

| Framework   | JWT authentication                                            | Shared secret header                                            |
| ----------- | ------------------------------------------------------------- | --------------------------------------------------------------- |
| Beego       | [Tutorial](/use-cases/api-key-auth/go/beego/jwt-backend)      | [Tutorial](/use-cases/api-key-auth/go/beego/secure-header)      |
| Buffalo     | [Tutorial](/use-cases/api-key-auth/go/buffalo/jwt-backend)    | [Tutorial](/use-cases/api-key-auth/go/buffalo/secure-header)    |
| Caddy       | [Tutorial](/use-cases/api-key-auth/go/caddy/jwt-backend)      | [Tutorial](/use-cases/api-key-auth/go/caddy/secure-header)      |
| Chi         | [Tutorial](/use-cases/api-key-auth/go/chi/jwt-backend)        | [Tutorial](/use-cases/api-key-auth/go/chi/secure-header)        |
| Echo        | [Tutorial](/use-cases/api-key-auth/go/echo/jwt-backend)       | [Tutorial](/use-cases/api-key-auth/go/echo/secure-header)       |
| Fiber       | [Tutorial](/use-cases/api-key-auth/go/fiber/jwt-backend)      | [Tutorial](/use-cases/api-key-auth/go/fiber/secure-header)      |
| Gin         | [Tutorial](/use-cases/api-key-auth/go/gin/jwt-backend)        | [Tutorial](/use-cases/api-key-auth/go/gin/secure-header)        |
| GoFr        | [Tutorial](/use-cases/api-key-auth/go/gofr/jwt-backend)       | [Tutorial](/use-cases/api-key-auth/go/gofr/secure-header)       |
| Gorilla Mux | [Tutorial](/use-cases/api-key-auth/go/gorillamux/jwt-backend) | [Tutorial](/use-cases/api-key-auth/go/gorillamux/secure-header) |
| Iris        | [Tutorial](/use-cases/api-key-auth/go/iris/jwt-backend)       | [Tutorial](/use-cases/api-key-auth/go/iris/secure-header)       |
| KrakenD     | [Tutorial](/use-cases/api-key-auth/go/krakend/jwt-backend)    | [Tutorial](/use-cases/api-key-auth/go/krakend/secure-header)    |
| Revel       | [Tutorial](/use-cases/api-key-auth/go/revel/jwt-backend)      | [Tutorial](/use-cases/api-key-auth/go/revel/secure-header)      |
| Traefik     | [Tutorial](/use-cases/api-key-auth/go/traefik/jwt-backend)    | [Tutorial](/use-cases/api-key-auth/go/traefik/secure-header)    |
| Tyk         | [Tutorial](/use-cases/api-key-auth/go/tyk/jwt-backend)        | [Tutorial](/use-cases/api-key-auth/go/tyk/secure-header)        |

### Java

| Framework            | JWT authentication                                                      | Shared secret header                                                      |
| -------------------- | ----------------------------------------------------------------------- | ------------------------------------------------------------------------- |
| Dropwizard           | [Tutorial](/use-cases/api-key-auth/java/dropwizard/jwt-backend)         | [Tutorial](/use-cases/api-key-auth/java/dropwizard/secure-header)         |
| Helidon              | [Tutorial](/use-cases/api-key-auth/java/helidon/jwt-backend)            | [Tutorial](/use-cases/api-key-auth/java/helidon/secure-header)            |
| Micronaut            | [Tutorial](/use-cases/api-key-auth/java/micronaut/jwt-backend)          | [Tutorial](/use-cases/api-key-auth/java/micronaut/secure-header)          |
| Quarkus              | [Tutorial](/use-cases/api-key-auth/java/quarkus/jwt-backend)            | [Tutorial](/use-cases/api-key-auth/java/quarkus/secure-header)            |
| Spark Java           | [Tutorial](/use-cases/api-key-auth/java/sparkjava/jwt-backend)          | [Tutorial](/use-cases/api-key-auth/java/sparkjava/secure-header)          |
| Spring Boot          | [Tutorial](/use-cases/api-key-auth/java/springboot/jwt-backend)         | [Tutorial](/use-cases/api-key-auth/java/springboot/secure-header)         |
| Spring Cloud Gateway | [Tutorial](/use-cases/api-key-auth/java/springcloudgateway/jwt-backend) | [Tutorial](/use-cases/api-key-auth/java/springcloudgateway/secure-header) |
| Zuul                 | [Tutorial](/use-cases/api-key-auth/java/zuul/jwt-backend)               | [Tutorial](/use-cases/api-key-auth/java/zuul/secure-header)               |

### Java/Kotlin

| Framework | JWT authentication                                                 | Shared secret header                                                 |
| --------- | ------------------------------------------------------------------ | -------------------------------------------------------------------- |
| Javalin   | [Tutorial](/use-cases/api-key-auth/javakotlin/javalin/jwt-backend) | [Tutorial](/use-cases/api-key-auth/javakotlin/javalin/secure-header) |

### Java/Polyglot

| Framework | JWT authentication                                                 | Shared secret header                                                 |
| --------- | ------------------------------------------------------------------ | -------------------------------------------------------------------- |
| Vert.x    | [Tutorial](/use-cases/api-key-auth/javapolyglot/vertx/jwt-backend) | [Tutorial](/use-cases/api-key-auth/javapolyglot/vertx/secure-header) |

### Java/Scala

| Framework | JWT authentication                                              | Shared secret header                                              |
| --------- | --------------------------------------------------------------- | ----------------------------------------------------------------- |
| Lagom     | [Tutorial](/use-cases/api-key-auth/javascala/lagom/jwt-backend) | [Tutorial](/use-cases/api-key-auth/javascala/lagom/secure-header) |

### JavaScript

| Framework | JWT authentication                                                   | Shared secret header                                                   |
| --------- | -------------------------------------------------------------------- | ---------------------------------------------------------------------- |
| Express   | [Tutorial](/use-cases/api-key-auth/javascript/express/jwt-backend)   | [Tutorial](/use-cases/api-key-auth/javascript/express/secure-header)   |
| Fastify   | [Tutorial](/use-cases/api-key-auth/javascript/fastify/jwt-backend)   | [Tutorial](/use-cases/api-key-auth/javascript/fastify/secure-header)   |
| Hapi      | [Tutorial](/use-cases/api-key-auth/javascript/hapi/jwt-backend)      | [Tutorial](/use-cases/api-key-auth/javascript/hapi/secure-header)      |
| Koa       | [Tutorial](/use-cases/api-key-auth/javascript/koa/jwt-backend)       | [Tutorial](/use-cases/api-key-auth/javascript/koa/secure-header)       |
| Meteor    | [Tutorial](/use-cases/api-key-auth/javascript/meteor/jwt-backend)    | [Tutorial](/use-cases/api-key-auth/javascript/meteor/secure-header)    |
| Moleculer | [Tutorial](/use-cases/api-key-auth/javascript/moleculer/jwt-backend) | [Tutorial](/use-cases/api-key-auth/javascript/moleculer/secure-header) |
| Restify   | [Tutorial](/use-cases/api-key-auth/javascript/restify/jwt-backend)   | [Tutorial](/use-cases/api-key-auth/javascript/restify/secure-header)   |
| Sails.js  | [Tutorial](/use-cases/api-key-auth/javascript/sailsjs/jwt-backend)   | [Tutorial](/use-cases/api-key-auth/javascript/sailsjs/secure-header)   |
| Total.js  | [Tutorial](/use-cases/api-key-auth/javascript/totaljs/jwt-backend)   | [Tutorial](/use-cases/api-key-auth/javascript/totaljs/secure-header)   |

### Kotlin

| Framework | JWT authentication                                            | Shared secret header                                            |
| --------- | ------------------------------------------------------------- | --------------------------------------------------------------- |
| Http4k    | [Tutorial](/use-cases/api-key-auth/kotlin/http4k/jwt-backend) | [Tutorial](/use-cases/api-key-auth/kotlin/http4k/secure-header) |
| Ktor      | [Tutorial](/use-cases/api-key-auth/kotlin/ktor/jwt-backend)   | [Tutorial](/use-cases/api-key-auth/kotlin/ktor/secure-header)   |

### Lua

| Framework | JWT authentication                                        | Shared secret header                                        |
| --------- | --------------------------------------------------------- | ----------------------------------------------------------- |
| Kong      | [Tutorial](/use-cases/api-key-auth/lua/kong/jwt-backend)  | [Tutorial](/use-cases/api-key-auth/lua/kong/secure-header)  |
| Lapis     | [Tutorial](/use-cases/api-key-auth/lua/lapis/jwt-backend) | [Tutorial](/use-cases/api-key-auth/lua/lapis/secure-header) |

### Perl

| Framework   | JWT authentication                                               | Shared secret header                                               |
| ----------- | ---------------------------------------------------------------- | ------------------------------------------------------------------ |
| Catalyst    | [Tutorial](/use-cases/api-key-auth/perl/catalyst/jwt-backend)    | [Tutorial](/use-cases/api-key-auth/perl/catalyst/secure-header)    |
| Mojolicious | [Tutorial](/use-cases/api-key-auth/perl/mojolicious/jwt-backend) | [Tutorial](/use-cases/api-key-auth/perl/mojolicious/secure-header) |

### PHP

| Framework | JWT authentication                                          | Shared secret header                                          |
| --------- | ----------------------------------------------------------- | ------------------------------------------------------------- |
| CakePHP   | [Tutorial](/use-cases/api-key-auth/php/cakephp/jwt-backend) | [Tutorial](/use-cases/api-key-auth/php/cakephp/secure-header) |
| FuelPHP   | [Tutorial](/use-cases/api-key-auth/php/fuelphp/jwt-backend) | [Tutorial](/use-cases/api-key-auth/php/fuelphp/secure-header) |
| Laminas   | [Tutorial](/use-cases/api-key-auth/php/laminas/jwt-backend) | [Tutorial](/use-cases/api-key-auth/php/laminas/secure-header) |
| Laravel   | [Tutorial](/use-cases/api-key-auth/php/laravel/jwt-backend) | [Tutorial](/use-cases/api-key-auth/php/laravel/secure-header) |
| Lumen     | [Tutorial](/use-cases/api-key-auth/php/lumen/jwt-backend)   | [Tutorial](/use-cases/api-key-auth/php/lumen/secure-header)   |
| Phalcon   | [Tutorial](/use-cases/api-key-auth/php/phalcon/jwt-backend) | [Tutorial](/use-cases/api-key-auth/php/phalcon/secure-header) |
| Slim      | [Tutorial](/use-cases/api-key-auth/php/slim/jwt-backend)    | [Tutorial](/use-cases/api-key-auth/php/slim/secure-header)    |
| Swoole    | [Tutorial](/use-cases/api-key-auth/php/swoole/jwt-backend)  | [Tutorial](/use-cases/api-key-auth/php/swoole/secure-header)  |
| Symfony   | [Tutorial](/use-cases/api-key-auth/php/symfony/jwt-backend) | [Tutorial](/use-cases/api-key-auth/php/symfony/secure-header) |
| Yii2      | [Tutorial](/use-cases/api-key-auth/php/yii2/jwt-backend)    | [Tutorial](/use-cases/api-key-auth/php/yii2/secure-header)    |

### Python

| Framework             | JWT authentication                                                         | Shared secret header                                                         |
| --------------------- | -------------------------------------------------------------------------- | ---------------------------------------------------------------------------- |
| BlackSheep            | [Tutorial](/use-cases/api-key-auth/python/blacksheep/jwt-backend)          | [Tutorial](/use-cases/api-key-auth/python/blacksheep/secure-header)          |
| Bottle                | [Tutorial](/use-cases/api-key-auth/python/bottle/jwt-backend)              | [Tutorial](/use-cases/api-key-auth/python/bottle/secure-header)              |
| CherryPy              | [Tutorial](/use-cases/api-key-auth/python/cherrypy/jwt-backend)            | [Tutorial](/use-cases/api-key-auth/python/cherrypy/secure-header)            |
| Django REST Framework | [Tutorial](/use-cases/api-key-auth/python/djangorestframework/jwt-backend) | [Tutorial](/use-cases/api-key-auth/python/djangorestframework/secure-header) |
| Falcon                | [Tutorial](/use-cases/api-key-auth/python/falcon/jwt-backend)              | [Tutorial](/use-cases/api-key-auth/python/falcon/secure-header)              |
| FastAPI               | [Tutorial](/use-cases/api-key-auth/python/fastapi/jwt-backend)             | [Tutorial](/use-cases/api-key-auth/python/fastapi/secure-header)             |
| Flask                 | [Tutorial](/use-cases/api-key-auth/python/flask/jwt-backend)               | [Tutorial](/use-cases/api-key-auth/python/flask/secure-header)               |
| Hug                   | [Tutorial](/use-cases/api-key-auth/python/hug/jwt-backend)                 | [Tutorial](/use-cases/api-key-auth/python/hug/secure-header)                 |
| Litestar              | [Tutorial](/use-cases/api-key-auth/python/litestar/jwt-backend)            | [Tutorial](/use-cases/api-key-auth/python/litestar/secure-header)            |
| Masonite              | [Tutorial](/use-cases/api-key-auth/python/masonite/jwt-backend)            | [Tutorial](/use-cases/api-key-auth/python/masonite/secure-header)            |
| Pyramid               | [Tutorial](/use-cases/api-key-auth/python/pyramid/jwt-backend)             | [Tutorial](/use-cases/api-key-auth/python/pyramid/secure-header)             |
| Sanic                 | [Tutorial](/use-cases/api-key-auth/python/sanic/jwt-backend)               | [Tutorial](/use-cases/api-key-auth/python/sanic/secure-header)               |
| Tornado               | [Tutorial](/use-cases/api-key-auth/python/tornado/jwt-backend)             | [Tutorial](/use-cases/api-key-auth/python/tornado/secure-header)             |

### Ruby

| Framework     | JWT authentication                                               | Shared secret header                                               |
| ------------- | ---------------------------------------------------------------- | ------------------------------------------------------------------ |
| Cuba          | [Tutorial](/use-cases/api-key-auth/ruby/cuba/jwt-backend)        | [Tutorial](/use-cases/api-key-auth/ruby/cuba/secure-header)        |
| Grape         | [Tutorial](/use-cases/api-key-auth/ruby/grape/jwt-backend)       | [Tutorial](/use-cases/api-key-auth/ruby/grape/secure-header)       |
| Hanami        | [Tutorial](/use-cases/api-key-auth/ruby/hanami/jwt-backend)      | [Tutorial](/use-cases/api-key-auth/ruby/hanami/secure-header)      |
| Ruby on Rails | [Tutorial](/use-cases/api-key-auth/ruby/rubyonrails/jwt-backend) | [Tutorial](/use-cases/api-key-auth/ruby/rubyonrails/secure-header) |
| Sinatra       | [Tutorial](/use-cases/api-key-auth/ruby/sinatra/jwt-backend)     | [Tutorial](/use-cases/api-key-auth/ruby/sinatra/secure-header)     |

### Rust

| Framework | JWT authentication                                            | Shared secret header                                            |
| --------- | ------------------------------------------------------------- | --------------------------------------------------------------- |
| Actix Web | [Tutorial](/use-cases/api-key-auth/rust/actixweb/jwt-backend) | [Tutorial](/use-cases/api-key-auth/rust/actixweb/secure-header) |
| Axum      | [Tutorial](/use-cases/api-key-auth/rust/axum/jwt-backend)     | [Tutorial](/use-cases/api-key-auth/rust/axum/secure-header)     |
| Poem      | [Tutorial](/use-cases/api-key-auth/rust/poem/jwt-backend)     | [Tutorial](/use-cases/api-key-auth/rust/poem/secure-header)     |
| Rocket    | [Tutorial](/use-cases/api-key-auth/rust/rocket/jwt-backend)   | [Tutorial](/use-cases/api-key-auth/rust/rocket/secure-header)   |
| Salvo     | [Tutorial](/use-cases/api-key-auth/rust/salvo/jwt-backend)    | [Tutorial](/use-cases/api-key-auth/rust/salvo/secure-header)    |
| Tide      | [Tutorial](/use-cases/api-key-auth/rust/tide/jwt-backend)     | [Tutorial](/use-cases/api-key-auth/rust/tide/secure-header)     |
| Warp      | [Tutorial](/use-cases/api-key-auth/rust/warp/jwt-backend)     | [Tutorial](/use-cases/api-key-auth/rust/warp/secure-header)     |

### Scala

| Framework      | JWT authentication                                                      | Shared secret header                                                      |
| -------------- | ----------------------------------------------------------------------- | ------------------------------------------------------------------------- |
| Play Framework | [Tutorial](/use-cases/api-key-auth/scalajava/playframework/jwt-backend) | [Tutorial](/use-cases/api-key-auth/scalajava/playframework/secure-header) |

### Swift

| Framework   | JWT authentication                                                | Shared secret header                                                |
| ----------- | ----------------------------------------------------------------- | ------------------------------------------------------------------- |
| Hummingbird | [Tutorial](/use-cases/api-key-auth/swift/hummingbird/jwt-backend) | [Tutorial](/use-cases/api-key-auth/swift/hummingbird/secure-header) |
| Kitura      | [Tutorial](/use-cases/api-key-auth/swift/kitura/jwt-backend)      | [Tutorial](/use-cases/api-key-auth/swift/kitura/secure-header)      |
| Vapor       | [Tutorial](/use-cases/api-key-auth/swift/vapor/jwt-backend)       | [Tutorial](/use-cases/api-key-auth/swift/vapor/secure-header)       |

### TypeScript

| Framework  | JWT authentication                                                    | Shared secret header                                                    |
| ---------- | --------------------------------------------------------------------- | ----------------------------------------------------------------------- |
| ActionHero | [Tutorial](/use-cases/api-key-auth/typescript/actionhero/jwt-backend) | [Tutorial](/use-cases/api-key-auth/typescript/actionhero/secure-header) |
| AdonisJS   | [Tutorial](/use-cases/api-key-auth/typescript/adonisjs/jwt-backend)   | [Tutorial](/use-cases/api-key-auth/typescript/adonisjs/secure-header)   |
| Feathers   | [Tutorial](/use-cases/api-key-auth/typescript/feathers/jwt-backend)   | [Tutorial](/use-cases/api-key-auth/typescript/feathers/secure-header)   |
| FoalTS     | [Tutorial](/use-cases/api-key-auth/typescript/foalts/jwt-backend)     | [Tutorial](/use-cases/api-key-auth/typescript/foalts/secure-header)     |
| Hono       | [Tutorial](/use-cases/api-key-auth/typescript/hono/jwt-backend)       | [Tutorial](/use-cases/api-key-auth/typescript/hono/secure-header)       |
| LoopBack   | [Tutorial](/use-cases/api-key-auth/typescript/loopback/jwt-backend)   | [Tutorial](/use-cases/api-key-auth/typescript/loopback/secure-header)   |
| NestJS     | [Tutorial](/use-cases/api-key-auth/typescript/nestjs/jwt-backend)     | [Tutorial](/use-cases/api-key-auth/typescript/nestjs/secure-header)     |
| Nitro      | [Tutorial](/use-cases/api-key-auth/typescript/nitro/jwt-backend)      | [Tutorial](/use-cases/api-key-auth/typescript/nitro/secure-header)      |

## Next steps

- [Browse and filter tutorials](/use-cases)
