curl --request POST \
--url https://api.useanima.sh/v1/messages/search \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"query": "<string>",
"filters": {},
"pagination": {
"limit": 20
}
}
'import requests
url = "https://api.useanima.sh/v1/messages/search"
payload = {
"query": "<string>",
"filters": {},
"pagination": { "limit": 20 }
}
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>', filters: {}, pagination: {limit: 20}})
};
fetch('https://api.useanima.sh/v1/messages/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.useanima.sh/v1/messages/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([
'query' => '<string>',
'filters' => [
],
'pagination' => [
'limit' => 20
]
]),
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.useanima.sh/v1/messages/search"
payload := strings.NewReader("{\n \"query\": \"<string>\",\n \"filters\": {},\n \"pagination\": {\n \"limit\": 20\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.useanima.sh/v1/messages/search")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"query\": \"<string>\",\n \"filters\": {},\n \"pagination\": {\n \"limit\": 20\n }\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.useanima.sh/v1/messages/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 \"query\": \"<string>\",\n \"filters\": {},\n \"pagination\": {\n \"limit\": 20\n }\n}"
response = http.request(request)
puts response.read_body{
"items": [
{
"id": "<string>",
"agentId": "<string>",
"inboxId": "<string>",
"channel": "EMAIL",
"direction": "INBOUND",
"status": "QUEUED",
"fromAddress": "<string>",
"toAddress": "<string>",
"subject": "<string>",
"body": "<string>",
"bodyHtml": "<string>",
"extractedText": "<string>",
"extractedHtml": "<string>",
"headers": {},
"metadata": {},
"threadId": "<string>",
"labels": [
"<string>"
],
"inReplyTo": "<string>",
"externalId": "<string>",
"deletedAt": "2023-11-07T05:31:56Z",
"sentAt": "2023-11-07T05:31:56Z",
"receivedAt": "2023-11-07T05:31:56Z",
"attachments": [
{
"id": "<string>",
"filename": "<string>",
"mimeType": "<string>",
"sizeBytes": 1,
"storageKey": "<string>",
"url": "<string>",
"createdAt": "2023-11-07T05:31:56Z",
"scanStatus": "PENDING",
"detectedMimeType": "<string>"
}
],
"createdAt": "2023-11-07T05:31:56Z",
"updatedAt": "2023-11-07T05:31:56Z",
"snippet": "<string>",
"rank": 123
}
],
"pagination": {
"nextCursor": "<string>",
"hasMore": true
}
}Post messagessearch
curl --request POST \
--url https://api.useanima.sh/v1/messages/search \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"query": "<string>",
"filters": {},
"pagination": {
"limit": 20
}
}
'import requests
url = "https://api.useanima.sh/v1/messages/search"
payload = {
"query": "<string>",
"filters": {},
"pagination": { "limit": 20 }
}
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>', filters: {}, pagination: {limit: 20}})
};
fetch('https://api.useanima.sh/v1/messages/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.useanima.sh/v1/messages/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([
'query' => '<string>',
'filters' => [
],
'pagination' => [
'limit' => 20
]
]),
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.useanima.sh/v1/messages/search"
payload := strings.NewReader("{\n \"query\": \"<string>\",\n \"filters\": {},\n \"pagination\": {\n \"limit\": 20\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.useanima.sh/v1/messages/search")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"query\": \"<string>\",\n \"filters\": {},\n \"pagination\": {\n \"limit\": 20\n }\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.useanima.sh/v1/messages/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 \"query\": \"<string>\",\n \"filters\": {},\n \"pagination\": {\n \"limit\": 20\n }\n}"
response = http.request(request)
puts response.read_body{
"items": [
{
"id": "<string>",
"agentId": "<string>",
"inboxId": "<string>",
"channel": "EMAIL",
"direction": "INBOUND",
"status": "QUEUED",
"fromAddress": "<string>",
"toAddress": "<string>",
"subject": "<string>",
"body": "<string>",
"bodyHtml": "<string>",
"extractedText": "<string>",
"extractedHtml": "<string>",
"headers": {},
"metadata": {},
"threadId": "<string>",
"labels": [
"<string>"
],
"inReplyTo": "<string>",
"externalId": "<string>",
"deletedAt": "2023-11-07T05:31:56Z",
"sentAt": "2023-11-07T05:31:56Z",
"receivedAt": "2023-11-07T05:31:56Z",
"attachments": [
{
"id": "<string>",
"filename": "<string>",
"mimeType": "<string>",
"sizeBytes": 1,
"storageKey": "<string>",
"url": "<string>",
"createdAt": "2023-11-07T05:31:56Z",
"scanStatus": "PENDING",
"detectedMimeType": "<string>"
}
],
"createdAt": "2023-11-07T05:31:56Z",
"updatedAt": "2023-11-07T05:31:56Z",
"snippet": "<string>",
"rank": 123
}
],
"pagination": {
"nextCursor": "<string>",
"hasMore": true
}
}Authorizations
JWT Bearer token obtained from authentication. Pass as: Authorization: Bearer
Body
Request body for searching messages with full-text query and optional filters
Full-text search query matched against subject, body, and addresses. Supports web-search syntax: bare words are AND-ed (invoice overdue), "quoted phrases" match in order, -word excludes, and or alternates (invoice or receipt). Words are stemmed, so approving matches approval. Results are ranked by relevance, with subject matches weighted above body matches above address matches. For meaning-based rather than keyword matching, use POST /messages/search/semantic instead.
1Optional filters to narrow search results
Show child attributes
Show child attributes
Pagination parameters for the search results
Show child attributes
Show child attributes
