API documentation guide: how to write and structure yours
by
Esa Landicho

API documentation guide: how to write and structure yours

AI

Most API projects that fail do not fail because the code is wrong. They fail because nobody can figure out how to use them. A developer who cannot get a successful response within the first ten minutes of reading your docs will move on. Good API documentation is the difference between an API that gets integrated and one that gets ignored.

Key takeaways

  • API documentation explains how an API works: its endpoints, authentication, request and response formats, error codes, and code examples. Without it, even well-built APIs go unused.
  • Good API documentation includes three layers: reference docs (every endpoint), conceptual guides (how it works), and getting-started tutorials (how to make the first call in under five minutes).
  • An OpenAPI specification is the machine-readable foundation of modern API docs. It powers interactive documentation, SDK generation, and automated testing.
  • The fastest path to good documentation is a consistent template applied to every endpoint: method, path, parameters, request body, response schema, error codes, and code examples.
  • Tools like Swagger UI, Postman, and Readme.com automate large portions of API documentation generation from your OpenAPI spec. See VEED API documentation for a production example.

This guide covers the full process: what API documentation is, how to structure it, what makes it good, how to write it step by step, and which tools generate and maintain it. Where relevant, examples reference the VEED Fabric 1.0 API documentation — a real, production API with well-structured endpoint specs and code examples — to keep the guidance concrete rather than abstract.

What is API documentation?

API documentation is the technical content that explains how an API works: what endpoints exist, how to authenticate, what parameters each endpoint accepts, what responses it returns, and what errors can occur. Good docs include working code examples in multiple languages.

Developers use API documentation to evaluate whether an API fits their use case, understand how to make their first call, integrate the API into production code, and troubleshoot problems when something goes wrong. Each of these needs is different, which is why API documentation typically has more than one layer.

Types of API documentation

  • Reference documentation: the complete record of every endpoint, parameter, request format, response schema, and error code. Machine-readable via OpenAPI specification.
  • Getting started guide: a short, practical walkthrough that gets a developer from zero to their first successful API response in under ten minutes. Authentication, a simple call, and the expected output.
  • Conceptual guides: explanations of how the API is designed: authentication model, rate limiting, pagination, versioning policy, and core objects.
  • Code examples and SDKs: working code in the languages your users are most likely to use (Python, JavaScript, cURL at minimum).
  • Changelog: a versioned record of what has changed across releases. Essential for developers already integrated with your API.

What makes good API documentation?

The best API documentation has four qualities: it is complete, it is accurate, it is consistent, and it makes the time to first successful call as short as possible.

Complete

Every endpoint is documented. Every parameter is described. Every possible response code is listed, including error states with explanation. Incomplete reference documentation forces developers to guess, and guessing causes bugs and support tickets.

Accurate

Every code example in your documentation actually works. This sounds obvious but is the most common documentation failure. Examples copied from old versions, untested parameter combinations, and response schemas that do not match the real API output all destroy developer trust immediately.

Consistent

The same format, the same terminology, and the same structure across every endpoint. A developer who understands one endpoint's documentation page should be able to read any other without re-learning the layout.

Fast to first call

The getting started guide should get a developer to a working API response in under five minutes. Every minute spent in setup documentation before seeing output is a minute the developer is considering an alternative. APIs that meet these four criteria consistently, including Stripe, Twilio, GitHub, and the VEED Lipsync API, see higher adoption and lower support volume than those that do not. The documentation is part of the product.

How to write API documentation

Here is a straightforward process for writing API documentation from scratch.

Step 1: Define your audience

Know who will be reading your documentation before writing a word. An internal API used by your own engineering team has different documentation needs than a public API used by thousands of external developers. External developers need more context, more examples, and more explicit error guidance. Internal teams can assume shared knowledge of the stack.

Step 2: Document every endpoint

For every endpoint in your API, document: the HTTP method (GET, POST, PUT, DELETE), the full path, a plain-language description of what it does, all path and query parameters with data types and whether they are required, the request body schema (if applicable), all possible response codes with response body schemas, and authentication requirements.

Step 3: Write the getting started guide

Write the getting started guide separately from the reference documentation. It should show the simplest possible working integration: how to get credentials, how to make one API call, and what a successful response looks like. Resist the urge to cover every feature here. The goal is a successful first call, not a complete tutorial.

Step 4: Add code examples in multiple languages

Include working code examples for every endpoint that has a significant use case. Minimum: cURL, Python, and JavaScript. If your API has an official SDK, show both the raw HTTP call and the SDK call. Every example must be tested before publishing.

Step 5: Publish, version, and maintain

API documentation is not a one-time deliverable. Every endpoint change, parameter addition, deprecation, and breaking change needs a corresponding documentation update, ideally on the same day as the code change. Use a versioning system that lets developers see documentation for the version they are integrated with, not just the latest.

API documentation best practices

