Zum Hauptinhalt springen
POST
/
api
/
v1
/
CascadeAnalytics
Cascade-Analysen abrufen
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>"
          }
        ]
      }
    }
  ]
}

Überblick

Rufen Sie Cascade-spezifische Analysedaten ab, einschließlich Statistiken zu vorgeschlagenen/akzeptierten Zeilen, zur Modellnutzung, zum Credit-Verbrauch und zur Tool-Nutzung.

Anfrage

service_key
string
erforderlich
Ihr Service-Schlüssel mit „Teams Read-only“-Berechtigungen
group_name
string
Filtert die Ergebnisse auf Nutzer in einer bestimmten group. Kann nicht zusammen mit dem Parameter emails verwendet werden.
start_timestamp
string
Startzeit im RFC-3339-Format (z. B. 2023-01-01T00:00:00Z)
end_timestamp
string
Endzeit im RFC-3339-Format (z. B. 2023-12-31T23:59:59Z)
emails
array
Array von E-Mail-Adressen zum Filtern der Ergebnisse. Kann nicht zusammen mit dem Parameter group_name verwendet werden.
ide_types
array
Nach IDE-Typ filtern. Verfügbare Optionen:
  • "editor" - Devin Desktop Editor
  • "jetbrains" - JetBrains Plugin
  • "cli" - Devin CLI
Wenn nicht angegeben, werden Daten für alle IDEs zurückgegeben.
Beim Filtern nach Devin CLI ("cli") liefert nur cascade_runs Daten. Die Datenquellen cascade_lines und cascade_tool_usage werden für Devin CLI nicht unterstützt und geben leere Ergebnisse zurück.
query_requests
array
erforderlich
Array von Datenquellenabfragen, die ausgeführt werden sollen. Jedes Objekt sollte eine der unterstützten Datenquellen enthalten.

Datenquellen

cascade_lines

Abfrage der täglich vorgeschlagenen und akzeptierten Cascade-Zeilen.
{
  "cascade_lines": {}
}
Antwortfelder:
  • day - Datum im RFC-3339-Format
  • linesSuggested - Anzahl der vorgeschlagenen Zeilen
  • linesAccepted - Anzahl der übernommenen Zeilen

cascade_runs

Abfrage zu Modellnutzung, Credit-Verbrauch und Modusdaten.
{
  "cascade_runs": {}
}
Antwortfelder:
  • day - Datum im RFC-3339-Format
  • model - Name des verwendeten Modells
  • mode - Cascade-Modus (siehe Modi unten)
  • messagesSent - Anzahl der gesendeten Nachrichten
  • cascadeId - Eindeutige ID der Unterhaltung
  • promptsUsed - Verbrauchte Credits (in Cent)
Cascade-Modi:
  • CONVERSATIONAL_PLANNER_MODE_DEFAULT - Schreibmodus
  • CONVERSATIONAL_PLANNER_MODE_READ_ONLY - Lesemodus
  • CONVERSATIONAL_PLANNER_MODE_NO_TOOL - Legacy-Modus
  • UNKNOWN - Unbekannter Modus

cascade_tool_usage

Abfrage von Statistiken zur Tool-Nutzung (aggregierte Anzahlen).
{
  "cascade_tool_usage": {}
}
Antwortfelder:
  • tool - Tool-Identifikator (siehe Tool-Zuordnungen unten)
  • count - Anzahl der Tool-Verwendungen

Zuordnungen zur Tool-Nutzung

Tool-IdentifikatorAnzeigename
CODE_ACTIONCode bearbeiten
VIEW_FILEDatei anzeigen
RUN_COMMANDBefehl ausführen
FINDFind-Tool
GREP_SEARCHGrep-Suche
VIEW_FILE_OUTLINEDateigliederung anzeigen
MQUERYRiptide
WORKFLOWS_USEDVerwendete Workflows
LIST_DIRECTORYVerzeichnis auflisten
MCP_TOOLMCP-Tool
PROPOSE_CODECode vorschlagen
SEARCH_WEBWeb durchsuchen
MEMORYSpeicher
PROXY_WEB_SERVERBrowser-Vorschau
DEPLOY_WEB_APPWeb-App bereitstellen

Beispielanfrage

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

Antwort

queryResults
array
Array von Abfrageergebnissen, eines für jede Abfrage

Beispielantwort

{
  "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"
          }
        ]
      }
    }
  ]
}

Hinweise

  • Die API gibt Rohdaten zurück, die möglicherweise „UNKNOWN“-Werte enthalten.
  • Für die Analyse von Metriken nach relevanten spezifischen Feldern aggregieren (z. B. promptsUsed summieren, um Nutzungsmuster zu erkennen)
  • Modus- und Prompt-Daten können sich auf mehrere Einträge verteilen.
  • Der Creditverbrauch (promptsUsed) wird in Cent zurückgegeben (100 = 1 Credit).