Search documentation
Perform semantic and keyword searches across your documentation with configurable filtering and pagination.
Authenticate with an assistant API key. Search requests do not consume credits.
curl --request POST \
--url https://api.mintlify.com/discovery/v1/search/{domain} \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"query": "<string>",
"pageSize": 10,
"scoreThreshold": 0.5,
"filter": {
"version": "<string>",
"language": "<string>",
"tag": "<string>",
"groups": [
"<string>"
]
}
}
'import requests
url = "https://api.mintlify.com/discovery/v1/search/{domain}"
payload = {
"query": "<string>",
"pageSize": 10,
"scoreThreshold": 0.5,
"filter": {
"version": "<string>",
"language": "<string>",
"tag": "<string>",
"groups": ["<string>"]
}
}
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({
query: '<string>',
pageSize: 10,
scoreThreshold: 0.5,
filter: {
version: '<string>',
language: '<string>',
tag: '<string>',
groups: ['<string>']
}
})
};
fetch('https://api.mintlify.com/discovery/v1/search/{domain}', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.mintlify.com/discovery/v1/search/{domain}",
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([
'query' => '<string>',
'pageSize' => 10,
'scoreThreshold' => 0.5,
'filter' => [
'version' => '<string>',
'language' => '<string>',
'tag' => '<string>',
'groups' => [
'<string>'
]
]
]),
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 := "https://api.mintlify.com/discovery/v1/search/{domain}"
payload := strings.NewReader("{\n \"query\": \"<string>\",\n \"pageSize\": 10,\n \"scoreThreshold\": 0.5,\n \"filter\": {\n \"version\": \"<string>\",\n \"language\": \"<string>\",\n \"tag\": \"<string>\",\n \"groups\": [\n \"<string>\"\n ]\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("https://api.mintlify.com/discovery/v1/search/{domain}")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"query\": \"<string>\",\n \"pageSize\": 10,\n \"scoreThreshold\": 0.5,\n \"filter\": {\n \"version\": \"<string>\",\n \"language\": \"<string>\",\n \"tag\": \"<string>\",\n \"groups\": [\n \"<string>\"\n ]\n }\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.mintlify.com/discovery/v1/search/{domain}")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"query\": \"<string>\",\n \"pageSize\": 10,\n \"scoreThreshold\": 0.5,\n \"filter\": {\n \"version\": \"<string>\",\n \"language\": \"<string>\",\n \"tag\": \"<string>\",\n \"groups\": [\n \"<string>\"\n ]\n }\n}"
response = http.request(request)
puts response.read_body[
{
"content": "<string>",
"path": "<string>",
"metadata": {}
}
]Rate limits
- 10,000 requests per Mintlify organization per hour
Authorizations
The Authorization header expects a Bearer token. Use an assistant API key. Generate one on the API keys page in your dashboard. In production, proxy requests through your backend rather than embedding the key in client-side code.
Path Parameters
The domain identifier from your domain.mintlify.site URL. Can be found at the end of your dashboard URL. For example, app.mintlify.com/organization/domain has a domain identifier of domain.
Body
The search query to execute against your documentation content.
Number of search results to return. Must be between 1 and 50. Defaults to 10 if not specified.
1 <= x <= 50Minimum relevance score for results. Only results with a score at or above this threshold are returned. Must be between 0 and 1.
0 <= x <= 1Optional filtering parameters to narrow search results.
Show child attributes
Show child attributes
curl --request POST \
--url https://api.mintlify.com/discovery/v1/search/{domain} \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"query": "<string>",
"pageSize": 10,
"scoreThreshold": 0.5,
"filter": {
"version": "<string>",
"language": "<string>",
"tag": "<string>",
"groups": [
"<string>"
]
}
}
'import requests
url = "https://api.mintlify.com/discovery/v1/search/{domain}"
payload = {
"query": "<string>",
"pageSize": 10,
"scoreThreshold": 0.5,
"filter": {
"version": "<string>",
"language": "<string>",
"tag": "<string>",
"groups": ["<string>"]
}
}
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({
query: '<string>',
pageSize: 10,
scoreThreshold: 0.5,
filter: {
version: '<string>',
language: '<string>',
tag: '<string>',
groups: ['<string>']
}
})
};
fetch('https://api.mintlify.com/discovery/v1/search/{domain}', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.mintlify.com/discovery/v1/search/{domain}",
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([
'query' => '<string>',
'pageSize' => 10,
'scoreThreshold' => 0.5,
'filter' => [
'version' => '<string>',
'language' => '<string>',
'tag' => '<string>',
'groups' => [
'<string>'
]
]
]),
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 := "https://api.mintlify.com/discovery/v1/search/{domain}"
payload := strings.NewReader("{\n \"query\": \"<string>\",\n \"pageSize\": 10,\n \"scoreThreshold\": 0.5,\n \"filter\": {\n \"version\": \"<string>\",\n \"language\": \"<string>\",\n \"tag\": \"<string>\",\n \"groups\": [\n \"<string>\"\n ]\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("https://api.mintlify.com/discovery/v1/search/{domain}")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"query\": \"<string>\",\n \"pageSize\": 10,\n \"scoreThreshold\": 0.5,\n \"filter\": {\n \"version\": \"<string>\",\n \"language\": \"<string>\",\n \"tag\": \"<string>\",\n \"groups\": [\n \"<string>\"\n ]\n }\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.mintlify.com/discovery/v1/search/{domain}")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"query\": \"<string>\",\n \"pageSize\": 10,\n \"scoreThreshold\": 0.5,\n \"filter\": {\n \"version\": \"<string>\",\n \"language\": \"<string>\",\n \"tag\": \"<string>\",\n \"groups\": [\n \"<string>\"\n ]\n }\n}"
response = http.request(request)
puts response.read_body[
{
"content": "<string>",
"path": "<string>",
"metadata": {}
}
]