KyoMel / Yogyakarta, Indonesia

Term 304304 / 344

API Driven Development

Month
August 2026
Day
21
Source
2026/august-term.md

Definition:

API-Driven Development (also called API-first or API-centric development) is a software development approach where the API is designed first and treated as the primary contract that everything else is built around — before the backend implementation, before the frontend, before the integrations. The API isn’t an afterthought bolted onto the product; it’s the foundation and the source of truth that the entire system is built on.

In API-driven development, the team defines the API contract (endpoints, request/response formats, data models) up front, and then all components — the server that implements it, the frontend that consumes it, the mobile apps, the third-party integrations — are built in parallel against that agreed contract. The API becomes the central agreement between all the pieces.

TRADITIONAL vs. API-DRIVEN:
═══════════════════════════════════════════════════════════════

  TRADITIONAL (Monolithic / code-first):
  ──────────────────────────────────────
  ┌─────────────────────────────────────────────────────────┐
  │                                                         │
  │  1. Build the DATABASE schema                           │
  │  2. Build the BACKEND logic (business rules)            │
  │  3. Build the FRONTEND to call the backend              │
  │  4. ...expose an API later (if at all)                  │
  │                                                         │
  │  Problem: The API is an AFTERTHOUGHT.                   │
  │  • Frontend and backend tightly coupled                 │
  │  • Hard to add mobile apps / integrations later         │
  │  • No clear contract → miscommunications                │
  │                                                         │
  └─────────────────────────────────────────────────────────┘

  API-DRIVEN (API-first):
  ────────────────────────
  ┌─────────────────────────────────────────────────────────┐
  │                                                         │
  │  1. DESIGN the API contract FIRST                       │
  │     (endpoints, request/response, data models)          │
  │  2. Implement the BACKEND against the contract          │
  │  3. Build the FRONTEND against the contract             │
  │  4. Build MOBILE / integrations against the same        │
  │     contract (in parallel)                              │
  │                                                         │
  │  The API is the CENTRAL AGREEMENT between all parts.   │
  │  • Everything talks through the API                     │
  │  • Components developed in parallel                     │
  │  • The contract is the source of truth                  │
  │                                                         │
  └─────────────────────────────────────────────────────────┘

Example:

A visual walkthrough of building a product API-first, with parallel teams working against the same contract.

A company builds a "book reviews" product — with a web app, a mobile app, and a public API for partners.
═══════════════════════════════════════════════════════════════
  STEP 1: DESIGN THE API CONTRACT (Before any code)
═══════════════════════════════════════════════════════════════

  The team defines the API contract up front:

  ┌─────────────────────────────────────────────────────────┐
  │                                                         │
  │  API CONTRACT (OpenAPI / Swagger spec)                  │
  │  ──────────────────────────────────                     │
  │                                                         │
  │  Endpoint:  GET /books                                 │
  │    Response: { books: [ { id, title, author,           │
  │                rating } ] }                            │
  │                                                         │
  │  Endpoint:  POST /books/{id}/reviews                   │
  │    Request:  { rating: number(1-5), text: string }     │
  │    Response: { id, bookId, rating, text, created }     │
  │                                                         │
  │  Endpoint:  GET /books/{id}/reviews                    │
  │    Response: { reviews: [ { id, rating, text } ] }     │
  │                                                         │
  │  Data model: Book { id, title, author, rating }        │
  │             Review { id, bookId, rating, text }        │
  │                                                         │
  │  This spec is the CONTRACT — everyone codes against it.│
  │                                                         │
  └─────────────────────────────────────────────────────────┘

  ─────────────────────────────────────────────────────────────

  STEP 2: PARALLEL DEVELOPMENT (Teams build simultaneously)
  ┌─────────────────────────────────────────────────────────┐
    │                                                         │
    │  BACKEND TEAM ──► implements the API exactly per the    │
    │                   spec (the actual endpoints)           │
    │                                                         │
    │  WEB TEAM ──────► builds the website consuming the API  │
    │                   (uses the contract to know the shape  │
    │                   of the data)                          │
    │                                                         │
    │  MOBILE TEAM ───► builds the iOS/Android app using the  │
    │                   SAME API contract                     │
    │                                                         │
    │  PARTNERS ──────► third parties integrate against the   │
    │                   public API (documented by the spec)   │
    │                                                         │
    │  ALL FOUR WORK IN PARALLEL — no waiting for the        │
    │  backend to finish, because the contract is agreed      │
    │  in advance.                                            │
    │                                                         │
    └─────────────────────────────────────────────────────────┘
  
    ─────────────────────────────────────────────────────────────
  
    STEP 3: INTEGRATION (Everything meets at the contract)
  
    ┌─────────────────────────────────────────────────────────┐
    │                                                         │
    │  [Web app] ─┐                                           │
    │             │                                           │
    │  [Mobile] ──┼────►  THE API  ◄──── [Backend]           │
    │             │      (contract)                           │
    │  [Partner] ─┘                                           │
    │                                                         │
    │  Each component ONLY knows the API contract.            │
    │  They don't know each other's internals.                │
    │  If the mobile team changes, the web app is unaffected  │
      │  — as long as they both still call the same API.        │
      │                                                         │
      └─────────────────────────────────────────────────────────┘

═══════════════════════════════════════════════════════════════
  WHY API-DRIVEN DEVELOPMENT WORKS SO WELL
═══════════════════════════════════════════════════════════════

  Benefit                  How It Helps
  ─────────────────────────────────────────────────────────────

  Parallel development     Frontend, backend, mobile, partners
                           all build at once — faster delivery

  Clear contract           No miscommunication about data
                           formats — the spec is the agreement

  Decoupled components     Swap any component without touching
                           others (all talk through the API)

  Multi-platform           1 API powers web + mobile + partners
                           instead of separate implementations

  Easier testing           Mock the API contract to test each
                           component independently

  Third-party ready        A well-documented API attracts
                           integrations/partners

  Better documentation     The contract IS living documentation
                           (OpenAPI generates docs)

Keep reading