These practices separate documentation that developers trust and return to from documentation that gets one read and then gets abandoned.

  • Use real examples, not pseudocode: developers copy, paste, and run. Pseudocode breaks that workflow. Every example should be a working request and a real response.
  • Explain error codes in plain language: a 422 Unprocessable Entity is not self-explanatory. Document what it means for your API specifically, what causes it, and how to resolve it.
  • Include authentication flow early: authentication is where most integrations stall. Show the full auth flow — how to get a key, where to put it in the request, and what an auth failure looks like — before any endpoint documentation.
  • Version your documentation: developers who integrated with v1 of your API do not want to read v2 documentation when they are debugging a v1 problem. Keep old versions accessible.
  • Write for search, not just for reading: developers use Cmd+F heavily in documentation. Use consistent terminology so keyword searches find the right section.
  • Link generously between sections: a developer reading about an endpoint's response schema should be able to click through to the data type definitions. Cross-linking reduces documentation abandonment.
  • Maintain a changelog: every API change — new parameter, deprecated field, response format update — should be timestamped in a public changelog. Developers who integrate your API rely on this to maintain their integrations.
  • Test documentation in the same pipeline as code: broken documentation is a bug. Treat undocumented endpoints and inaccurate examples as defects that block release.

API documentation structure and REST template

Use this structure for every API you document. Apply it consistently across all endpoints for a readable, professional result.

Document-level structure

  • Overview: what the API does, who it is for, and what problems it solves
  • Authentication: how to obtain credentials and include them in requests
  • Base URL: the root URL for all API calls
  • Versioning: how versions are handled (URL path, header, or parameter)
  • Rate limits: requests per second/minute/day, and how to handle 429 responses
  • Errors: global error format and the full list of error codes
  • Changelog: versioned history of changes

Endpoint-level template

Apply this structure to every endpoint:

## [HTTP Method] /path/to/endpoint

### Description
One sentence: what this endpoint does and when to use it.

### Authentication
Required: [Bearer token / API key / OAuth 2.0]

### Parameters
| Name       | Type    | Required | Description              |
|------------|---------|----------|--------------------------|
| param_name | string  | Yes      | Description of what this does |
| optional_p | integer | No       | Default: 10. Max: 100    |

### Request body
Content-Type: application/json
{
  "field_name": "string",   // Required. Description.
  "other_field": 1234        // Optional. Default: null.
}

### Response
200 OK
{
  "id": "abc123",
  "status": "complete",
  "result_url": "https://example.com/output.mp4"
}

### Error codes
400 Bad Request — missing required field
401 Unauthorized — invalid or missing API key
422 Unprocessable Entity — input validation failed
429 Too Many Requests — rate limit exceeded

### Code examples
curl -X POST https://api.example.com/v1/endpoint \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"field_name": "value"}'

API specification example (OpenAPI 3.0)

An OpenAPI specification is the machine-readable contract that defines your API. It powers interactive documentation (Swagger UI, Redoc), SDK generation, and automated testing. Here is an annotated OpenAPI 3.0 example using a video generation endpoint as the model. For a production reference, see the VEED Fabric 1.0 API documentation.

openapi: 3.0.3
info:
  title: Video Generation API
  description: Generate talking videos from an image and audio input.
  version: 1.0.0
  contact:
    name: Developer Support
    url: https://www.veed.io/api

servers:
  - url: https://api.example.com/v1
    description: Production

security:
  - ApiKeyAuth: []

paths:
  /generate:
    post:
      summary: Generate a talking video
      description: >
        Accepts an image URL and an audio URL.
        Returns a video file URL on completion.
      operationId: generateVideo
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/GenerateRequest'
      responses:
        '200':
          description: Video generated successfully
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GenerateResponse'
        '400':
          description: Bad request — missing or invalid parameters
        '401':
          description: Unauthorized — invalid API key
        '422':
          description: Unprocessable entity — input validation failed

components:
  schemas:
    GenerateRequest:
      type: object
      required: [image_url, audio_url]
      properties:
        image_url:
          type: string
          format: uri
          description: URL of the input image (JPEG or PNG).
        audio_url:
          type: string
          format: uri
          description: URL of the audio file (MP3 or WAV).
        resolution:
          type: string
          enum: [480p, 720p]
          default: 480p
          description: Output video resolution.
    GenerateResponse:
      type: object
      properties:
        request_id:
          type: string
          description: Unique ID for this generation request.
        video_url:
          type: string
          format: uri
          description: URL of the generated output video.
        status:
          type: string
          enum: [complete, processing, failed]

  securitySchemes:
    ApiKeyAuth:
      type: apiKey
      in: header
      name: Authorization
      description: "Format: Bearer YOUR_API_KEY"

This structure is the foundation for tools like Swagger UI to auto-generate an interactive documentation page. The schema definitions in components/schemas are reusable across multiple endpoints. Define a data type once and reference it wherever it appears. The result is documentation that stays consistent as the API grows.

How to document API endpoints

API endpoint documentation is the core of your reference docs. Each endpoint needs its own page or section, structured consistently so developers can scan and find what they need without reading everything.

