Recupera le analisi di Cascade
curl --request POST \
--url https://server.codeium.com/api/v1/CascadeAnalytics \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"service_key": "<string>",
"group_name": "<string>",
"start_timestamp": "<string>",
"end_timestamp": "<string>",
"emails": [
{}
],
"ide_types": [
{}
],
"query_requests": [
{}
]
}
'import requests
url = "https://server.codeium.com/api/v1/CascadeAnalytics"
payload = {
"service_key": "<string>",
"group_name": "<string>",
"start_timestamp": "<string>",
"end_timestamp": "<string>",
"emails": [{}],
"ide_types": [{}],
"query_requests": [{}]
}
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({
service_key: '<string>',
group_name: '<string>',
start_timestamp: '<string>',
end_timestamp: '<string>',
emails: [{}],
ide_types: [{}],
query_requests: [{}]
})
};
fetch('https://server.codeium.com/api/v1/CascadeAnalytics', 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://server.codeium.com/api/v1/CascadeAnalytics",
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([
'service_key' => '<string>',
'group_name' => '<string>',
'start_timestamp' => '<string>',
'end_timestamp' => '<string>',
'emails' => [
[
]
],
'ide_types' => [
[
]
],
'query_requests' => [
[
]
]
]),
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://server.codeium.com/api/v1/CascadeAnalytics"
payload := strings.NewReader("{\n \"service_key\": \"<string>\",\n \"group_name\": \"<string>\",\n \"start_timestamp\": \"<string>\",\n \"end_timestamp\": \"<string>\",\n \"emails\": [\n {}\n ],\n \"ide_types\": [\n {}\n ],\n \"query_requests\": [\n {}\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://server.codeium.com/api/v1/CascadeAnalytics")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"service_key\": \"<string>\",\n \"group_name\": \"<string>\",\n \"start_timestamp\": \"<string>\",\n \"end_timestamp\": \"<string>\",\n \"emails\": [\n {}\n ],\n \"ide_types\": [\n {}\n ],\n \"query_requests\": [\n {}\n ]\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://server.codeium.com/api/v1/CascadeAnalytics")
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 \"service_key\": \"<string>\",\n \"group_name\": \"<string>\",\n \"start_timestamp\": \"<string>\",\n \"end_timestamp\": \"<string>\",\n \"emails\": [\n {}\n ],\n \"ide_types\": [\n {}\n ],\n \"query_requests\": [\n {}\n ]\n}"
response = http.request(request)
puts response.read_body{
"queryResults": [
{
"cascadeLines": {
"cascadeLines": [
{
"day": "<string>",
"linesSuggested": "<string>",
"linesAccepted": "<string>"
}
]
},
"cascadeRuns": {
"cascadeRuns": [
{
"day": "<string>",
"model": "<string>",
"mode": "<string>",
"messagesSent": "<string>",
"cascadeId": "<string>",
"promptsUsed": "<string>"
}
]
},
"cascadeToolUsage": {
"cascadeToolUsage": [
{
"tool": "<string>",
"count": "<string>"
}
]
}
}
]
}API di analisi
Recupera le analisi di Cascade
Recupera metriche di utilizzo specifiche di Cascade, incluse righe suggerite/accettate, utilizzo del modello, consumo di crediti e statistiche sull’utilizzo degli strumenti.
POST
/
api
/
v1
/
CascadeAnalytics
Recupera le analisi di Cascade
curl --request POST \
--url https://server.codeium.com/api/v1/CascadeAnalytics \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"service_key": "<string>",
"group_name": "<string>",
"start_timestamp": "<string>",
"end_timestamp": "<string>",
"emails": [
{}
],
"ide_types": [
{}
],
"query_requests": [
{}
]
}
'import requests
url = "https://server.codeium.com/api/v1/CascadeAnalytics"
payload = {
"service_key": "<string>",
"group_name": "<string>",
"start_timestamp": "<string>",
"end_timestamp": "<string>",
"emails": [{}],
"ide_types": [{}],
"query_requests": [{}]
}
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({
service_key: '<string>',
group_name: '<string>',
start_timestamp: '<string>',
end_timestamp: '<string>',
emails: [{}],
ide_types: [{}],
query_requests: [{}]
})
};
fetch('https://server.codeium.com/api/v1/CascadeAnalytics', 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://server.codeium.com/api/v1/CascadeAnalytics",
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([
'service_key' => '<string>',
'group_name' => '<string>',
'start_timestamp' => '<string>',
'end_timestamp' => '<string>',
'emails' => [
[
]
],
'ide_types' => [
[
]
],
'query_requests' => [
[
]
]
]),
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://server.codeium.com/api/v1/CascadeAnalytics"
payload := strings.NewReader("{\n \"service_key\": \"<string>\",\n \"group_name\": \"<string>\",\n \"start_timestamp\": \"<string>\",\n \"end_timestamp\": \"<string>\",\n \"emails\": [\n {}\n ],\n \"ide_types\": [\n {}\n ],\n \"query_requests\": [\n {}\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://server.codeium.com/api/v1/CascadeAnalytics")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"service_key\": \"<string>\",\n \"group_name\": \"<string>\",\n \"start_timestamp\": \"<string>\",\n \"end_timestamp\": \"<string>\",\n \"emails\": [\n {}\n ],\n \"ide_types\": [\n {}\n ],\n \"query_requests\": [\n {}\n ]\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://server.codeium.com/api/v1/CascadeAnalytics")
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 \"service_key\": \"<string>\",\n \"group_name\": \"<string>\",\n \"start_timestamp\": \"<string>\",\n \"end_timestamp\": \"<string>\",\n \"emails\": [\n {}\n ],\n \"ide_types\": [\n {}\n ],\n \"query_requests\": [\n {}\n ]\n}"
response = http.request(request)
puts response.read_body{
"queryResults": [
{
"cascadeLines": {
"cascadeLines": [
{
"day": "<string>",
"linesSuggested": "<string>",
"linesAccepted": "<string>"
}
]
},
"cascadeRuns": {
"cascadeRuns": [
{
"day": "<string>",
"model": "<string>",
"mode": "<string>",
"messagesSent": "<string>",
"cascadeId": "<string>",
"promptsUsed": "<string>"
}
]
},
"cascadeToolUsage": {
"cascadeToolUsage": [
{
"tool": "<string>",
"count": "<string>"
}
]
}
}
]
}Panoramica
Richiesta
string
obbligatorio
La tua chiave di servizio con l’autorizzazione “Teams Read-only”
string
Filtra i risultati per gli utenti di un gruppo specifico. Non può essere utilizzato con il parametro
emails.string
Ora di inizio nel formato RFC 3339 (ad es.
2023-01-01T00:00:00Z)string
Ora di fine nel formato RFC 3339 (ad es.
2023-12-31T23:59:59Z)array
Array di indirizzi email per filtrare i risultati. Non può essere utilizzato con il parametro
group_name.array
Filtra per tipo di IDE. Opzioni disponibili:
"editor"- Devin Desktop Editor"jetbrains"- JetBrains Plugin"cli"- Devin CLI
Quando filtri per Devin CLI (
"cli"), il campo mode di cascade_runs non viene popolato. cascade_lines e cascade_tool_usage coprono l’attività di Devin CLI e Devin Local, ma includono solo i dati registrati dopo che questi agenti hanno iniziato a segnalarli.array
obbligatorio
Array di query delle origini dati da eseguire. Ogni oggetto deve contenere una delle origini dati supportate.
Fonti dati
cascade_lines
{
"cascade_lines": {}
}
day- Data nel formato RFC 3339linesSuggested- Numero di righe suggeritelinesAccepted- Numero di righe accettate
cascade_runs
{
"cascade_runs": {}
}
day- Data in formato RFC 3339model- Nome del modello utilizzatomode- Modalità Cascade (vedi le modalità riportate di seguito)messagesSent- Numero di messaggi inviaticascadeId- ID univoco della conversazionepromptsUsed- Crediti consumati (in centesimi)
CONVERSATIONAL_PLANNER_MODE_DEFAULT- Modalità di scritturaCONVERSATIONAL_PLANNER_MODE_READ_ONLY- Modalità di sola letturaCONVERSATIONAL_PLANNER_MODE_NO_TOOL- Modalità legacyUNKNOWN- Modalità sconosciuta
cascade_tool_usage
{
"cascade_tool_usage": {}
}
tool- Identificatore dello strumento (vedi la mappatura degli strumenti di seguito)count- Numero di volte in cui lo strumento è stato utilizzato
Mappature dell’utilizzo degli strumenti
| Tool Identifier | Nome visualizzato |
|---|---|
CODE_ACTION | Modifica del codice |
VIEW_FILE | Visualizza file |
RUN_COMMAND | Esegui comando |
FIND | Strumento Trova |
GREP_SEARCH | Ricerca Grep |
VIEW_FILE_OUTLINE | Struttura del file |
MQUERY | Riptide |
WORKFLOWS_USED | Flussi di lavoro utilizzati |
LIST_DIRECTORY | Elenca directory |
MCP_TOOL | Strumento MCP |
PROPOSE_CODE | Proponi codice |
SEARCH_WEB | Cerca nel web |
MEMORY | Memoria |
PROXY_WEB_SERVER | Anteprima del browser |
DEPLOY_WEB_APP | Distribuisci app web |
Esempio di richiesta
curl -X POST --header "Content-Type: application/json" \
--data '{
"service_key": "your_service_key_here",
"group_name": "engineering_team",
"start_timestamp": "2025-01-01T00:00:00Z",
"end_timestamp": "2025-01-02T00:00:00Z",
"emails": ["user1@cognition.ai", "user2@cognition.ai"],
"ide_types": ["editor"],
"query_requests": [
{
"cascade_lines": {}
},
{
"cascade_runs": {}
},
{
"cascade_tool_usage": {}
}
]
}' \
https://server.codeium.com/api/v1/CascadeAnalytics
Risposta
array
Array di risultati delle query, uno per ogni query richiesta
Mostra Risultato delle righe di Cascade
Mostra Risultato delle righe di Cascade
Mostra Risultato dell'utilizzo dello strumento di Cascade
Mostra Risultato dell'utilizzo dello strumento di Cascade
object
array
Array di statistiche di utilizzo del modello
string
Data in formato RFC 3339
string
Nome del modello utilizzato per il run
string
Identificatore della modalità Cascade
string
Numero di messaggi inviati
string
Identificatore univoco della conversazione
string
Crediti consumati in centesimi (ad es. “100” = 1 credito)
Risposta di esempio
{
"queryResults": [
{
"cascadeLines": {
"cascadeLines": [
{
"day": "2025-05-01T00:00:00Z",
"linesSuggested": "206",
"linesAccepted": "157"
},
{
"day": "2025-05-02T00:00:00Z",
"linesSuggested": "16"
}
]
}
},
{
"cascadeRuns": {
"cascadeRuns": [
{
"day": "2025-05-01T00:00:00Z",
"model": "Claude 3.7 Sonnet (Thinking)",
"mode": "CONVERSATIONAL_PLANNER_MODE_DEFAULT",
"messagesSent": "1",
"cascadeId": "0d35c1f7-0a85-41d0-ac96-a04cd2d64444"
}
]
}
},
{
"cascadeToolUsage": {
"cascadeToolUsage": [
{
"tool": "CODE_ACTION",
"count": "15"
},
{
"tool": "LIST_DIRECTORY",
"count": "20"
}
]
}
}
]
}
Note
- L’API restituisce dati grezzi che possono contenere valori “UNKNOWN”
- Per l’analisi delle metriche, aggrega i dati in base a campi specifici di interesse (ad es. somma
promptsUsedper analizzare i pattern di utilizzo) - I dati relativi alla modalità e ai prompt possono essere suddivisi in più voci
- Il consumo di crediti (
promptsUsed) viene restituito in centesimi (100 = 1 credito)

