List notifications
Lists your notifications in one organization, newest first, 50 per page by default (at most 100), filtered by realm, event type, severity, team, run, phase, text or time.
Requires membership in the organization given by org_id.
curl --request POST \
--url https://{host}/v1/notifications/get \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"org_id": "2c3d4e5f-6a7b-4c8d-9e0f-1a2b3c4d5e6f",
"severities": [
"error"
],
"limit": 20
}
'import requests
url = "https://{host}/v1/notifications/get"
payload = {
"org_id": "2c3d4e5f-6a7b-4c8d-9e0f-1a2b3c4d5e6f",
"severities": ["error"],
"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({
org_id: '2c3d4e5f-6a7b-4c8d-9e0f-1a2b3c4d5e6f',
severities: ['error'],
limit: 20
})
};
fetch('https://{host}/v1/notifications/get', 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://{host}/v1/notifications/get",
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([
'org_id' => '2c3d4e5f-6a7b-4c8d-9e0f-1a2b3c4d5e6f',
'severities' => [
'error'
],
'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://{host}/v1/notifications/get"
payload := strings.NewReader("{\n \"org_id\": \"2c3d4e5f-6a7b-4c8d-9e0f-1a2b3c4d5e6f\",\n \"severities\": [\n \"error\"\n ],\n \"limit\": 20\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://{host}/v1/notifications/get")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"org_id\": \"2c3d4e5f-6a7b-4c8d-9e0f-1a2b3c4d5e6f\",\n \"severities\": [\n \"error\"\n ],\n \"limit\": 20\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://{host}/v1/notifications/get")
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 \"org_id\": \"2c3d4e5f-6a7b-4c8d-9e0f-1a2b3c4d5e6f\",\n \"severities\": [\n \"error\"\n ],\n \"limit\": 20\n}"
response = http.request(request)
puts response.read_body{
"ok": true,
"data": {
"items": [
{
"id": "6f7a8b9c-0d1e-4f2a-8b3c-4d5e6f7a8b9c",
"event": "run.failed",
"title": "Run failed",
"message": "phase fix: tests failed",
"realm_id": "5b0c3a7e-2f4d-4b8e-9a51-7c1d2e3f4a5b",
"realm_slug": "production",
"user_id": "1a2b3c4d-5e6f-4a7b-8c9d-0e1f2a3b4c5d",
"team": "code-review",
"run_id": "0c8d7e6f-5a4b-4c3d-9e2f-1a0b9c8d7e6f",
"phase": "fix",
"severity": "error",
"payload": {},
"created_at": 1759834700000
}
],
"total": 1,
"offset": 0,
"limit": 20,
"type": "array"
}
}{
"ok": false,
"error": {
"code": "unauthorized",
"message": "Authentication required"
}
}{
"ok": false,
"error": {
"code": "forbidden",
"message": "You do not have access to do this"
}
}{
"ok": false,
"error": {
"code": "not_found",
"message": "Not found"
}
}{
"ok": false,
"error": "org_id: Required",
"code": "invalid_params"
}{
"ok": false,
"error": "Internal server error",
"code": "internal_error"
}Authorizations
User PAT (cliq_tok_…, including session-scoped) or realm token (cliq_dt_…).
Body
Organization that bounds the inbox. Required — never invent from X-Org-Id.
Legacy single-realm filter (intersected with membership)
Multi-select realm filter (ids); intersected with membership
Filter by event type strings
Filter by severity values
Filter by team slug
Filter to a single run id
Filter by phase name
Substring search across title, message, event, team, run_id
Inclusive lower bound on created_at (unix ms)
Inclusive upper bound on created_at (unix ms)
When true, only events for runs the caller started
Page size (default 50, max 100)
x >= 1Page offset (default 0)
curl --request POST \
--url https://{host}/v1/notifications/get \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"org_id": "2c3d4e5f-6a7b-4c8d-9e0f-1a2b3c4d5e6f",
"severities": [
"error"
],
"limit": 20
}
'import requests
url = "https://{host}/v1/notifications/get"
payload = {
"org_id": "2c3d4e5f-6a7b-4c8d-9e0f-1a2b3c4d5e6f",
"severities": ["error"],
"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({
org_id: '2c3d4e5f-6a7b-4c8d-9e0f-1a2b3c4d5e6f',
severities: ['error'],
limit: 20
})
};
fetch('https://{host}/v1/notifications/get', 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://{host}/v1/notifications/get",
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([
'org_id' => '2c3d4e5f-6a7b-4c8d-9e0f-1a2b3c4d5e6f',
'severities' => [
'error'
],
'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://{host}/v1/notifications/get"
payload := strings.NewReader("{\n \"org_id\": \"2c3d4e5f-6a7b-4c8d-9e0f-1a2b3c4d5e6f\",\n \"severities\": [\n \"error\"\n ],\n \"limit\": 20\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://{host}/v1/notifications/get")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"org_id\": \"2c3d4e5f-6a7b-4c8d-9e0f-1a2b3c4d5e6f\",\n \"severities\": [\n \"error\"\n ],\n \"limit\": 20\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://{host}/v1/notifications/get")
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 \"org_id\": \"2c3d4e5f-6a7b-4c8d-9e0f-1a2b3c4d5e6f\",\n \"severities\": [\n \"error\"\n ],\n \"limit\": 20\n}"
response = http.request(request)
puts response.read_body{
"ok": true,
"data": {
"items": [
{
"id": "6f7a8b9c-0d1e-4f2a-8b3c-4d5e6f7a8b9c",
"event": "run.failed",
"title": "Run failed",
"message": "phase fix: tests failed",
"realm_id": "5b0c3a7e-2f4d-4b8e-9a51-7c1d2e3f4a5b",
"realm_slug": "production",
"user_id": "1a2b3c4d-5e6f-4a7b-8c9d-0e1f2a3b4c5d",
"team": "code-review",
"run_id": "0c8d7e6f-5a4b-4c3d-9e2f-1a0b9c8d7e6f",
"phase": "fix",
"severity": "error",
"payload": {},
"created_at": 1759834700000
}
],
"total": 1,
"offset": 0,
"limit": 20,
"type": "array"
}
}{
"ok": false,
"error": {
"code": "unauthorized",
"message": "Authentication required"
}
}{
"ok": false,
"error": {
"code": "forbidden",
"message": "You do not have access to do this"
}
}{
"ok": false,
"error": {
"code": "not_found",
"message": "Not found"
}
}{
"ok": false,
"error": "org_id: Required",
"code": "invalid_params"
}{
"ok": false,
"error": "Internal server error",
"code": "internal_error"
}