OpenAPI Specification
Plane uses drf-spectacular to generate an OpenAPI 3.0 specification for the public REST API (/api/v1/). The feature is disabled by default and must be explicitly enabled.
Enable the OpenAPI spec
Add the following to your .env file (at the project root or apps/api/.env):
ENABLE_DRF_SPECTACULAR=1Then restart the API server so it picks up the new variable.
| Variable | Required value | Default | Description |
|---|---|---|---|
ENABLE_DRF_SPECTACULAR | 1 | 0 | Activates drf-spectacular and registers the schema endpoints |
No other environment variables are needed — everything else (schema path prefix, tags, auth schemes, servers) is pre-configured in apps/api/plane/settings/openapi.py.
Access the OpenAPI spec
Replace
{domain_name}below with your self-hosted Plane domain (e.g.plane.example.com).
Once the API server is running with the variable enabled, three endpoints are available:
| Endpoint | URL | Description |
|---|---|---|
GET /api/schema/ | https://{domain_name}/api/schema/ | Raw OpenAPI schema (YAML) |
GET /api/schema/swagger-ui/ | https://{domain_name}/api/schema/swagger-ui/ | Interactive Swagger UI |
GET /api/schema/redoc/ | https://{domain_name}/api/schema/redoc/ | ReDoc documentation viewer |
Download the OpenAPI spec
Browser
Open https://{domain_name}/api/schema/ and save the page. The default format is YAML.
For JSON, append the format query parameter:
https://{domain_name}/api/schema/?format=openapi-jsoncurl
# YAML
curl -o openapi.yaml https://{domain_name}/api/schema/
# JSON
curl -o openapi.json https://{domain_name}/api/schema/?format=openapi-jsonManagement command (offline, no running server required)
# From apps/api/
ENABLE_DRF_SPECTACULAR=1 python manage.py spectacular --file openapi.yaml
ENABLE_DRF_SPECTACULAR=1 python manage.py spectacular --file openapi.json --format openapi-json
