curl --request GET \
--url https://api.gleap.io/v3/tickets/search-feature-requests \
--header 'Authorization: Bearer <token>' \
--header 'project: <project>'import requests
url = "https://api.gleap.io/v3/tickets/search-feature-requests"
headers = {
"project": "<project>",
"Authorization": "Bearer <token>"
}
response = requests.get(url, headers=headers)
print(response.text)const options = {
method: 'GET',
headers: {project: '<project>', Authorization: 'Bearer <token>'}
};
fetch('https://api.gleap.io/v3/tickets/search-feature-requests', 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.gleap.io/v3/tickets/search-feature-requests",
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>",
"project: <project>"
],
]);
$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 := "https://api.gleap.io/v3/tickets/search-feature-requests"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("project", "<project>")
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("https://api.gleap.io/v3/tickets/search-feature-requests")
.header("project", "<project>")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.gleap.io/v3/tickets/search-feature-requests")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["project"] = '<project>'
request["Authorization"] = 'Bearer <token>'
response = http.request(request)
puts response.read_bodySearch feature requests semantically
Dedupe-style search across the project’s
FEATURE_REQUEST tickets. Uses OpenSearch fuzzy match + Voyage AI
rerank — returns the most semantically similar matches to the
query argument, not literal keyword hits. Use this before filing
a new feature request to avoid duplicates.
Returns { matches: [...] } with at most 5 reranked matches, best first, each with its rerank score.
Archived feature requests are excluded, and so are hidden lanes unless includeHiddenLanes=true: those
matches come back with public: false and no status label or share link (new requests land in the
hidden intake lane, so an agent deduping before it files one needs them). When the reranker is
unavailable the matches are unranked (score: null) and ranked is false.
curl --request GET \
--url https://api.gleap.io/v3/tickets/search-feature-requests \
--header 'Authorization: Bearer <token>' \
--header 'project: <project>'import requests
url = "https://api.gleap.io/v3/tickets/search-feature-requests"
headers = {
"project": "<project>",
"Authorization": "Bearer <token>"
}
response = requests.get(url, headers=headers)
print(response.text)const options = {
method: 'GET',
headers: {project: '<project>', Authorization: 'Bearer <token>'}
};
fetch('https://api.gleap.io/v3/tickets/search-feature-requests', 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.gleap.io/v3/tickets/search-feature-requests",
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>",
"project: <project>"
],
]);
$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 := "https://api.gleap.io/v3/tickets/search-feature-requests"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("project", "<project>")
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("https://api.gleap.io/v3/tickets/search-feature-requests")
.header("project", "<project>")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.gleap.io/v3/tickets/search-feature-requests")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["project"] = '<project>'
request["Authorization"] = 'Bearer <token>'
response = http.request(request)
puts response.read_bodyAuthorizations
Bearer authentication header of the form Bearer <token>, where <token> is your auth token.
Headers
Query Parameters
- Required free-text description of the requested feature.
- Size of the candidate set retrieved before reranking (default: 10). The reranked response is still capped at 5 matches unless
minScore=0is passed.
- Minimum rerank relevance score, 0-1 (default: 0.35).
0disables reranking and returns up tolimitcandidates.
- Also return feature requests in hidden lanes, flagged
public: false(default: false).
Response
Ok