DEV Community

Alex Spinov
Alex Spinov

Posted on

Kong Has a Free API — The Most Popular Open-Source API Gateway

Kong: API Gateway Trusted by 50,000+ Organizations

Kong is the most widely adopted open-source API gateway. Rate limiting, auth, caching, load balancing, observability — managed via REST API. Runs on Kubernetes, Docker, VMs.

Why Kong

  • Most popular API gateway (100M+ downloads)
  • Plugin ecosystem (100+ plugins)
  • Sub-millisecond latency (built on Nginx/OpenResty)
  • DB-less mode — config as code
  • Kubernetes Ingress Controller

The Free API

# Add a service
curl -X POST http://localhost:8001/services \
  -d "name=my-api" \
  -d "url=http://backend:8080"

# Add a route
curl -X POST http://localhost:8001/services/my-api/routes \
  -d "paths[]=/api" \
  -d "strip_path=true"

# Add rate limiting
curl -X POST http://localhost:8001/services/my-api/plugins \
  -d "name=rate-limiting" \
  -d "config.minute=100" \
  -d "config.policy=local"

# Add key auth
curl -X POST http://localhost:8001/services/my-api/plugins \
  -d "name=key-auth"

# Create consumer + API key
curl -X POST http://localhost:8001/consumers \
  -d "username=alice"
curl -X POST http://localhost:8001/consumers/alice/key-auth \
  -d "key=my-secret-key"

# List all services
curl http://localhost:8001/services

# Get service details
curl http://localhost:8001/services/my-api
Enter fullscreen mode Exit fullscreen mode

DB-less Mode (Config as Code)

# kong.yml
_format_version: "3.0"
services:
- name: my-api
  url: http://backend:8080
  routes:
  - name: api-route
    paths:
    - /api
  plugins:
  - name: rate-limiting
    config:
      minute: 100
  - name: cors
    config:
      origins: ["*"]
Enter fullscreen mode Exit fullscreen mode
export KONG_DATABASE=off
export KONG_DECLARATIVE_CONFIG=kong.yml
kong start
Enter fullscreen mode Exit fullscreen mode

Real-World Use Case

A platform exposing 50 APIs to partners had no centralized auth or rate limiting. Kong: unified API gateway, per-partner rate limits, API key auth, request logging. Setup in one day, zero code changes to backend services.

Quick Start

docker run -d --name kong -p 8000:8000 -p 8001:8001 \
  -e "KONG_DATABASE=off" \
  -e "KONG_PROXY_ACCESS_LOG=/dev/stdout" \
  kong:latest
Enter fullscreen mode Exit fullscreen mode

Resources


Need API analytics data? Check out my tools on Apify or email spinov001@gmail.com.

Top comments (0)