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:
  • 201 Created

    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:
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:
  • 201 Created

    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:
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"
    }