Documents
sort-pagination
sort-pagination
Type
External
Status
Published
Created
Mar 5, 2026
Updated
Mar 5, 2026

import QsIntroFull from '/docs/snippets/qs-intro-full.md'
import QsForQueryTitle from '/docs/snippets/qs-for-query-title.md'
import QsForQueryBody from '/docs/snippets/qs-for-query-body.md'

REST API: Sort & Pagination#

Entries that are returned by queries to the REST API can be sorted and paginated.

Sorting#

Queries can accept a sort parameter that allows sorting on one or multiple fields with the following syntaxes:

  • GET /api/:pluralApiId?sort=value to sort on 1 field
  • GET /api/:pluralApiId?sort[0]=value1&sort[1]=value2 to sort on multiple fields (e.g. on 2 fields)

The sorting order can be defined with:

  • :asc for ascending order (default order, can be omitted)
  • or :desc for descending order.

Example: Sort using 2 fields#

You can sort by multiple fields by passing fields in a sort array.


GET /api/restaurants?sort[0]=Description&sort[1]=Name

JavaScript query (built with the qs library):
const qs = require('qs');
const query = qs.stringify({
  sort: ['Description', 'Name'],
}, {
  encodeValuesOnly: true, // prettify URL
});

await request(`/api/restaurants?${query}`);
{
  "data": [
    {
      "id": 9,
      "documentId": "hgv1vny5cebq2l3czil1rpb3",
      "Name": "BMK Paris Bamako",
      "Description": [
        {
          "type": "paragraph",
          "children": [
            {
              "type": "text",
              "text": "A very short description goes here."
            }
          ]
        }
      ],
      // …
    },
    {
      "id": 8,
      "documentId": "flzc8qrarj19ee0luix8knxn",
      "Name": "Restaurant D",
      "Description": [
        {
          "type": "paragraph",
          "children": [
            {
              "type": "text",
              "text": "A very short description goes here."
            }
          ]
        }
      ],
      // …
    },
   // … 
  ],
  "meta": {
    // …
  }
}

Example: Sort using 2 fields and set the order#

Using the sort parameter and defining :asc or :desc on sorted fields, you can get results sorted in a particular order.


GET /api/restaurants?sort[0]=Description:asc&sort[1]=Name:desc

JavaScript query (built with the qs library):
const qs = require('qs');
const query = qs.stringify({
  sort: ['Description:asc', 'Name:desc'],
}, {
  encodeValuesOnly: true, // prettify URL
});

await request(`/api/restaurants?${query}`);
{
  "data": [
    {
      "id": 8,
      "documentId": "flzc8qrarj19ee0luix8knxn",
      "Name": "Restaurant D",
      "Description": [
        {
          "type": "paragraph",
          "children": [
            {
              "type": "text",
              "text": "A very short description goes here."
            }
          ]
        }
      ],
      // …
    },
    {
      "id": 9,
      "documentId": "hgv1vny5cebq2l3czil1rpb3",
      "Name": "BMK Paris Bamako",
      "Description": [
        {
          "type": "paragraph",
          "children": [
            {
              "type": "text",
              "text": "A very short description goes here."
            }
          ]
        }
      ],
      // …
    },
    // …
  ],
  "meta": {
    // …
  }
}

Pagination#

Queries can accept pagination parameters. Results can be paginated:

  • either by page (i.e., specifying a page number and the number of entries per page)
  • or by offset (i.e., specifying how many entries to skip and to return)

Pagination by page#

To paginate results by page, use the following parameters:

ParameterTypeDescriptionDefault
pagination[page]IntegerPage number1
pagination[pageSize]IntegerPage size25
pagination[withCount]BooleanAdds the total numbers of entries and the number of pages to the responseTrue

GET /api/articles?pagination[page]=1&pagination[pageSize]=10

JavaScript query (built with the qs library):
const qs = require('qs');
const query = qs.stringify({
  pagination: {
    page: 1,
    pageSize: 10,
  },
}, {
  encodeValuesOnly: true, // prettify URL
});

await request(`/api/articles?${query}`);
{
  "data": [
    // ...
  ],
  "meta": {
    "pagination": {
      "page": 1,
      "pageSize": 10,
      "pageCount": 5,
      "total": 48
    }
  }
}

Pagination by offset#

To paginate results by offset, use the following parameters:

ParameterTypeDescriptionDefault
pagination[start]IntegerStart value (i.e. first entry to return)0
pagination[limit]IntegerNumber of entries to return25
pagination[withCount]BooleanToggles displaying the total number of entries to the responsetrue

GET /api/articles?pagination[start]=0&pagination[limit]=10

JavaScript query (built with the qs library):
const qs = require('qs');
const query = qs.stringify({
  pagination: {
    start: 0,
    limit: 10,
  },
}, {
  encodeValuesOnly: true, // prettify URL
});

await request(`/api/articles?${query}`);
{
  "data": [
    // ...
  ],
  "meta": {
    "pagination": {
      "start": 0,
      "limit": 10,
      "total": 42
    }
  }
}