# API parameters

API parameters can be used with the REST API to filter, sort, and paginate results and to select fields and relations to populate. Additionally, specific parameters related to optional Strapi features can be used, like the publication state and locale of a content-type.

The following API parameters are available:

Operator Type Description
sort String or Array Sort the response
filters Object Filter the response
populate String or Object Populate relations, components, or dynamic zones
fields Array Select only specific fields to display
pagination Object Page through entries
publicationState String Select the Draft & Publish state

Only accepts the following values:
  • live
  • preview
locale String or Array Select one ore multiple locales

Query parameters use the LHS bracket syntax (i.e. they are encoded using square brackets [])

💡 TIP

Strapi takes advantage of the ability of the qs (opens new window) library to parse nested objects to create more complex queries. Use qs directly to generate complex queries instead of creating them manually.

Example using qs:
// Use qs to build the following query URL:
// /api/books?sort[0]=title%3Aasc&filters[title][$eq]=hello&populate=%2A&fields[0]=title&pagination[pageSize]=10&pagination[page]=1&publicationState=live&locale[0]=en

const qs = require('qs');
const query = qs.stringify({
  sort: ['title:asc'],
  filters: {
    title: {
      $eq: 'hello',
    },
  },
  populate: '*',
  fields: ['title'],
  pagination: {
    pageSize: 10,
    page: 1,
  },
  publicationState: 'live',
  locale: ['en'],
}, {
  encodeValuesOnly: true, // prettify URL
});

await request(`/api/books?${query}`);