curl \
-X POST 'MEILISEARCH_URL/dynamic-search-rules' \
-H 'Content-Type: application/json'import requests
url = "http://localhost:7700/dynamic-search-rules"
payload = {
"offset": 1,
"limit": 1,
"filter": {
"attributePatterns": { "patterns": ["title", "overview_*", "release_date"] },
"active": True
}
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
offset: 1,
limit: 1,
filter: {
attributePatterns: {patterns: ['title', 'overview_*', 'release_date']},
active: true
}
})
};
fetch('http://localhost:7700/dynamic-search-rules', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_PORT => "7700",
CURLOPT_URL => "http://localhost:7700/dynamic-search-rules",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'offset' => 1,
'limit' => 1,
'filter' => [
'attributePatterns' => [
'patterns' => [
'title',
'overview_*',
'release_date'
]
],
'active' => true
]
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "http://localhost:7700/dynamic-search-rules"
payload := strings.NewReader("{\n \"offset\": 1,\n \"limit\": 1,\n \"filter\": {\n \"attributePatterns\": {\n \"patterns\": [\n \"title\",\n \"overview_*\",\n \"release_date\"\n ]\n },\n \"active\": true\n }\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("http://localhost:7700/dynamic-search-rules")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"offset\": 1,\n \"limit\": 1,\n \"filter\": {\n \"attributePatterns\": {\n \"patterns\": [\n \"title\",\n \"overview_*\",\n \"release_date\"\n ]\n },\n \"active\": true\n }\n}")
.asString();require 'uri'
require 'net/http'
url = URI("http://localhost:7700/dynamic-search-rules")
http = Net::HTTP.new(url.host, url.port)
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"offset\": 1,\n \"limit\": 1,\n \"filter\": {\n \"attributePatterns\": {\n \"patterns\": [\n \"title\",\n \"overview_*\",\n \"release_date\"\n ]\n },\n \"active\": true\n }\n}"
response = http.request(request)
puts response.read_body{
"results": [
{
"uid": "black-friday",
"description": "Black Friday 2025 rules",
"priority": 10,
"active": true,
"conditions": [
{
"scope": "query",
"isEmpty": true
},
{
"scope": "time",
"start": "2025-11-28T00:00:00Z",
"end": "2025-11-28T23:59:59Z"
}
],
"actions": [
{
"selector": {
"indexUid": "products",
"id": "123"
},
"action": {
"type": "pin",
"position": 1
}
}
]
}
],
"offset": 0,
"limit": 20,
"total": 1
}{
"message": "The Authorization header is missing. It must use the bearer authorization method.",
"code": "missing_authorization_header",
"type": "auth",
"link": "https://docs.meilisearch.com/errors#missing_authorization_header"
}List search rules
Return all search rules configured on the instance.
curl \
-X POST 'MEILISEARCH_URL/dynamic-search-rules' \
-H 'Content-Type: application/json'import requests
url = "http://localhost:7700/dynamic-search-rules"
payload = {
"offset": 1,
"limit": 1,
"filter": {
"attributePatterns": { "patterns": ["title", "overview_*", "release_date"] },
"active": True
}
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
offset: 1,
limit: 1,
filter: {
attributePatterns: {patterns: ['title', 'overview_*', 'release_date']},
active: true
}
})
};
fetch('http://localhost:7700/dynamic-search-rules', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_PORT => "7700",
CURLOPT_URL => "http://localhost:7700/dynamic-search-rules",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'offset' => 1,
'limit' => 1,
'filter' => [
'attributePatterns' => [
'patterns' => [
'title',
'overview_*',
'release_date'
]
],
'active' => true
]
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "http://localhost:7700/dynamic-search-rules"
payload := strings.NewReader("{\n \"offset\": 1,\n \"limit\": 1,\n \"filter\": {\n \"attributePatterns\": {\n \"patterns\": [\n \"title\",\n \"overview_*\",\n \"release_date\"\n ]\n },\n \"active\": true\n }\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("http://localhost:7700/dynamic-search-rules")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"offset\": 1,\n \"limit\": 1,\n \"filter\": {\n \"attributePatterns\": {\n \"patterns\": [\n \"title\",\n \"overview_*\",\n \"release_date\"\n ]\n },\n \"active\": true\n }\n}")
.asString();require 'uri'
require 'net/http'
url = URI("http://localhost:7700/dynamic-search-rules")
http = Net::HTTP.new(url.host, url.port)
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"offset\": 1,\n \"limit\": 1,\n \"filter\": {\n \"attributePatterns\": {\n \"patterns\": [\n \"title\",\n \"overview_*\",\n \"release_date\"\n ]\n },\n \"active\": true\n }\n}"
response = http.request(request)
puts response.read_body{
"results": [
{
"uid": "black-friday",
"description": "Black Friday 2025 rules",
"priority": 10,
"active": true,
"conditions": [
{
"scope": "query",
"isEmpty": true
},
{
"scope": "time",
"start": "2025-11-28T00:00:00Z",
"end": "2025-11-28T23:59:59Z"
}
],
"actions": [
{
"selector": {
"indexUid": "products",
"id": "123"
},
"action": {
"type": "pin",
"position": 1
}
}
]
}
],
"offset": 0,
"limit": 20,
"total": 1
}{
"message": "The Authorization header is missing. It must use the bearer authorization method.",
"code": "missing_authorization_header",
"type": "auth",
"link": "https://docs.meilisearch.com/errors#missing_authorization_header"
}Authorizations
An API key is a token that you provide when making API calls. Read more about how to secure your project.
Include the API key to the Authorization header, for instance:
-H 'Authorization: Bearer 6436fc5237b0d6e0d64253fbaac21d135012ecf1'
If you use a SDK, ensure you instantiate the client with the API key, for instance with JS SDK:
const client = new MeiliSearch({
host: 'MEILISEARCH_URL',
apiKey: '6436fc5237b0d6e0d64253fbaac21d135012ecf1'
});
Body
Number of rules to skip. Defaults to 0.
x >= 0Maximum number of rules to return. Default to 20.
x >= 0Optional filter to restrict which rules are returned (e.g. by attribute patterns or by properties like if the rule is active or not)
Show child attributes
Show child attributes
Response
Dynamic search rules are returned.
Items for the current page.
Show child attributes
Show child attributes
Number of items skipped.
x >= 0Maximum number of items returned.
x >= 0Total number of items matching the query.
x >= 0Was this page helpful?