Strapi 5 has a new, flattened response format for REST API calls
In Strapi 5, the REST API response format has been simplified and flattened. You can set the Strapi-Response-Format: v4 header to use the old v4 format while you convert your code to fully take into account the new Strapi 5 response format.
This page is part of the breaking changes database and provides information about the breaking change and additional instructions to migrate from Strapi v4 to Strapi 5.
| 🔌 Is this breaking change affecting plugins? | Yes | 
|---|
| 🤖 Is this breaking change automatically handled by a codemod? | No | 
|---|
Breaking change description
In Strapi v4
The Content API returns all the attributes of requested content wrapped inside an attributes parameter:
{
  "data": {
    // system fields
    "id": 14,
    "attributes": {
      // user fields
      "title": "Article A"
      "relation": {
        "data": {
          "id": "clkgylw7d000108lc4rw1bb6s"
          "name": "Category A"
        }
      }
    }
  }
  "meta": {
    "pagination": {
      "page": 1,
      "pageSize": 10
    }
  }
}
In Strapi 5
The Content API returns attributes of requested content without wrapping them in an attributes object, and a documentId is used instead of an id:
{
  "data": {
    // system fields
    "documentId": "clkgylmcc000008lcdd868feh",
    "locale": "en",
    // user fields
    "title": "Article A"
    "relation": {
      // system fields
      "documentId": "clkgylw7d000108lc4rw1bb6s"
      // user fields
      "name": "Category A"
    }
  }
  "meta": {
    "pagination": {
      "page": 1,
      "pageSize": 10
    }
  }
}
Migration
Notes
To use the Strapi v4 response format, set the following header: Strapi-Response-Format: v4.
Manual procedure
Ensure your API calls take into account the new response format, or set the optional header to keep on using the Strapi v4 response format (see notes).