curl --request GET \
--url https://services-api.talqui.chat/v1/tenants/{tenantID}/analytics/reports \
--header 'Authorization: Bearer <token>'import requests
url = "https://services-api.talqui.chat/v1/tenants/{tenantID}/analytics/reports"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://services-api.talqui.chat/v1/tenants/{tenantID}/analytics/reports', 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://services-api.talqui.chat/v1/tenants/{tenantID}/analytics/reports",
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://services-api.talqui.chat/v1/tenants/{tenantID}/analytics/reports"
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://services-api.talqui.chat/v1/tenants/{tenantID}/analytics/reports")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://services-api.talqui.chat/v1/tenants/{tenantID}/analytics/reports")
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{
"data": [
{
"__reportErrorCode": "<string>",
"__reportErrorMessage": "<string>",
"completedAt": "2023-11-07T05:31:56Z",
"createdAt": "2023-11-07T05:31:56Z",
"createdBy": "<string>",
"email": "<string>",
"failedAt": "2023-11-07T05:31:56Z",
"processingStartedAt": "2023-11-07T05:31:56Z",
"reportID": "<string>",
"reportSpec": {
"groups": [
"<string>"
],
"namespaces": [
"<string>"
],
"query": {
"filterBag": [
{
"criterion": "<string>",
"operator": "eq",
"query": [
"<string>"
],
"schema": "session"
}
],
"filters": [
"<string>"
],
"from": "2023-11-07T05:31:56Z",
"granularity": "hour",
"tenantID": "<string>",
"timezone": "<string>",
"to": "2023-11-07T05:31:56Z"
}
},
"reportStatus": "pending",
"resultURL": "<string>",
"tenantID": "<string>",
"updatedAt": "2023-11-07T05:31:56Z"
}
],
"meta": {
"count": 123,
"currentPage": 123,
"hasMore": true,
"perPage": 123,
"totalCount": 123,
"totalPages": 123
}
}{
"data": [
{
"__reportErrorCode": "<string>",
"__reportErrorMessage": "<string>",
"completedAt": "2023-11-07T05:31:56Z",
"createdAt": "2023-11-07T05:31:56Z",
"createdBy": "<string>",
"email": "<string>",
"failedAt": "2023-11-07T05:31:56Z",
"processingStartedAt": "2023-11-07T05:31:56Z",
"reportID": "<string>",
"reportSpec": {
"groups": [
"<string>"
],
"namespaces": [
"<string>"
],
"query": {
"filterBag": [
{
"criterion": "<string>",
"operator": "eq",
"query": [
"<string>"
],
"schema": "session"
}
],
"filters": [
"<string>"
],
"from": "2023-11-07T05:31:56Z",
"granularity": "hour",
"tenantID": "<string>",
"timezone": "<string>",
"to": "2023-11-07T05:31:56Z"
}
},
"reportStatus": "pending",
"resultURL": "<string>",
"tenantID": "<string>",
"updatedAt": "2023-11-07T05:31:56Z"
}
],
"meta": {
"count": 123,
"currentPage": 123,
"hasMore": true,
"perPage": 123,
"totalCount": 123,
"totalPages": 123
}
}{
"errors": [
{
"error": "MissingTenantIDError",
"error_code": 1001,
"message": "tenantID is required.",
"statusCode": 400
}
]
}{
"errors": [
{
"error": "UnauthorizedError",
"error_code": 1003,
"message": "You are not authorized to perform this request.",
"statusCode": 401
}
]
}{
"errors": [
{
"error": "ForbiddenError",
"error_code": 1004,
"message": "You do not have access to this resource.",
"statusCode": 403
}
]
}{
"errors": [
{
"error": "UnknownError",
"error_code": 5999,
"message": "For some unknown reason your request has not succeeded.",
"statusCode": 500
}
]
}List reports
Lists the tenant’s analytics reports, newest first, with pagination and an optional status filter. Returns HTTP 206 instead of 200 when more pages are available.
Report generation is asynchronous and pushes nothing, so this is also the surface the Report page polls to watch a pending report settle.
curl --request GET \
--url https://services-api.talqui.chat/v1/tenants/{tenantID}/analytics/reports \
--header 'Authorization: Bearer <token>'import requests
url = "https://services-api.talqui.chat/v1/tenants/{tenantID}/analytics/reports"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://services-api.talqui.chat/v1/tenants/{tenantID}/analytics/reports', 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://services-api.talqui.chat/v1/tenants/{tenantID}/analytics/reports",
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://services-api.talqui.chat/v1/tenants/{tenantID}/analytics/reports"
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://services-api.talqui.chat/v1/tenants/{tenantID}/analytics/reports")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://services-api.talqui.chat/v1/tenants/{tenantID}/analytics/reports")
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{
"data": [
{
"__reportErrorCode": "<string>",
"__reportErrorMessage": "<string>",
"completedAt": "2023-11-07T05:31:56Z",
"createdAt": "2023-11-07T05:31:56Z",
"createdBy": "<string>",
"email": "<string>",
"failedAt": "2023-11-07T05:31:56Z",
"processingStartedAt": "2023-11-07T05:31:56Z",
"reportID": "<string>",
"reportSpec": {
"groups": [
"<string>"
],
"namespaces": [
"<string>"
],
"query": {
"filterBag": [
{
"criterion": "<string>",
"operator": "eq",
"query": [
"<string>"
],
"schema": "session"
}
],
"filters": [
"<string>"
],
"from": "2023-11-07T05:31:56Z",
"granularity": "hour",
"tenantID": "<string>",
"timezone": "<string>",
"to": "2023-11-07T05:31:56Z"
}
},
"reportStatus": "pending",
"resultURL": "<string>",
"tenantID": "<string>",
"updatedAt": "2023-11-07T05:31:56Z"
}
],
"meta": {
"count": 123,
"currentPage": 123,
"hasMore": true,
"perPage": 123,
"totalCount": 123,
"totalPages": 123
}
}{
"data": [
{
"__reportErrorCode": "<string>",
"__reportErrorMessage": "<string>",
"completedAt": "2023-11-07T05:31:56Z",
"createdAt": "2023-11-07T05:31:56Z",
"createdBy": "<string>",
"email": "<string>",
"failedAt": "2023-11-07T05:31:56Z",
"processingStartedAt": "2023-11-07T05:31:56Z",
"reportID": "<string>",
"reportSpec": {
"groups": [
"<string>"
],
"namespaces": [
"<string>"
],
"query": {
"filterBag": [
{
"criterion": "<string>",
"operator": "eq",
"query": [
"<string>"
],
"schema": "session"
}
],
"filters": [
"<string>"
],
"from": "2023-11-07T05:31:56Z",
"granularity": "hour",
"tenantID": "<string>",
"timezone": "<string>",
"to": "2023-11-07T05:31:56Z"
}
},
"reportStatus": "pending",
"resultURL": "<string>",
"tenantID": "<string>",
"updatedAt": "2023-11-07T05:31:56Z"
}
],
"meta": {
"count": 123,
"currentPage": 123,
"hasMore": true,
"perPage": 123,
"totalCount": 123,
"totalPages": 123
}
}{
"errors": [
{
"error": "MissingTenantIDError",
"error_code": 1001,
"message": "tenantID is required.",
"statusCode": 400
}
]
}{
"errors": [
{
"error": "UnauthorizedError",
"error_code": 1003,
"message": "You are not authorized to perform this request.",
"statusCode": 401
}
]
}{
"errors": [
{
"error": "ForbiddenError",
"error_code": 1004,
"message": "You do not have access to this resource.",
"statusCode": 403
}
]
}{
"errors": [
{
"error": "UnknownError",
"error_code": 5999,
"message": "For some unknown reason your request has not succeeded.",
"statusCode": 500
}
]
}Authorizations
Behalf of an Operator (default). A JWT issued by Talqui Core when an operator signs in, scoped to every tenant that operator belongs to. Send as Authorization: Bearer <jwt-token>.
Path Parameters
Query Parameters
1-indexed page number to fetch.
1 <= x <= 9007199254740991Number of reports per page (max 100).
1 <= x <= 100Only return reports in this state — e.g. completed for the ones that can be downloaded.
pending, processing, failed, completed Only return reports REQUESTED at or after this instant (filters createdAt, not the reported window).
Only return reports requested at or before this instant.