Create new insight
curl --request POST \
--url https://api.meetsquad.ai/organisations/{orgId}/workspaces/{workspaceId}/insights \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"type": "Feedback",
"title": "Dashboard UX Improvements",
"description": "The dashboard could use better data visualization",
"organisationId": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"workspaceId": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"ownerId": "d4e71c2b-a498-42af-b7f5-69de06a0d7c4",
"strengthScore": 0.75,
"momentumScore": 0.5,
"combinedScore": 0.65,
"lastScoreCalculatedAt": "2025-03-26T22:35:46Z",
"topicEmbeddings": [
0.1,
-0.2,
0.3
],
"seen": true,
"feedbackIds": [
"3c90c3cc-0d44-4b50-8888-8dd25736052a"
]
}
'import requests
url = "https://api.meetsquad.ai/organisations/{orgId}/workspaces/{workspaceId}/insights"
payload = {
"type": "Feedback",
"title": "Dashboard UX Improvements",
"description": "The dashboard could use better data visualization",
"organisationId": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"workspaceId": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"ownerId": "d4e71c2b-a498-42af-b7f5-69de06a0d7c4",
"strengthScore": 0.75,
"momentumScore": 0.5,
"combinedScore": 0.65,
"lastScoreCalculatedAt": "2025-03-26T22:35:46Z",
"topicEmbeddings": [0.1, -0.2, 0.3],
"seen": True,
"feedbackIds": ["3c90c3cc-0d44-4b50-8888-8dd25736052a"]
}
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({
type: 'Feedback',
title: 'Dashboard UX Improvements',
description: 'The dashboard could use better data visualization',
organisationId: '3c90c3cc-0d44-4b50-8888-8dd25736052a',
workspaceId: '3c90c3cc-0d44-4b50-8888-8dd25736052a',
id: '3c90c3cc-0d44-4b50-8888-8dd25736052a',
ownerId: 'd4e71c2b-a498-42af-b7f5-69de06a0d7c4',
strengthScore: 0.75,
momentumScore: 0.5,
combinedScore: 0.65,
lastScoreCalculatedAt: '2025-03-26T22:35:46Z',
topicEmbeddings: [0.1, -0.2, 0.3],
seen: true,
feedbackIds: ['3c90c3cc-0d44-4b50-8888-8dd25736052a']
})
};
fetch('https://api.meetsquad.ai/organisations/{orgId}/workspaces/{workspaceId}/insights', 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.meetsquad.ai/organisations/{orgId}/workspaces/{workspaceId}/insights",
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([
'type' => 'Feedback',
'title' => 'Dashboard UX Improvements',
'description' => 'The dashboard could use better data visualization',
'organisationId' => '3c90c3cc-0d44-4b50-8888-8dd25736052a',
'workspaceId' => '3c90c3cc-0d44-4b50-8888-8dd25736052a',
'id' => '3c90c3cc-0d44-4b50-8888-8dd25736052a',
'ownerId' => 'd4e71c2b-a498-42af-b7f5-69de06a0d7c4',
'strengthScore' => 0.75,
'momentumScore' => 0.5,
'combinedScore' => 0.65,
'lastScoreCalculatedAt' => '2025-03-26T22:35:46Z',
'topicEmbeddings' => [
0.1,
-0.2,
0.3
],
'seen' => true,
'feedbackIds' => [
'3c90c3cc-0d44-4b50-8888-8dd25736052a'
]
]),
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.meetsquad.ai/organisations/{orgId}/workspaces/{workspaceId}/insights"
payload := strings.NewReader("{\n \"type\": \"Feedback\",\n \"title\": \"Dashboard UX Improvements\",\n \"description\": \"The dashboard could use better data visualization\",\n \"organisationId\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\",\n \"workspaceId\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\",\n \"id\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\",\n \"ownerId\": \"d4e71c2b-a498-42af-b7f5-69de06a0d7c4\",\n \"strengthScore\": 0.75,\n \"momentumScore\": 0.5,\n \"combinedScore\": 0.65,\n \"lastScoreCalculatedAt\": \"2025-03-26T22:35:46Z\",\n \"topicEmbeddings\": [\n 0.1,\n -0.2,\n 0.3\n ],\n \"seen\": true,\n \"feedbackIds\": [\n \"3c90c3cc-0d44-4b50-8888-8dd25736052a\"\n ]\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.meetsquad.ai/organisations/{orgId}/workspaces/{workspaceId}/insights")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"type\": \"Feedback\",\n \"title\": \"Dashboard UX Improvements\",\n \"description\": \"The dashboard could use better data visualization\",\n \"organisationId\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\",\n \"workspaceId\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\",\n \"id\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\",\n \"ownerId\": \"d4e71c2b-a498-42af-b7f5-69de06a0d7c4\",\n \"strengthScore\": 0.75,\n \"momentumScore\": 0.5,\n \"combinedScore\": 0.65,\n \"lastScoreCalculatedAt\": \"2025-03-26T22:35:46Z\",\n \"topicEmbeddings\": [\n 0.1,\n -0.2,\n 0.3\n ],\n \"seen\": true,\n \"feedbackIds\": [\n \"3c90c3cc-0d44-4b50-8888-8dd25736052a\"\n ]\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.meetsquad.ai/organisations/{orgId}/workspaces/{workspaceId}/insights")
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 \"type\": \"Feedback\",\n \"title\": \"Dashboard UX Improvements\",\n \"description\": \"The dashboard could use better data visualization\",\n \"organisationId\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\",\n \"workspaceId\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\",\n \"id\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\",\n \"ownerId\": \"d4e71c2b-a498-42af-b7f5-69de06a0d7c4\",\n \"strengthScore\": 0.75,\n \"momentumScore\": 0.5,\n \"combinedScore\": 0.65,\n \"lastScoreCalculatedAt\": \"2025-03-26T22:35:46Z\",\n \"topicEmbeddings\": [\n 0.1,\n -0.2,\n 0.3\n ],\n \"seen\": true,\n \"feedbackIds\": [\n \"3c90c3cc-0d44-4b50-8888-8dd25736052a\"\n ]\n}"
response = http.request(request)
puts response.read_body{
"data": {
"id": "d231fe70-9585-4657-9c4e-6b431bbc1b6a",
"type": "Feedback",
"title": "Dashboard UX Improvements",
"description": "The dashboard could use better data visualization",
"seen": false,
"hideContent": false,
"createdAt": "2025-03-26T22:35:46Z",
"updatedAt": "2025-03-26T22:35:46Z",
"opportunities": [],
"solutions": [],
"outcomes": [],
"feedback": [],
"strength": 5,
"ownerId": "d4e71c2b-a498-42af-b7f5-69de06a0d7c4",
"strengthScore": 0.75,
"momentumScore": 0.5,
"combinedScore": 0.65,
"lastScoreCalculatedAt": "2025-03-26T22:35:46Z",
"topicEmbeddings": [
0.1,
-0.2,
0.3
]
}
}{
"error": {
"code": "INVALID_REQUEST",
"description": "One or more fields are invalid",
"fields": [
"title",
"description"
],
"validationErrors": {
"invalidFields": {
"title": {
"type": "too_small",
"message": "Title must be at least 3 characters long",
"path": [
"title"
]
},
"deadline": {
"type": "invalid_date",
"message": "Deadline must be a valid date in the future",
"path": [
"deadline"
]
}
}
}
}
}{
"error": {
"code": "UNAUTHORISED_ERROR",
"description": "User is unauthenticated"
}
}{
"error": {
"code": "UNAUTHORISED_ERROR",
"description": "User is unauthorised"
}
}{
"error": {
"code": "INTERNAL_SERVER_ERROR",
"description": "An unexpected error occurred on the server"
}
}Insights
Create new insight
Creates a new insight item in the specified workspace
POST
/
organisations
/
{orgId}
/
workspaces
/
{workspaceId}
/
insights
Create new insight
curl --request POST \
--url https://api.meetsquad.ai/organisations/{orgId}/workspaces/{workspaceId}/insights \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"type": "Feedback",
"title": "Dashboard UX Improvements",
"description": "The dashboard could use better data visualization",
"organisationId": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"workspaceId": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"ownerId": "d4e71c2b-a498-42af-b7f5-69de06a0d7c4",
"strengthScore": 0.75,
"momentumScore": 0.5,
"combinedScore": 0.65,
"lastScoreCalculatedAt": "2025-03-26T22:35:46Z",
"topicEmbeddings": [
0.1,
-0.2,
0.3
],
"seen": true,
"feedbackIds": [
"3c90c3cc-0d44-4b50-8888-8dd25736052a"
]
}
'import requests
url = "https://api.meetsquad.ai/organisations/{orgId}/workspaces/{workspaceId}/insights"
payload = {
"type": "Feedback",
"title": "Dashboard UX Improvements",
"description": "The dashboard could use better data visualization",
"organisationId": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"workspaceId": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"ownerId": "d4e71c2b-a498-42af-b7f5-69de06a0d7c4",
"strengthScore": 0.75,
"momentumScore": 0.5,
"combinedScore": 0.65,
"lastScoreCalculatedAt": "2025-03-26T22:35:46Z",
"topicEmbeddings": [0.1, -0.2, 0.3],
"seen": True,
"feedbackIds": ["3c90c3cc-0d44-4b50-8888-8dd25736052a"]
}
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({
type: 'Feedback',
title: 'Dashboard UX Improvements',
description: 'The dashboard could use better data visualization',
organisationId: '3c90c3cc-0d44-4b50-8888-8dd25736052a',
workspaceId: '3c90c3cc-0d44-4b50-8888-8dd25736052a',
id: '3c90c3cc-0d44-4b50-8888-8dd25736052a',
ownerId: 'd4e71c2b-a498-42af-b7f5-69de06a0d7c4',
strengthScore: 0.75,
momentumScore: 0.5,
combinedScore: 0.65,
lastScoreCalculatedAt: '2025-03-26T22:35:46Z',
topicEmbeddings: [0.1, -0.2, 0.3],
seen: true,
feedbackIds: ['3c90c3cc-0d44-4b50-8888-8dd25736052a']
})
};
fetch('https://api.meetsquad.ai/organisations/{orgId}/workspaces/{workspaceId}/insights', 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.meetsquad.ai/organisations/{orgId}/workspaces/{workspaceId}/insights",
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([
'type' => 'Feedback',
'title' => 'Dashboard UX Improvements',
'description' => 'The dashboard could use better data visualization',
'organisationId' => '3c90c3cc-0d44-4b50-8888-8dd25736052a',
'workspaceId' => '3c90c3cc-0d44-4b50-8888-8dd25736052a',
'id' => '3c90c3cc-0d44-4b50-8888-8dd25736052a',
'ownerId' => 'd4e71c2b-a498-42af-b7f5-69de06a0d7c4',
'strengthScore' => 0.75,
'momentumScore' => 0.5,
'combinedScore' => 0.65,
'lastScoreCalculatedAt' => '2025-03-26T22:35:46Z',
'topicEmbeddings' => [
0.1,
-0.2,
0.3
],
'seen' => true,
'feedbackIds' => [
'3c90c3cc-0d44-4b50-8888-8dd25736052a'
]
]),
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.meetsquad.ai/organisations/{orgId}/workspaces/{workspaceId}/insights"
payload := strings.NewReader("{\n \"type\": \"Feedback\",\n \"title\": \"Dashboard UX Improvements\",\n \"description\": \"The dashboard could use better data visualization\",\n \"organisationId\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\",\n \"workspaceId\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\",\n \"id\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\",\n \"ownerId\": \"d4e71c2b-a498-42af-b7f5-69de06a0d7c4\",\n \"strengthScore\": 0.75,\n \"momentumScore\": 0.5,\n \"combinedScore\": 0.65,\n \"lastScoreCalculatedAt\": \"2025-03-26T22:35:46Z\",\n \"topicEmbeddings\": [\n 0.1,\n -0.2,\n 0.3\n ],\n \"seen\": true,\n \"feedbackIds\": [\n \"3c90c3cc-0d44-4b50-8888-8dd25736052a\"\n ]\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.meetsquad.ai/organisations/{orgId}/workspaces/{workspaceId}/insights")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"type\": \"Feedback\",\n \"title\": \"Dashboard UX Improvements\",\n \"description\": \"The dashboard could use better data visualization\",\n \"organisationId\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\",\n \"workspaceId\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\",\n \"id\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\",\n \"ownerId\": \"d4e71c2b-a498-42af-b7f5-69de06a0d7c4\",\n \"strengthScore\": 0.75,\n \"momentumScore\": 0.5,\n \"combinedScore\": 0.65,\n \"lastScoreCalculatedAt\": \"2025-03-26T22:35:46Z\",\n \"topicEmbeddings\": [\n 0.1,\n -0.2,\n 0.3\n ],\n \"seen\": true,\n \"feedbackIds\": [\n \"3c90c3cc-0d44-4b50-8888-8dd25736052a\"\n ]\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.meetsquad.ai/organisations/{orgId}/workspaces/{workspaceId}/insights")
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 \"type\": \"Feedback\",\n \"title\": \"Dashboard UX Improvements\",\n \"description\": \"The dashboard could use better data visualization\",\n \"organisationId\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\",\n \"workspaceId\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\",\n \"id\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\",\n \"ownerId\": \"d4e71c2b-a498-42af-b7f5-69de06a0d7c4\",\n \"strengthScore\": 0.75,\n \"momentumScore\": 0.5,\n \"combinedScore\": 0.65,\n \"lastScoreCalculatedAt\": \"2025-03-26T22:35:46Z\",\n \"topicEmbeddings\": [\n 0.1,\n -0.2,\n 0.3\n ],\n \"seen\": true,\n \"feedbackIds\": [\n \"3c90c3cc-0d44-4b50-8888-8dd25736052a\"\n ]\n}"
response = http.request(request)
puts response.read_body{
"data": {
"id": "d231fe70-9585-4657-9c4e-6b431bbc1b6a",
"type": "Feedback",
"title": "Dashboard UX Improvements",
"description": "The dashboard could use better data visualization",
"seen": false,
"hideContent": false,
"createdAt": "2025-03-26T22:35:46Z",
"updatedAt": "2025-03-26T22:35:46Z",
"opportunities": [],
"solutions": [],
"outcomes": [],
"feedback": [],
"strength": 5,
"ownerId": "d4e71c2b-a498-42af-b7f5-69de06a0d7c4",
"strengthScore": 0.75,
"momentumScore": 0.5,
"combinedScore": 0.65,
"lastScoreCalculatedAt": "2025-03-26T22:35:46Z",
"topicEmbeddings": [
0.1,
-0.2,
0.3
]
}
}{
"error": {
"code": "INVALID_REQUEST",
"description": "One or more fields are invalid",
"fields": [
"title",
"description"
],
"validationErrors": {
"invalidFields": {
"title": {
"type": "too_small",
"message": "Title must be at least 3 characters long",
"path": [
"title"
]
},
"deadline": {
"type": "invalid_date",
"message": "Deadline must be a valid date in the future",
"path": [
"deadline"
]
}
}
}
}
}{
"error": {
"code": "UNAUTHORISED_ERROR",
"description": "User is unauthenticated"
}
}{
"error": {
"code": "UNAUTHORISED_ERROR",
"description": "User is unauthorised"
}
}{
"error": {
"code": "INTERNAL_SERVER_ERROR",
"description": "An unexpected error occurred on the server"
}
}Authorizations
JWT authentication for organization-scoped endpoints.
Body
application/json
Type of insight
Available options:
Feedback, Bug, FeatureRequest Example:
"Feedback"
Title of the insight
Example:
"Dashboard UX Improvements"
Description of the insight
Example:
"The dashboard could use better data visualization"
Pattern:
^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$Pattern:
^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$Pattern:
^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$ID of the insight owner
Example:
"d4e71c2b-a498-42af-b7f5-69de06a0d7c4"
Wilson score + corroboration score (0-1)
Required range:
0 <= x <= 1Example:
0.75
Recency and burst detection score
Required range:
x >= 0Example:
0.5
Weighted composite of strength and momentum scores
Required range:
x >= 0Example:
0.65
ISO timestamp of last score calculation
Pattern:
^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d(?::[0-5]\d(?:\.\d+)?)?(?:Z))$Example:
"2025-03-26T22:35:46Z"
BERT embeddings for topic modeling
Example:
[0.1, -0.2, 0.3]
Pattern:
^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$Response
Insight created successfully
Response containing a single insight item
Insight data
Show child attributes
Show child attributes
⌘I