APIGen website screenshot

APIGen

ApiGen is an open source PHP API documentation generator that automatically produces smart and simple documentation from PHP source code. It supports PHP 7.1+ including all PHP 8.3 features like enums, union types, readonly classes, and intersection types. ApiGen is maintained by the ApiGen GitHub organization and can be installed via Docker, Phar binary, or Composer.

1 APIs 5 Features
CodeDocumentationGenerationOpen SourcePHP

APIs

APIGen

ApiGen is an easy to use and modern PHP API documentation generator that automatically builds API documentation from PHP source code with full support for PHP 7.1+ features incl...

Collections

APIGen API

OPEN

Pricing Plans

Apigen Plans Pricing

3 plans

PLANS

Rate Limits

Apigen Rate Limits

5 limits

RATE LIMITS

FinOps

Apigen Finops

FINOPS

Features

PHP Documentation Generation

Automatically generates API documentation from PHP source code with phpDoc support.

Modern PHP Support

Full support for PHP 7.1+ including typed properties, enums, union types, readonly classes, and PHP 8.3 features.

Advanced Type Systems

Supports intersection types, disjunctive normal form types, constructor property promotion, and all PHPStan-supported types.

Flexible Installation

Available via Docker, Phar binary, or Composer for flexible integration into any PHP project workflow.

Template-Based Output

Uses Latte templating for customizable documentation output with built-in CommonMark support.

Use Cases

PHP Library Documentation

Generate comprehensive API reference documentation for PHP libraries and packages.

CI/CD Documentation Pipeline

Automate API documentation generation as part of continuous integration workflows.

Open Source Project Docs

Create and maintain documentation for open source PHP projects.

Integrations

Composer

Available as a Composer package for easy installation in PHP projects.

Docker

Official Docker image for containerized documentation generation.

GitHub Actions

Can be integrated into GitHub Actions workflows for automated documentation.

PHPStan

Built on phpstan/phpdoc-parser for comprehensive type system support.

Semantic Vocabularies

Apigen Context

29 classes · 10 properties

JSON-LD

API Governance Rules

APIGen API Rules

7 rules · 4 errors 3 warnings

SPECTRAL

JSON Structure

Apigen Api Structure

14 properties

JSON STRUCTURE

Apigen Deployment Structure

13 properties

JSON STRUCTURE

Apigen Endpoint Structure

13 properties

JSON STRUCTURE

Apigen Project Structure

9 properties

JSON STRUCTURE

Example Payloads

Apigen Api Example

4 fields

EXAMPLE

Apigen Deployment Example

5 fields

EXAMPLE

Apigen Endpoint Example

5 fields

EXAMPLE

Apigen Project Example

4 fields

EXAMPLE

Resources

🔗
LinkedIn
LinkedIn
👥
GitHubOrganization
GitHubOrganization
📦
SDKs
SDKs
🔗
Docker
Docker

Sources

Raw ↑
opencollection: 1.0.0
info:
  name: APIGen API
  version: 1.0.0
request:
  auth:
    type: bearer
    token: '{{bearerToken}}'
items:
- info:
    name: Projects
    type: folder
  items:
  - info:
      name: APIGen List Projects
      type: http
    http:
      method: GET
      url: https://api.apigen.com/v1/projects
      params:
      - name: limit
        value: ''
        type: query
      - name: offset
        value: ''
        type: query
    docs: Returns a paginated list of projects for the authenticated user.
  - info:
      name: APIGen Create a Project
      type: http
    http:
      method: POST
      url: https://api.apigen.com/v1/projects
      body:
        type: json
        data: '{}'
    docs: Creates a new API generation project.
  - info:
      name: APIGen Get a Project
      type: http
    http:
      method: GET
      url: https://api.apigen.com/v1/projects/:projectId
      params:
      - name: projectId
        value: ''
        type: path
    docs: Returns a single project by ID.
  - info:
      name: APIGen Update a Project
      type: http
    http:
      method: PUT
      url: https://api.apigen.com/v1/projects/:projectId
      params:
      - name: projectId
        value: ''
        type: path
      body:
        type: json
        data: '{}'
    docs: Updates an existing project.
  - info:
      name: APIGen Delete a Project
      type: http
    http:
      method: DELETE
      url: https://api.apigen.com/v1/projects/:projectId
      params:
      - name: projectId
        value: ''
        type: path
    docs: Deletes a project and all associated resources.
