Skip to content

API documentation

Documenting software interfaces using OpenAPI, covering structured schemas, automation workflows, and best practices for developer experience


What is API documentation?

Application programming interface (API) documentation is the contract between a service and its consumers. It defines how to interact with an API by detailing endpoints, authentication protocols, input parameters, and response formats. These formats are typically JavaScript Object Notation (JSON) or Extensible Markup Language (XML). Instead of serving as a static manual, modern documentation often functions as a live reference.

Many teams use the OpenAPI Specification (OAS) to drive a spec-driven workflow. This allows for a Docs as Code (DaC) approach where documentation generators extract metadata directly from the specification file. This process integrates with version control and continuous integration and continuous delivery (CI/CD) pipelines. Integration ensures that developer portals stay updated alongside the codebase.

graph TD
    A[OpenAPI Spec] --> B{CI/CD Pipeline}
    B --> C[Linter/Validator]
    C -- Pass --> D[Documentation Portal]
    C -- Pass --> E[Mock Server]
    C -- Pass --> F[Client SDKs]
    C -- Fail --> G[Build Failure/Alert]

Why documentation matters

High-quality documentation is the primary driver of a positive developer experience (DX). When documentation is vague or missing, developers face friction. Integrations fail, support tickets spike, and projects stop.

Effective documentation reduces the time it takes to make the first API call and supports developer relations (DevRel) goals by making a product easy to adopt.

Ignoring documentation standards leads to several risks:

  • Documentation drift: Stale parameters that do not match the current production environment.
  • Breaking changes: Updates that bypass semantic versioning (SemVer) expectations. This causes client applications to crash.
  • Schema mismatches: Unclear data types that lead to parsing errors during processing.
  • Support fatigue: Internal engineers who spend time on repetitive implementation questions.

Syntax and structure

Machine-readable schemas, such as YAML Ain't Markup Language (YAML) or JSON, form the backbone of modern API references. To be functional, an OpenAPI 3.x specification requires several core components:

  • Metadata: The API title, description, and version. This is defined in the info object.
  • Servers: Root addresses (base URLs) for sandbox and production environments.
  • Paths and Operations: The Uniform Resource Identifier (URI) paths and the permitted Hypertext Transfer Protocol (HTTP) methods, such as GET, POST, PUT, or DELETE.
  • Parameters: Requirements categorized by location: path, query, header, or cookie.
  • Request Bodies: For POST, PUT, or PATCH. These include detailed payload definitions including media types and schemas.
  • Responses: HTTP status codes and the resulting data schemas.
  • Authentication: Security schemes, such as API keys, Bearer tokens, or OAuth 2.0.

Code example

This OpenAPI 3.0.3 snippet in YAML defines a single endpoint for a user directory service.

YAML
openapi: 3.0.3
info:
  title: User Directory API
  version: 1.0.0
paths:
  /users/{id}:
    get:
      summary: Retrieve a user by ID
      parameters:
        - name: id
          in: path
          required: true
          schema:
            type: string
      responses:
        '200':
          description: User record retrieved successfully
          content:
            application/json:
              schema:
                type: object
                properties:
                  id:
                    type: string
                  name:
                    type: string

Key components

  • openapi: 3.0.3: The semantic version of the OpenAPI Specification that the document follows.
  • /users/{id}: The relative path that uses a template expression ({id}) to target specific resources.
  • in: path: This indicates the parameter is part of the URL path. In OAS 3.0, path parameters must have required: true.
  • application/json: The media type used for the response body.

Mitigating common pitfalls

Even technical teams struggle to keep reference pages accurate. Addressing these three areas prevents the most common integration hurdles.

Preventing Documentation Drift
Drift occurs when code evolves but the OpenAPI spec remains static. To solve this, integrate contract testing or validation tools into your CI/CD pipeline. If the code implementation and the specifications do not match, the build should fail.

Beyond the happy path
Documentation often ignores error states. Every endpoint should define standard HTTP error codes, such as 400 Bad Request, 401 Unauthorized, and 429 Too Many Requests, along with specific error schemas that explain the failure.

Providing functional context
A list of parameters is only half the battle. Support your reference with code snippets in languages, such as Python, JavaScript, or Go, to show complete request and response lifecycles.


Tooling and ecosystem

The right tools turn static files into interactive developer hubs:


Best practices

Practice spec-first development

Review your OpenAPI contract before writing application code. This ensures alignment between product, engineering, and documentation teams.

  • Automate everything: Use tools to generate documentation from the specifications file. Do not manually maintain separate HTML tables for API parameters.
  • Enforce style: Use a linter to flag schema errors and naming convention violations before they reach production.
  • Enable Try It Out: Use mock servers (such as Prism) or sandbox environments in your portal so developers can test calls immediately.
  • Strict versioning: Use semantic versioning to signal when an update introduces breaking changes for consumers.