Sites¶
Sites are managed at /api/v3/sites/ and are exposed for authenticated requests only, with no anonymous access. See v3 API authentication for how tokens map to permissions.
Sites are exposed as CRUD:
GET /sites/: list sites.GET /sites/{site_id}/: return one site.POST /sites/: create a site.PUT /sites/{site_id}/: update a site.DELETE /sites/{site_id}/: delete a site.
A site is described by its id, hostname, port, site_name, root_page_id, and is_default_site state. The list and detail endpoints are filtered by the permission policy, so a caller only sees sites they have a permission on.
Create and update take the site fields as JSON and go through SiteForm, so the same rules apply as in the admin: hostname normalization, uniqueness and default-site constraints, root page validation, and cache invalidation. Mutations run through Wagtail actions and return 201 on create and 204 on delete. Creating a site:
curl -X POST "https://example.com/api/v3/sites/" \
-H "Authorization: Bearer $TOKEN" \
-H "Content-Type: application/json" \
-d '{"hostname": "www.example.com", "port": 443, "site_name": "Example", "root_page_id": 4, "is_default_site": true}'
Sites API reference¶
We document the full generated OpenAPI reference for every sites endpoint from Wagtail’s own OpenAPI snapshot, see v3 API reference.