curl \
-X GET 'MEILISEARCH_URL/dynamic-search-rules/black-friday'import requests
url = "http://localhost:7700/dynamic-search-rules/{uid}"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('http://localhost:7700/dynamic-search-rules/{uid}', 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/{uid}",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "http://localhost:7700/dynamic-search-rules/{uid}"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("Authorization", "Bearer <token>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("http://localhost:7700/dynamic-search-rules/{uid}")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("http://localhost:7700/dynamic-search-rules/{uid}")
http = Net::HTTP.new(url.host, url.port)
request = Net::HTTP::Get.new(url)
request["Authorization"] = 'Bearer <token>'
response = http.request(request)
puts response.read_body{
"uid": "black-friday",
"description": "Black Friday 2025 rules",
"precedence": 10,
"active": true,
"conditions": {
"query": {
"isEmpty": true
},
"time": {
"start": "2025-11-28T00:00:00Z",
"end": "2025-11-28T23:59:59Z"
}
},
"actions": [
{
"selector": {
"indexUid": "products",
"id": "123"
},
"action": {
"type": "pin",
"position": 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"
}{
"message": "Dynamic search rule `black-friday` not found.",
"code": "dynamic_search_rule_not_found",
"type": "invalid_request",
"link": "https://docs.meilisearch.com/errors#dynamic_search_rule_not_found"
}Get a search rule
Retrieve a single search rule by its unique identifier.
curl \
-X GET 'MEILISEARCH_URL/dynamic-search-rules/black-friday'import requests
url = "http://localhost:7700/dynamic-search-rules/{uid}"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('http://localhost:7700/dynamic-search-rules/{uid}', 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/{uid}",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "http://localhost:7700/dynamic-search-rules/{uid}"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("Authorization", "Bearer <token>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("http://localhost:7700/dynamic-search-rules/{uid}")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("http://localhost:7700/dynamic-search-rules/{uid}")
http = Net::HTTP.new(url.host, url.port)
request = Net::HTTP::Get.new(url)
request["Authorization"] = 'Bearer <token>'
response = http.request(request)
puts response.read_body{
"uid": "black-friday",
"description": "Black Friday 2025 rules",
"precedence": 10,
"active": true,
"conditions": {
"query": {
"isEmpty": true
},
"time": {
"start": "2025-11-28T00:00:00Z",
"end": "2025-11-28T23:59:59Z"
}
},
"actions": [
{
"selector": {
"indexUid": "products",
"id": "123"
},
"action": {
"type": "pin",
"position": 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"
}{
"message": "Dynamic search rule `black-friday` not found.",
"code": "dynamic_search_rule_not_found",
"type": "invalid_request",
"link": "https://docs.meilisearch.com/errors#dynamic_search_rule_not_found"
}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'
});
Path Parameters
Unique identifier of the search rule.
Response
Dynamic search rule returned.
Unique identifier of the dynamic search rule.
"movies"
Actions to apply when the dynamic search rule matches.
Show child attributes
Show child attributes
Human-readable description of the dynamic search rule.
Date time of the last update of this rule.
Precedence of the dynamic search rule. Lower numeric values take precedence over higher ones. If omitted, the rule is treated as having the lowest precedence. This precedence is used to resolve conflicts between matching rules:
- If the same document is selected by multiple rules, the smallest
prioritynumber wins - If different documents are pinned to the same position, they are ordered by ascending
priority
x >= 0Whether the dynamic search rule is active.
Conditions that must match before the dynamic search rule applies.
Show child attributes
Show child attributes
Was this page helpful?