- info:
    name: Default
    type: folder
  items:
  - info:
      name: APIGen List APIs in a Project
      type: http
    http:
      method: GET
      url: https://api.apigen.com/v1/projects/:projectId/apis
      params:
      - name: projectId
        value: ''
        type: path
      - name: limit
        value: ''
        type: query
      - name: offset
        value: ''
        type: query
    docs: Returns all APIs belonging to a project.
  - info:
      name: APIGen Create an API
      type: http
    http:
      method: POST
      url: https://api.apigen.com/v1/projects/:projectId/apis
      params:
      - name: projectId
        value: ''
        type: path
      body:
        type: json
        data: '{}'
    docs: Creates a new API within a project. You can provide a prompt for AI-powered generation or supply an existing OpenAPI
      specification.
  - info:
      name: APIGen Get an API
      type: http
    http:
      method: GET
      url: https://api.apigen.com/v1/projects/:projectId/apis/:apiId
      params:
      - name: projectId
        value: ''
        type: path
      - name: apiId
        value: ''
        type: path
    docs: Returns a single API by ID.
  - info:
      name: APIGen Update an API
      type: http
    http:
      method: PUT
      url: https://api.apigen.com/v1/projects/:projectId/apis/:apiId
      params:
      - name: projectId
        value: ''
        type: path
      - name: apiId
        value: ''
        type: path
      body:
        type: json
        data: '{}'
    docs: Updates an existing API definition.
  - info:
      name: APIGen Delete an API
      type: http
    http:
      method: DELETE
      url: https://api.apigen.com/v1/projects/:projectId/apis/:apiId
      params:
      - name: projectId
        value: ''
        type: path
      - name: apiId
        value: ''
        type: path
    docs: Deletes an API and its endpoints.
- info:
    name: Endpoints
    type: folder
  items:
  - info:
      name: APIGen List Endpoints
      type: http
    http:
      method: GET
      url: https://api.apigen.com/v1/projects/:projectId/apis/:apiId/endpoints
      params:
      - name: projectId
        value: ''
        type: path
      - name: apiId
        value: ''
        type: path
      - name: limit
        value: ''
        type: query
      - name: offset
        value: ''
        type: query
    docs: Returns all endpoints for an API.
  - info:
      name: APIGen Create an Endpoint
      type: http
    http:
      method: POST
      url: https://api.apigen.com/v1/projects/:projectId/apis/:apiId/endpoints
      params:
      - name: projectId
        value: ''
        type: path
      - name: apiId
        value: ''
        type: path
      body:
        type: json
        data: '{}'
    docs: Creates a new endpoint for an API.
  - info:
      name: APIGen Get an Endpoint
      type: http
    http:
      method: GET
      url: https://api.apigen.com/v1/projects/:projectId/apis/:apiId/endpoints/:endpointId
      params:
      - name: projectId
        value: ''
        type: path
      - name: apiId
        value: ''
        type: path
      - name: endpointId
        value: ''
        type: path
    docs: Returns a single endpoint by ID.
  - info:
      name: APIGen Update an Endpoint
      type: http
    http:
      method: PUT
      url: https://api.apigen.com/v1/projects/:projectId/apis/:apiId/endpoints/:endpointId
      params:
      - name: projectId
        value: ''
        type: path
      - name: apiId
        value: ''
        type: path
      - name: endpointId
        value: ''
        type: path
      body:
        type: json
        data: '{}'
    docs: Updates an existing endpoint.
  - info:
      name: APIGen Delete an Endpoint
      type: http
    http:
      method: DELETE
      url: https://api.apigen.com/v1/projects/:projectId/apis/:apiId/endpoints/:endpointId
      params:
      - name: projectId
        value: ''
        type: path
      - name: apiId
        value: ''
        type: path
      - name: endpointId
        value: ''
        type: path
    docs: Deletes an endpoint.
