curl --request POST \
--url https://api.akumi.eu/v1/memory/search \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"query": "<string>",
"collection": [
"<string>"
],
"user_ref": "<string>",
"as_of": "2023-11-07T05:31:56Z",
"between": {
"from": "2023-11-07T05:31:56Z",
"to": "2023-11-07T05:31:56Z"
},
"limit": 25
}
'import requests
url = "https://api.akumi.eu/v1/memory/search"
payload = {
"query": "<string>",
"collection": ["<string>"],
"user_ref": "<string>",
"as_of": "2023-11-07T05:31:56Z",
"between": {
"from": "2023-11-07T05:31:56Z",
"to": "2023-11-07T05:31:56Z"
},
"limit": 25
}
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>',
collection: ['<string>'],
user_ref: '<string>',
as_of: '2023-11-07T05:31:56Z',
between: {from: '2023-11-07T05:31:56Z', to: '2023-11-07T05:31:56Z'},
limit: 25
})
};
fetch('https://api.akumi.eu/v1/memory/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.akumi.eu/v1/memory/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>',
'collection' => [
'<string>'
],
'user_ref' => '<string>',
'as_of' => '2023-11-07T05:31:56Z',
'between' => [
'from' => '2023-11-07T05:31:56Z',
'to' => '2023-11-07T05:31:56Z'
],
'limit' => 25
]),
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.akumi.eu/v1/memory/search"
payload := strings.NewReader("{\n \"query\": \"<string>\",\n \"collection\": [\n \"<string>\"\n ],\n \"user_ref\": \"<string>\",\n \"as_of\": \"2023-11-07T05:31:56Z\",\n \"between\": {\n \"from\": \"2023-11-07T05:31:56Z\",\n \"to\": \"2023-11-07T05:31:56Z\"\n },\n \"limit\": 25\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.akumi.eu/v1/memory/search")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"query\": \"<string>\",\n \"collection\": [\n \"<string>\"\n ],\n \"user_ref\": \"<string>\",\n \"as_of\": \"2023-11-07T05:31:56Z\",\n \"between\": {\n \"from\": \"2023-11-07T05:31:56Z\",\n \"to\": \"2023-11-07T05:31:56Z\"\n },\n \"limit\": 25\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.akumi.eu/v1/memory/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 \"collection\": [\n \"<string>\"\n ],\n \"user_ref\": \"<string>\",\n \"as_of\": \"2023-11-07T05:31:56Z\",\n \"between\": {\n \"from\": \"2023-11-07T05:31:56Z\",\n \"to\": \"2023-11-07T05:31:56Z\"\n },\n \"limit\": 25\n}"
response = http.request(request)
puts response.read_body{
"data": [
"<unknown>"
]
}{
"message": "<string>"
}{
"message": "<string>",
"errors": {}
}Search facts and documents together
Searches the end-user’s own facts, the workspace, and every collection in it, and returns facts and passages in one ranked list with the source of each. This replaces the separate fact and document search endpoints. Metered as one retrieval.
curl --request POST \
--url https://api.akumi.eu/v1/memory/search \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"query": "<string>",
"collection": [
"<string>"
],
"user_ref": "<string>",
"as_of": "2023-11-07T05:31:56Z",
"between": {
"from": "2023-11-07T05:31:56Z",
"to": "2023-11-07T05:31:56Z"
},
"limit": 25
}
'import requests
url = "https://api.akumi.eu/v1/memory/search"
payload = {
"query": "<string>",
"collection": ["<string>"],
"user_ref": "<string>",
"as_of": "2023-11-07T05:31:56Z",
"between": {
"from": "2023-11-07T05:31:56Z",
"to": "2023-11-07T05:31:56Z"
},
"limit": 25
}
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>',
collection: ['<string>'],
user_ref: '<string>',
as_of: '2023-11-07T05:31:56Z',
between: {from: '2023-11-07T05:31:56Z', to: '2023-11-07T05:31:56Z'},
limit: 25
})
};
fetch('https://api.akumi.eu/v1/memory/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.akumi.eu/v1/memory/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>',
'collection' => [
'<string>'
],
'user_ref' => '<string>',
'as_of' => '2023-11-07T05:31:56Z',
'between' => [
'from' => '2023-11-07T05:31:56Z',
'to' => '2023-11-07T05:31:56Z'
],
'limit' => 25
]),
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.akumi.eu/v1/memory/search"
payload := strings.NewReader("{\n \"query\": \"<string>\",\n \"collection\": [\n \"<string>\"\n ],\n \"user_ref\": \"<string>\",\n \"as_of\": \"2023-11-07T05:31:56Z\",\n \"between\": {\n \"from\": \"2023-11-07T05:31:56Z\",\n \"to\": \"2023-11-07T05:31:56Z\"\n },\n \"limit\": 25\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.akumi.eu/v1/memory/search")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"query\": \"<string>\",\n \"collection\": [\n \"<string>\"\n ],\n \"user_ref\": \"<string>\",\n \"as_of\": \"2023-11-07T05:31:56Z\",\n \"between\": {\n \"from\": \"2023-11-07T05:31:56Z\",\n \"to\": \"2023-11-07T05:31:56Z\"\n },\n \"limit\": 25\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.akumi.eu/v1/memory/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 \"collection\": [\n \"<string>\"\n ],\n \"user_ref\": \"<string>\",\n \"as_of\": \"2023-11-07T05:31:56Z\",\n \"between\": {\n \"from\": \"2023-11-07T05:31:56Z\",\n \"to\": \"2023-11-07T05:31:56Z\"\n },\n \"limit\": 25\n}"
response = http.request(request)
puts response.read_body{
"data": [
"<unknown>"
]
}{
"message": "<string>"
}{
"message": "<string>",
"errors": {}
}Authorizations
Bearer authentication header of the form Bearer <token>, where <token> is your auth token.
Headers
Your own id for this request, which becomes the platform's request id. A retry carrying the same key is matched to the first request's usage record rather than billed again, so make it unique per request. A generated uuid is used when absent.
Body
Validates a POST /v1/memory/search body: the unified retrieval endpoint over
the caller's personal scope, the workspace, and every collection in it, or
over exactly the collections named in collection.
2000Omit it to blend every collection in the workspace; pass a collection slug, or a list of slugs, to read only those plus the caller's own personal memory. A slug the workspace does not have is rejected, never ignored.
255255The day the question is about, not the day it is asked. Omit it to search what is true now. Pass a date to search what was true then, which is the only way to reach a fact that has since been replaced: "where did I work in March" and "where do I work" are different questions with different right answers.
A SPAN, for the questions one day cannot answer: "how much did I
spend on contractors last quarter" is about everything true
across three months. means is required rather than defaulted,
because "what I told you last year" and "what was true last year"
are different sets of facts and guessing between them is silent.
A span replaces as_of rather than narrowing it.
Show child attributes
Show child attributes
1 <= x <= 50