# Introduction

Herodot is a versatile documentation generator for APIs created with Laravel (opens new window). It parses your source code and automatically builds documentation in a variety of formats.

Herodot supports several different ways to add metadata to your endpoints. We call them strategies.
This package ships with several different strategies (but you can easily add your own): PHP Attributes, documentation comments, OpenAPI annotations (thanks to zircote/swagger-php (opens new window)), static analysis and overrides from your configuration file.

The preferred way to document your API with Herodot is using PHP attributes (opens new window). This allows a fluent, simple, and discoverable way to add endpoint metadata by adding attributes:

#[Title('Retrieves a user')]
#[UrlParam(name: 'user', description: 'UUID of the user')]
public function single(User $user) {
    // ...

Check out the full list of attributes.