- info:
    name: Schemas
    type: folder
  items:
  - info:
      name: APIGen List Schemas
      type: http
    http:
      method: GET
      url: https://api.apigen.com/v1/projects/:projectId/apis/:apiId/schemas
      params:
      - name: projectId
        value: ''
        type: path
      - name: apiId
        value: ''
        type: path
      - name: limit
        value: ''
        type: query
      - name: offset
        value: ''
        type: query
    docs: Returns all schemas defined for an API.
  - info:
      name: APIGen Create a Schema
      type: http
    http:
      method: POST
      url: https://api.apigen.com/v1/projects/:projectId/apis/:apiId/schemas
      params:
      - name: projectId
        value: ''
        type: path
      - name: apiId
        value: ''
        type: path
      body:
        type: json
        data: '{}'
    docs: Creates a new data schema for an API.
  - info:
      name: APIGen Get a Schema
      type: http
    http:
      method: GET
      url: https://api.apigen.com/v1/projects/:projectId/apis/:apiId/schemas/:schemaId
      params:
      - name: projectId
        value: ''
        type: path
      - name: apiId
        value: ''
        type: path
      - name: schemaId
        value: ''
        type: path
    docs: Returns a single schema by ID.
  - info:
      name: APIGen Update a Schema
      type: http
    http:
      method: PUT
      url: https://api.apigen.com/v1/projects/:projectId/apis/:apiId/schemas/:schemaId
      params:
      - name: projectId
        value: ''
        type: path
      - name: apiId
        value: ''
        type: path
      - name: schemaId
        value: ''
        type: path
      body:
        type: json
        data: '{}'
    docs: Updates an existing schema definition.
  - info:
      name: APIGen Delete a Schema
      type: http
    http:
      method: DELETE
      url: https://api.apigen.com/v1/projects/:projectId/apis/:apiId/schemas/:schemaId
      params:
      - name: projectId
        value: ''
        type: path
      - name: apiId
        value: ''
        type: path
      - name: schemaId
        value: ''
        type: path
    docs: Deletes a schema.
- info:
    name: Connectors
    type: folder
  items:
  - info:
      name: APIGen List Connectors
      type: http
    http:
      method: GET
      url: https://api.apigen.com/v1/projects/:projectId/connectors
      params:
      - name: projectId
        value: ''
        type: path
      - name: limit
        value: ''
        type: query
      - name: offset
        value: ''
        type: query
    docs: Returns all connectors configured for a project.
  - info:
      name: APIGen Create a Connector
      type: http
    http:
      method: POST
      url: https://api.apigen.com/v1/projects/:projectId/connectors
      params:
      - name: projectId
        value: ''
        type: path
      body:
        type: json
        data: '{}'
    docs: Creates a new connector to an external data source such as a database, third-party API, or file store.
  - info:
      name: APIGen Get a Connector
      type: http
    http:
      method: GET
      url: https://api.apigen.com/v1/projects/:projectId/connectors/:connectorId
      params:
      - name: projectId
        value: ''
        type: path
      - name: connectorId
        value: ''
        type: path
    docs: Returns a single connector by ID.
  - info:
      name: APIGen Update a Connector
      type: http
    http:
      method: PUT
      url: https://api.apigen.com/v1/projects/:projectId/connectors/:connectorId
      params:
      - name: projectId
        value: ''
        type: path
      - name: connectorId
        value: ''
        type: path
      body:
        type: json
        data: '{}'
    docs: Updates an existing connector configuration.
  - info:
      name: APIGen Delete a Connector
      type: http
    http:
      method: DELETE
      url: https://api.apigen.com/v1/projects/:projectId/connectors/:connectorId
      params:
      - name: projectId
        value: ''
        type: path
      - name: connectorId
        value: ''
        type: path
    docs: Deletes a connector.