Every endpoint documentation block should answer these questions unambiguously:

  • What does this endpoint do? (one sentence)
  • What HTTP method and path does it use?
  • What authentication is required?
  • What parameters does it accept? (name, type, required/optional, description, constraints)
  • What does the request body look like? (schema with example)
  • What does a successful response look like? (status code + body schema + example)
  • What error responses can occur? (status code + reason + how to resolve)
  • What does a working code example look like? (cURL minimum; Python and JS preferred)

The VEED Lipsync API documentation covers all of these: the endpoint path, authentication setup (FAL_KEY environment variable), the request schema (video_url and audio_url), code examples in JavaScript using the fal.ai client library, and the full output format. It is a practical example of what each section of endpoint documentation should contain.

API documentation tools

Tool What it does Best for Free tier
Swagger UI
Renders interactive docs from OpenAPI spec
Any API with an OpenAPI file; self-hosted ✓ Open source
Redoc
Generates clean static docs from OpenAPI spec
Public APIs needing polished read-only docs ✓ Open source
Postman
API testing + auto-generates collection docs
Teams already using Postman for testing Yes, with limitations
Readme.com
Full documentation portal: reference + guides
Developer portals for external APIs Trial Paid from $99/mo
Stoplight
API design + spec-first documentation workflow
Teams building the spec and docs simultaneously Free plan available
Fern
Generates SDK + docs from OpenAPI spec
APIs that need both docs and client libraries Open-source CLI Paid hosting

Several tools significantly reduce the time to produce and maintain API documentation, especially when your API is described in an OpenAPI specification. For developers integrating a video API, the AI avatar API guide provides additional context on how API documentation quality affects integration decisions.

The fastest path to production-ready API documentation is: write your OpenAPI specification first, then use one of these tools to render it. Do not write documentation by hand if your spec is accurate — let the tooling do it.

Recap and final thoughts

  • Start with the OpenAPI spec: a machine-readable specification is the foundation for interactive docs, SDK generation, and automated testing. Write the spec first.
  • Apply a consistent endpoint template: every endpoint documented the same way reduces the time developers spend re-orienting every time they look something up.
  • Test every code example: inaccurate examples destroy trust faster than any other documentation failure. Run them in CI before publishing.
  • Include error codes with plain-language explanations: telling a developer what 422 means for your API specifically is worth ten well-written overview paragraphs.
  • Maintain a changelog: developers who are already integrated with your API rely on it. This is not optional for production APIs.

Next step: Building on a video API? Explore the VEED API documentation — endpoint specs, authentication guides, and code examples — as an example of production-ready API docs in practice. Or see the VEED n8n automation guide for a worked integration example.

Faq

What is API documentation?

API documentation is the technical content that explains how to use an API: its endpoints, authentication method, request parameters, response format, error codes, and working code examples. It covers three layers: reference documentation (every endpoint), conceptual guides (how the API is designed), and getting-started tutorials (how to make the first working call). Good API documentation reduces integration time and support overhead for the teams consuming the API.

How do I write API documentation?

Start by documenting every endpoint: HTTP method, path, parameters, request body, response schema, and error codes. Then write a getting started guide that takes a developer from zero credentials to their first successful response. Add code examples in cURL, Python, and JavaScript. Write your OpenAPI specification to make the docs machine-readable and to enable tooling like Swagger UI. Maintain a changelog as the API evolves.

What is an API specification example?

An API specification is a machine-readable contract that defines the structure of an API. The most common format is OpenAPI 3.0 (YAML or JSON). A specification defines servers, paths, HTTP methods, request bodies, response schemas, authentication methods, and error codes. Tools like Swagger UI and Redoc read the specification and render it as interactive human-readable documentation automatically.

What should API documentation include?

Complete API documentation should include: an overview, authentication instructions, base URL, versioning policy, rate limits, a full reference of every endpoint (method, path, parameters, request body, responses, errors, code examples), conceptual guides, a getting started tutorial, and a changelog. Code examples in at least three languages (cURL, Python, JavaScript) are essential for external developer-facing documentation.

What are the best API documentation examples?

The most consistently referenced examples of high-quality API documentation are Stripe, Twilio, and GitHub. Each maintains complete reference docs, clear getting started guides, multi-language code examples, and searchable changelogs. Among video generation APIs, the VEED Fabric 1.0 API and VEED Lipsync API include endpoint specs, code examples, and error handling guidance that demonstrate these standards well.

What tools are used to create API documentation?

The most widely used tools are: Swagger UI and Redoc (render interactive or static docs from an OpenAPI spec), Postman (testing plus auto-generated collection documentation), Readme.com (full developer portal with reference docs and guides), and Stoplight (spec-first design and documentation workflow). The fastest approach is to write an accurate OpenAPI spec first and let one of these tools render it. Manual documentation is slower and harder to maintain.

When it comes to  amazing videos, all you need is VEED

Create your first video
No credit card required