Products
Get sales performance
Counts only business cards with won status.
GET
/
products
/
{id}
/
performance
Get sales performance
curl --request GET \
--url https://api.connectadesk.com/api/v1/products/{id}/performance \
--header 'Authorization: Bearer <token>'import requests
url = "https://api.connectadesk.com/api/v1/products/{id}/performance"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://api.connectadesk.com/api/v1/products/{id}/performance', 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.connectadesk.com/api/v1/products/{id}/performance",
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.connectadesk.com/api/v1/products/{id}/performance"
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.connectadesk.com/api/v1/products/{id}/performance")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.connectadesk.com/api/v1/products/{id}/performance")
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": {
"startDate": "2025-09-01T03:00:00.000Z",
"endDate": "2026-09-01T02:59:59.999Z",
"summary": {
"wonCards": 9,
"wonValue": "12450.00",
"units": 11,
"averageTicket": "1383.33",
"lastWonDate": "2026-08-27T18:22:00.000Z"
},
"series": [
{
"month": "2026-07",
"cards": 2,
"units": 2,
"value": "2599.80"
},
{
"month": "2026-08",
"cards": 3,
"units": 4,
"value": "5199.60"
}
]
}
}{
"error": {
"code": "ERR_API_VALIDATION",
"message": "O campo `number` é obrigatório."
}
}{
"error": {
"code": "ERR_API_UNAUTHORIZED",
"message": "Token de API ausente ou inválido."
}
}{
"error": {
"code": "ERR_API_FORBIDDEN_SCOPE",
"message": "O token não tem permissão para este método neste módulo. A mensagem real nomeia os dois."
}
}{
"error": {
"code": "ERR_API_NOT_FOUND",
"message": "Registro não encontrado."
}
}Authorizations
API token in the sk_live_… format.
Path Parameters
Query Parameters
Start of the period (default: 12 months ago).
End of the period (default: today). The period can be at most 24 months long.
Response
OK
Sales performance of the product. It counts only deal cards with won status. The amount used is the product's price at the moment the card was closed, so price changes in the catalog do not change the history. Months follow the company's time zone.
Show child attributes
Show child attributes
Example:
{ "startDate": "2025-09-01T03:00:00.000Z", "endDate": "2026-09-01T02:59:59.999Z", "summary": { "wonCards": 9, "wonValue": "12450.00", "units": 11, "averageTicket": "1383.33", "lastWonDate": "2026-08-27T18:22:00.000Z" }, "series": [ { "month": "2026-07", "cards": 2, "units": 2, "value": "2599.80" }, { "month": "2026-08", "cards": 3, "units": 4, "value": "5199.60" } ] }
⌘I
Get sales performance
curl --request GET \
--url https://api.connectadesk.com/api/v1/products/{id}/performance \
--header 'Authorization: Bearer <token>'import requests
url = "https://api.connectadesk.com/api/v1/products/{id}/performance"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://api.connectadesk.com/api/v1/products/{id}/performance', 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.connectadesk.com/api/v1/products/{id}/performance",
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.connectadesk.com/api/v1/products/{id}/performance"
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.connectadesk.com/api/v1/products/{id}/performance")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.connectadesk.com/api/v1/products/{id}/performance")
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": {
"startDate": "2025-09-01T03:00:00.000Z",
"endDate": "2026-09-01T02:59:59.999Z",
"summary": {
"wonCards": 9,
"wonValue": "12450.00",
"units": 11,
"averageTicket": "1383.33",
"lastWonDate": "2026-08-27T18:22:00.000Z"
},
"series": [
{
"month": "2026-07",
"cards": 2,
"units": 2,
"value": "2599.80"
},
{
"month": "2026-08",
"cards": 3,
"units": 4,
"value": "5199.60"
}
]
}
}{
"error": {
"code": "ERR_API_VALIDATION",
"message": "O campo `number` é obrigatório."
}
}{
"error": {
"code": "ERR_API_UNAUTHORIZED",
"message": "Token de API ausente ou inválido."
}
}{
"error": {
"code": "ERR_API_FORBIDDEN_SCOPE",
"message": "O token não tem permissão para este método neste módulo. A mensagem real nomeia os dois."
}
}{
"error": {
"code": "ERR_API_NOT_FOUND",
"message": "Registro não encontrado."
}
}
