curl --request GET \
--url https://api.atako.ai/notices \
--header 'Authorization: Bearer <token>'import requests
url = "https://api.atako.ai/notices"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://api.atako.ai/notices', 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.atako.ai/notices",
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>"
],
]);
$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.atako.ai/notices"
req, _ := http.NewRequest("GET", url, nil)
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.atako.ai/notices")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.atako.ai/notices")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["Authorization"] = 'Bearer <token>'
response = http.request(request)
puts response.read_body{
"notices": [
{
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"agentId": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"agentName": "<string>",
"recipientUserId": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"kind": "blocker",
"priority": "critical",
"subject": "<string>",
"question": "<string>",
"options": [
{
"id": "<string>",
"label": "<string>",
"tone": "ok",
"free": true
}
],
"state": "open",
"createdAt": "2023-11-07T05:31:56Z",
"settledAt": "2023-11-07T05:31:56Z",
"recipientName": "<string>",
"answeredAt": "2023-11-07T05:31:56Z",
"expiresAt": "2023-11-07T05:31:56Z",
"answer": {
"chosenOption": "<string>",
"createdAt": "2023-11-07T05:31:56Z",
"freeText": "<string>",
"respondedBy": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"respondedByName": "<string>"
}
}
],
"nextCursor": "<string>"
}{
"error": "<string>",
"code": "<string>"
}{
"error": "<string>",
"code": "<string>"
}{
"error": "<string>",
"code": "<string>"
}{
"error": "<string>",
"code": "<string>"
}Questions your agents are waiting on you for, or your settled history
Two sorts, never mixed on the same page. The default — state=open (or omitted), no order — is the queue sorted the way the Floor shows it: priority descending, then kind rank (blocker, guardrail, choice, info), then oldest first; a plain limit, nextCursor always null (AF-52: this order is fixed, never paginated). Any other state (answered, expired, withdrawn, settled, all), or order=recent on open, switches to the HISTORY sort instead: most recently settled first (answered date if answered, else created date), paginated by the opaque cursor — pass back a page’s nextCursor as the next call’s cursor until it comes back null. settled means any of the three non-open states at once (answered, expired or withdrawn) — use it for a history view that must never show a still-open notice; all keeps open notices mixed in, for a combined per-person journal.
A company admin may read a colleague’s queue/history with recipientUserId, or the whole company’s, line by line, with scope=company (the two are mutually exclusive) — anyone else passing either gets 403, never a silently empty list. Notices past their expiresAt flip to expired on read, so this list never shows a stale question.
curl --request GET \
--url https://api.atako.ai/notices \
--header 'Authorization: Bearer <token>'import requests
url = "https://api.atako.ai/notices"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://api.atako.ai/notices', 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.atako.ai/notices",
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>"
],
]);
$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.atako.ai/notices"
req, _ := http.NewRequest("GET", url, nil)
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.atako.ai/notices")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.atako.ai/notices")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["Authorization"] = 'Bearer <token>'
response = http.request(request)
puts response.read_body{
"notices": [
{
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"agentId": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"agentName": "<string>",
"recipientUserId": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"kind": "blocker",
"priority": "critical",
"subject": "<string>",
"question": "<string>",
"options": [
{
"id": "<string>",
"label": "<string>",
"tone": "ok",
"free": true
}
],
"state": "open",
"createdAt": "2023-11-07T05:31:56Z",
"settledAt": "2023-11-07T05:31:56Z",
"recipientName": "<string>",
"answeredAt": "2023-11-07T05:31:56Z",
"expiresAt": "2023-11-07T05:31:56Z",
"answer": {
"chosenOption": "<string>",
"createdAt": "2023-11-07T05:31:56Z",
"freeText": "<string>",
"respondedBy": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"respondedByName": "<string>"
}
}
],
"nextCursor": "<string>"
}{
"error": "<string>",
"code": "<string>"
}{
"error": "<string>",
"code": "<string>"
}{
"error": "<string>",
"code": "<string>"
}{
"error": "<string>",
"code": "<string>"
}Authorizations
An aik_… programmatic API key (app.atako.ai → Settings → API keys) or a Supabase session JWT.
Query Parameters
open, answered, expired, withdrawn, settled, all blocker, guardrail, choice, info critical, high, normal, low Only this agent's notices.
Company admins only — read a colleague's queue/history instead of your own. Mutually exclusive with scope=company.
Company admins only — company reads every notice of the company (history sort applies) instead of one recipient. Mutually exclusive with recipientUserId.
mine, company Force the history sort (most recently settled first) even when state=open.
recent Opaque pagination cursor from a previous page's nextCursor — only meaningful on the history sort.
1 <= x <= 200Response
nextCursor is only meaningful on the history sort (a settled state, all, or order=recent) — pass it back as ?cursor= for the next page. It is always null on the default open queue (AF-52): that sort is a plain limit, never paginated.