v3 API reference¶
For the best results, we recommend existing projects generate reference documentation from their own API exports, or use the interactive explorer at /api/v3/docs. The reference below is generated as part of Wagtail’s build pipelines, and will not contain project-specific changes.
- GET /api/v3/pages/¶
List pages
- Query Parameters:
limit (integer)
offset (integer)
Example request:
GET /api/v3/pages/ HTTP/1.1 Host: example.com
- Status Codes:
200 OK –
OK
Example response:
HTTP/1.1 200 OK Content-Type: application/json { "count": 1, "items": [ { "id": 1, "meta": { "detail_url": "string", "first_published_at": "2026-07-08T17:56:09.013379", "html_url": "string", "slug": "string", "type": "string" }, "title": "string" } ] }
- GET /api/v3/pages/{page_id}/¶
Page detail
- Parameters:
page_id (integer)
Example request:
GET /api/v3/pages/{page_id}/ HTTP/1.1 Host: example.com
- Status Codes:
200 OK –
OK
Example response:
HTTP/1.1 200 OK Content-Type: application/json { "id": 1, "meta": { "detail_url": "string", "first_published_at": "2026-07-08T17:56:09.013379", "html_url": "string", "slug": "string", "type": "string" }, "title": "string" }
- GET /api/v3/redirects/¶
List redirects
- Query Parameters:
limit (integer)
offset (integer)
Example request:
GET /api/v3/redirects/ HTTP/1.1 Host: example.com
- Status Codes:
200 OK –
OK
Example response:
HTTP/1.1 200 OK Content-Type: application/json { "count": 1, "items": [ { "automatically_created": true, "created_at": "2026-07-08T17:56:09.013379", "id": 1, "is_permanent": true, "old_path": "string", "redirect_link": "string", "redirect_page_id": 1, "redirect_page_route_path": "string", "site_id": 1 } ] }
- POST /api/v3/redirects/¶
Create redirect
Example request:
POST /api/v3/redirects/ HTTP/1.1 Host: example.com Content-Type: application/json { "is_permanent": true, "old_path": "string", "redirect_link": "string", "redirect_page_id": 1, "redirect_page_route_path": "string", "site": 1 }
- Status Codes:
Created
Example response:
HTTP/1.1 201 Created Content-Type: application/json { "automatically_created": true, "created_at": "2026-07-08T17:56:09.013379", "id": 1, "is_permanent": true, "old_path": "string", "redirect_link": "string", "redirect_page_id": 1, "redirect_page_route_path": "string", "site_id": 1 }
- DELETE /api/v3/redirects/{redirect_id}/¶
Delete redirect
- Parameters:
redirect_id (integer)
- Status Codes:
204 No Content – No Content
- GET /api/v3/redirects/{redirect_id}/¶
Redirect detail
- Parameters:
redirect_id (integer)
Example request:
GET /api/v3/redirects/{redirect_id}/ HTTP/1.1 Host: example.com
- Status Codes:
200 OK –
OK
Example response:
HTTP/1.1 200 OK Content-Type: application/json { "automatically_created": true, "created_at": "2026-07-08T17:56:09.013379", "id": 1, "is_permanent": true, "old_path": "string", "redirect_link": "string", "redirect_page_id": 1, "redirect_page_route_path": "string", "site_id": 1 }
- PUT /api/v3/redirects/{redirect_id}/¶
Update redirect
- Parameters:
redirect_id (integer)
Example request:
PUT /api/v3/redirects/{redirect_id}/ HTTP/1.1 Host: example.com Content-Type: application/json { "is_permanent": true, "old_path": "string", "redirect_link": "string", "redirect_page_id": 1, "redirect_page_route_path": "string", "site": 1 }
- Status Codes:
200 OK –
OK
Example response:
HTTP/1.1 200 OK Content-Type: application/json { "automatically_created": true, "created_at": "2026-07-08T17:56:09.013379", "id": 1, "is_permanent": true, "old_path": "string", "redirect_link": "string", "redirect_page_id": 1, "redirect_page_route_path": "string", "site_id": 1 }
- GET /api/v3/schema/¶
List registered content types
Example request:
GET /api/v3/schema/ HTTP/1.1 Host: example.com
- Status Codes:
200 OK –
OK
Example response:
HTTP/1.1 200 OK Content-Type: application/json { "types": [ { "label": "string", "name": "string" } ] }
- GET /api/v3/schema/{type_name}/¶
Schemas for a content type
- Parameters:
type_name (string)
Example request:
GET /api/v3/schema/{type_name}/ HTTP/1.1 Host: example.com
- Status Codes:
200 OK –
OK
Example response:
HTTP/1.1 200 OK Content-Type: application/json { "create": {}, "patch": {}, "read": {} }
- GET /api/v3/sites/¶
List sites
- Query Parameters:
limit (integer)
offset (integer)
Example request:
GET /api/v3/sites/ HTTP/1.1 Host: example.com
- Status Codes:
200 OK –
OK
Example response:
HTTP/1.1 200 OK Content-Type: application/json { "count": 1, "items": [ { "hostname": "string", "id": 1, "is_default_site": true, "port": 1, "root_page_id": 1, "site_name": "string" } ] }
- POST /api/v3/sites/¶
Create site
Example request:
POST /api/v3/sites/ HTTP/1.1 Host: example.com Content-Type: application/json { "hostname": "string", "is_default_site": true, "port": 1, "root_page_id": 1, "site_name": "string" }
- Status Codes:
Created
Example response:
HTTP/1.1 201 Created Content-Type: application/json { "hostname": "string", "id": 1, "is_default_site": true, "port": 1, "root_page_id": 1, "site_name": "string" }
- DELETE /api/v3/sites/{site_id}/¶
Delete site
- Parameters:
site_id (integer)
- Status Codes:
204 No Content – No Content
- GET /api/v3/sites/{site_id}/¶
Site detail
- Parameters:
site_id (integer)
Example request:
GET /api/v3/sites/{site_id}/ HTTP/1.1 Host: example.com
- Status Codes:
200 OK –
OK
Example response:
HTTP/1.1 200 OK Content-Type: application/json { "hostname": "string", "id": 1, "is_default_site": true, "port": 1, "root_page_id": 1, "site_name": "string" }
- PUT /api/v3/sites/{site_id}/¶
Update site
- Parameters:
site_id (integer)
Example request:
PUT /api/v3/sites/{site_id}/ HTTP/1.1 Host: example.com Content-Type: application/json { "hostname": "string", "is_default_site": true, "port": 1, "root_page_id": 1, "site_name": "string" }
- Status Codes:
200 OK –
OK
Example response:
HTTP/1.1 200 OK Content-Type: application/json { "hostname": "string", "id": 1, "is_default_site": true, "port": 1, "root_page_id": 1, "site_name": "string" }