- info:
    name: Deployments
    type: folder
  items:
  - info:
      name: APIGen List Deployments
      type: http
    http:
      method: GET
      url: https://api.apigen.com/v1/projects/:projectId/apis/:apiId/deployments
      params:
      - name: projectId
        value: ''
        type: path
      - name: apiId
        value: ''
        type: path
      - name: limit
        value: ''
        type: query
      - name: offset
        value: ''
        type: query
    docs: Returns all deployments for an API.
  - info:
      name: APIGen Create a Deployment
      type: http
    http:
      method: POST
      url: https://api.apigen.com/v1/projects/:projectId/apis/:apiId/deployments
      params:
      - name: projectId
        value: ''
        type: path
      - name: apiId
        value: ''
        type: path
      body:
        type: json
        data: '{}'
    docs: Deploys an API to a target environment.
  - info:
      name: APIGen Get a Deployment
      type: http
    http:
      method: GET
      url: https://api.apigen.com/v1/projects/:projectId/apis/:apiId/deployments/:deploymentId
      params:
      - name: projectId
        value: ''
        type: path
      - name: apiId
        value: ''
        type: path
      - name: deploymentId
        value: ''
        type: path
    docs: Returns a single deployment by ID including its current status.
  - info:
      name: APIGen Tear Down a Deployment
      type: http
    http:
      method: DELETE
      url: https://api.apigen.com/v1/projects/:projectId/apis/:apiId/deployments/:deploymentId
      params:
      - name: projectId
        value: ''
        type: path
      - name: apiId
        value: ''
        type: path
      - name: deploymentId
        value: ''
        type: path
    docs: Tears down a deployment and removes the API from the target environment.
- info:
    name: Tests
    type: folder
  items:
  - info:
      name: APIGen List Tests
      type: http
    http:
      method: GET
      url: https://api.apigen.com/v1/projects/:projectId/apis/:apiId/tests
      params:
      - name: projectId
        value: ''
        type: path
      - name: apiId
        value: ''
        type: path
      - name: limit
        value: ''
        type: query
      - name: offset
        value: ''
        type: query
    docs: Returns all test suites for an API.
  - info:
      name: APIGen Create a Test
      type: http
    http:
      method: POST
      url: https://api.apigen.com/v1/projects/:projectId/apis/:apiId/tests
      params:
      - name: projectId
        value: ''
        type: path
      - name: apiId
        value: ''
        type: path
      body:
        type: json
        data: '{}'
    docs: Creates a new test suite for an API.
  - info:
      name: APIGen Get a Test
      type: http
    http:
      method: GET
      url: https://api.apigen.com/v1/projects/:projectId/apis/:apiId/tests/:testId
      params:
      - name: projectId
        value: ''
        type: path
      - name: apiId
        value: ''
        type: path
      - name: testId
        value: ''
        type: path
    docs: Returns a single test suite by ID.
  - info:
      name: APIGen Delete a Test
      type: http
    http:
      method: DELETE
      url: https://api.apigen.com/v1/projects/:projectId/apis/:apiId/tests/:testId
      params:
      - name: projectId
        value: ''
        type: path
      - name: apiId
        value: ''
        type: path
      - name: testId
        value: ''
        type: path
    docs: Deletes a test suite.
  - info:
      name: APIGen Run a Test
      type: http
    http:
      method: POST
      url: https://api.apigen.com/v1/projects/:projectId/apis/:apiId/tests/:testId/run
      params:
      - name: projectId
        value: ''
        type: path
      - name: apiId
        value: ''
        type: path
      - name: testId
        value: ''
        type: path
    docs: Executes a test suite against the API and returns results.
- info:
    name: Users
    type: folder
  items:
  - info:
      name: APIGen Get Current User
      type: http
    http:
      method: GET
      url: https://api.apigen.com/v1/users/me
    docs: Returns the profile of the authenticated user.
  - info:
      name: APIGen Update Current User
      type: http
    http:
      method: PUT
      url: https://api.apigen.com/v1/users/me
      body:
        type: json
        data: '{}'
    docs: Updates the profile of the authenticated user.
- info:
    name: Tokens
    type: folder
  items:
  - info:
      name: APIGen List API Tokens
      type: http
    http:
      method: GET
      url: https://api.apigen.com/v1/users/me/tokens
    docs: Returns all API tokens for the authenticated user.
  - info:
      name: APIGen Create an API Token
      type: http
    http:
      method: POST
      url: https://api.apigen.com/v1/users/me/tokens
      body:
        type: json
        data: '{}'
    docs: Creates a new API token. The token value is returned only once in the response and cannot be retrieved again.
  - info:
      name: APIGen Revoke an API Token
      type: http
    http:
      method: DELETE
      url: https://api.apigen.com/v1/users/me/tokens/:tokenId
      params:
      - name: tokenId
        value: ''
        type: path
    docs: Revokes and deletes an API token.
bundled: true