Search cards using semantic search
curl --request POST \
--url https://api.vistaly.com/beta/cards/search \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"filter": {
"must": [
{
"key": "archived",
"match": {
"value": true
}
}
],
"must_not": [
{
"key": "archived",
"match": {
"value": true
}
}
],
"should": [
{
"key": "archived",
"match": {
"value": true
}
}
]
},
"query": "<string>"
}
'import requests
url = "https://api.vistaly.com/beta/cards/search"
payload = {
"filter": {
"must": [
{
"key": "archived",
"match": { "value": True }
}
],
"must_not": [
{
"key": "archived",
"match": { "value": True }
}
],
"should": [
{
"key": "archived",
"match": { "value": True }
}
]
},
"query": "<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({
filter: {
must: [{key: 'archived', match: {value: true}}],
must_not: [{key: 'archived', match: {value: true}}],
should: [{key: 'archived', match: {value: true}}]
},
query: '<string>'
})
};
fetch('https://api.vistaly.com/beta/cards/search', 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.vistaly.com/beta/cards/search",
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([
'filter' => [
'must' => [
[
'key' => 'archived',
'match' => [
'value' => true
]
]
],
'must_not' => [
[
'key' => 'archived',
'match' => [
'value' => true
]
]
],
'should' => [
[
'key' => 'archived',
'match' => [
'value' => true
]
]
]
],
'query' => '<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.vistaly.com/beta/cards/search"
payload := strings.NewReader("{\n \"filter\": {\n \"must\": [\n {\n \"key\": \"archived\",\n \"match\": {\n \"value\": true\n }\n }\n ],\n \"must_not\": [\n {\n \"key\": \"archived\",\n \"match\": {\n \"value\": true\n }\n }\n ],\n \"should\": [\n {\n \"key\": \"archived\",\n \"match\": {\n \"value\": true\n }\n }\n ]\n },\n \"query\": \"<string>\"\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.vistaly.com/beta/cards/search")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"filter\": {\n \"must\": [\n {\n \"key\": \"archived\",\n \"match\": {\n \"value\": true\n }\n }\n ],\n \"must_not\": [\n {\n \"key\": \"archived\",\n \"match\": {\n \"value\": true\n }\n }\n ],\n \"should\": [\n {\n \"key\": \"archived\",\n \"match\": {\n \"value\": true\n }\n }\n ]\n },\n \"query\": \"<string>\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.vistaly.com/beta/cards/search")
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 \"filter\": {\n \"must\": [\n {\n \"key\": \"archived\",\n \"match\": {\n \"value\": true\n }\n }\n ],\n \"must_not\": [\n {\n \"key\": \"archived\",\n \"match\": {\n \"value\": true\n }\n }\n ],\n \"should\": [\n {\n \"key\": \"archived\",\n \"match\": {\n \"value\": true\n }\n }\n ]\n },\n \"query\": \"<string>\"\n}"
response = http.request(request)
puts response.read_body{
"message": "Cards searched"
}{
"message": "Bad request"
}{
"message": "Unauthorized"
}{
"message": "Forbidden"
}{
"message": "Internal server error"
}cards
Search cards using semantic search
Search for cards across your organization using natural language queries
POST
/
beta
/
cards
/
search
Search cards using semantic search
curl --request POST \
--url https://api.vistaly.com/beta/cards/search \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"filter": {
"must": [
{
"key": "archived",
"match": {
"value": true
}
}
],
"must_not": [
{
"key": "archived",
"match": {
"value": true
}
}
],
"should": [
{
"key": "archived",
"match": {
"value": true
}
}
]
},
"query": "<string>"
}
'import requests
url = "https://api.vistaly.com/beta/cards/search"
payload = {
"filter": {
"must": [
{
"key": "archived",
"match": { "value": True }
}
],
"must_not": [
{
"key": "archived",
"match": { "value": True }
}
],
"should": [
{
"key": "archived",
"match": { "value": True }
}
]
},
"query": "<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({
filter: {
must: [{key: 'archived', match: {value: true}}],
must_not: [{key: 'archived', match: {value: true}}],
should: [{key: 'archived', match: {value: true}}]
},
query: '<string>'
})
};
fetch('https://api.vistaly.com/beta/cards/search', 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.vistaly.com/beta/cards/search",
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([
'filter' => [
'must' => [
[
'key' => 'archived',
'match' => [
'value' => true
]
]
],
'must_not' => [
[
'key' => 'archived',
'match' => [
'value' => true
]
]
],
'should' => [
[
'key' => 'archived',
'match' => [
'value' => true
]
]
]
],
'query' => '<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.vistaly.com/beta/cards/search"
payload := strings.NewReader("{\n \"filter\": {\n \"must\": [\n {\n \"key\": \"archived\",\n \"match\": {\n \"value\": true\n }\n }\n ],\n \"must_not\": [\n {\n \"key\": \"archived\",\n \"match\": {\n \"value\": true\n }\n }\n ],\n \"should\": [\n {\n \"key\": \"archived\",\n \"match\": {\n \"value\": true\n }\n }\n ]\n },\n \"query\": \"<string>\"\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.vistaly.com/beta/cards/search")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"filter\": {\n \"must\": [\n {\n \"key\": \"archived\",\n \"match\": {\n \"value\": true\n }\n }\n ],\n \"must_not\": [\n {\n \"key\": \"archived\",\n \"match\": {\n \"value\": true\n }\n }\n ],\n \"should\": [\n {\n \"key\": \"archived\",\n \"match\": {\n \"value\": true\n }\n }\n ]\n },\n \"query\": \"<string>\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.vistaly.com/beta/cards/search")
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 \"filter\": {\n \"must\": [\n {\n \"key\": \"archived\",\n \"match\": {\n \"value\": true\n }\n }\n ],\n \"must_not\": [\n {\n \"key\": \"archived\",\n \"match\": {\n \"value\": true\n }\n }\n ],\n \"should\": [\n {\n \"key\": \"archived\",\n \"match\": {\n \"value\": true\n }\n }\n ]\n },\n \"query\": \"<string>\"\n}"
response = http.request(request)
puts response.read_body{
"message": "Cards searched"
}{
"message": "Bad request"
}{
"message": "Unauthorized"
}{
"message": "Forbidden"
}{
"message": "Internal server error"
}Authorizations
Bearer authentication header of the form Bearer <token>, where <token> is your auth token.
Body
application/json
Used to apply filters based on a card's metadata
Show child attributes
Show child attributes
Natural language search query that finds cards with similar content. The query is converted to a vector representation and matches cards based on semantic similarity to card titles and details. Use filters for exact matches on card metadata (status, type, dates, etc.).
Response
Metrics submitted successfully
Example:
"System provided message"
⌘I