# 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:
|
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}`);