curl --request GET \
--url https://{space}.{region}.api.niadra.com/v1/insights/gaps \
--header 'Authorization: Bearer <token>'import requests
url = "https://{space}.{region}.api.niadra.com/v1/insights/gaps"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://{space}.{region}.api.niadra.com/v1/insights/gaps', 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://{space}.{region}.api.niadra.com/v1/insights/gaps",
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://{space}.{region}.api.niadra.com/v1/insights/gaps"
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://{space}.{region}.api.niadra.com/v1/insights/gaps")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://{space}.{region}.api.niadra.com/v1/insights/gaps")
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{
"gaps": [
{
"could_record": [
{
"name": "<string>",
"source_id": "<string>",
"via": "mapping"
}
],
"customers": 123,
"key": "<string>",
"kind": "no_record",
"subject": "<string>",
"topic": "<string>",
"turns": 123,
"answered_share": 123,
"review": {
"decided_at": "2023-11-07T05:31:56Z",
"decided_by": "<string>",
"decision": "accepted",
"note": "<string>"
}
}
],
"proposals": [
{
"key": "<string>",
"kind": "not_recorded",
"subject": "<string>",
"text": "<string>",
"topic": "<string>",
"review": {
"decided_at": "2023-11-07T05:31:56Z",
"decided_by": "<string>",
"decision": "accepted",
"note": "<string>"
}
}
],
"recurring": [
{
"answered_share": 123,
"customers": 123,
"key": "<string>",
"subject": "<string>",
"topic": "<string>",
"turns": 123,
"review": {
"decided_at": "2023-11-07T05:31:56Z",
"decided_by": "<string>",
"decision": "accepted",
"note": "<string>"
}
}
],
"since": "2023-12-25",
"until": "2023-12-25",
"withheld_groups": 123
}{
"code": "<string>",
"status": 123,
"title": "<string>",
"detail": "<string>",
"request_id": "<string>",
"type": "about:blank"
}Knowledge gaps
What customers ask that memory lacks, which source could record it, the questions it answers every time and the standing answers proposed; counts, never a customer.
curl --request GET \
--url https://{space}.{region}.api.niadra.com/v1/insights/gaps \
--header 'Authorization: Bearer <token>'import requests
url = "https://{space}.{region}.api.niadra.com/v1/insights/gaps"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://{space}.{region}.api.niadra.com/v1/insights/gaps', 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://{space}.{region}.api.niadra.com/v1/insights/gaps",
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://{space}.{region}.api.niadra.com/v1/insights/gaps"
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://{space}.{region}.api.niadra.com/v1/insights/gaps")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://{space}.{region}.api.niadra.com/v1/insights/gaps")
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{
"gaps": [
{
"could_record": [
{
"name": "<string>",
"source_id": "<string>",
"via": "mapping"
}
],
"customers": 123,
"key": "<string>",
"kind": "no_record",
"subject": "<string>",
"topic": "<string>",
"turns": 123,
"answered_share": 123,
"review": {
"decided_at": "2023-11-07T05:31:56Z",
"decided_by": "<string>",
"decision": "accepted",
"note": "<string>"
}
}
],
"proposals": [
{
"key": "<string>",
"kind": "not_recorded",
"subject": "<string>",
"text": "<string>",
"topic": "<string>",
"review": {
"decided_at": "2023-11-07T05:31:56Z",
"decided_by": "<string>",
"decision": "accepted",
"note": "<string>"
}
}
],
"recurring": [
{
"answered_share": 123,
"customers": 123,
"key": "<string>",
"subject": "<string>",
"topic": "<string>",
"turns": 123,
"review": {
"decided_at": "2023-11-07T05:31:56Z",
"decided_by": "<string>",
"decision": "accepted",
"note": "<string>"
}
}
],
"since": "2023-12-25",
"until": "2023-12-25",
"withheld_groups": 123
}{
"code": "<string>",
"status": 123,
"title": "<string>",
"detail": "<string>",
"request_id": "<string>",
"type": "about:blank"
}Authorizations
nia_sk_...
Query Parameters
The window, in days; the counts count each customer once inside it.
1 <= x <= 90Response
The gaps, the recurring questions and the proposals of the window, with the groups withheld.
What customers ask that memory cannot answer, and what it answers every time. Counts by subject and category only, never a customer, a value or a text.
What customers asked for and memory had no record of, or agents had to ask returning customers for.
Show child attributes
Show child attributes
Standing answers proposed by rule; nothing reaches the agents until the team approves the configuration.
Show child attributes
Show child attributes
The questions memory answers every time, by subject and category.
Show child attributes
Show child attributes
Start of the window.
End of the window.
Groups left out: fewer customers than the minimum group size, or a category the analyst policy denies.

