メインコンテンツへスキップ
POST
/
api
/
v1
/
CascadeAnalytics
Cascade Analyticsを取得
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>"
          }
        ]
      }
    }
  ]
}

概要

提案数・採用数、モデル使用量、クレジット消費量、ツールの利用統計など、Cascade 固有の分析データを取得します。

リクエスト

service_key
string
必須
「Teams Read-only」権限を持つサービスキー
group_name
string
結果を特定のグループのユーザーに絞り込みます。emails パラメータとは併用できません。
start_timestamp
string
RFC 3339 形式の開始時刻 (例: 2023-01-01T00:00:00Z)
end_timestamp
string
RFC 3339 形式の終了時刻 (例: 2023-12-31T23:59:59Z)
emails
array
結果の絞り込みに使用するメールアドレスの配列。group_name パラメータとは併用できません。
ide_types
array
IDE の種類で絞り込みます。利用可能なオプション:
  • "editor" - Devin Desktop Editor
  • "jetbrains" - JetBrains Plugin
  • "cli" - Devin CLI
省略した場合は、すべての IDE のデータを返します。
Devin CLI ("cli") で絞り込む場合、データが返されるのは cascade_runs のみです。cascade_linescascade_tool_usage のデータソースは Devin CLI ではサポートされていないため、空の結果が返されます。
query_requests
array
必須
実行するデータソースのクエリの配列です。各オブジェクトには、サポートされているデータソースのいずれか 1 つを含める必要があります。

データソース

cascade_lines

日次の、提案済みおよび採用済みの Cascade lines をクエリします。
{
  "cascade_lines": {}
}
レスポンスフィールド:
  • day - RFC 3339形式の日付
  • linesSuggested - 提案された行数
  • linesAccepted - 採用された行数

cascade_runs

モデルの使用量、クレジットの消費量、およびモードデータをクエリします。
{
  "cascade_runs": {}
}
レスポンスフィールド:
  • day - RFC 3339形式の日付
  • model - 使用したモデル名
  • mode - Cascadeモード (以下のモードを参照)
  • messagesSent - 送信されたメッセージ数
  • cascadeId - 一意の会話ID
  • promptsUsed - 消費されたクレジット (セント単位)
Cascadeモード:
  • CONVERSATIONAL_PLANNER_MODE_DEFAULT - 書き込みモード
  • CONVERSATIONAL_PLANNER_MODE_READ_ONLY - 読み取りモード
  • CONVERSATIONAL_PLANNER_MODE_NO_TOOL - レガシーモード
  • UNKNOWN - 不明なモード

cascade_tool_usage

ツール使用量の統計情報 (集計数) をクエリします。
{
  "cascade_tool_usage": {}
}
レスポンス フィールド:
  • tool - ツール識別子 (以下のツール対応表を参照)
  • count - ツールが利用された回数

ツール使用の対応表

ツール識別子表示名
CODE_ACTIONコード編集
VIEW_FILEファイル表示
RUN_COMMANDコマンド実行
FINDFind ツール
GREP_SEARCHGrep 検索
VIEW_FILE_OUTLINEファイルアウトライン表示
MQUERYRiptide
WORKFLOWS_USED使用されたワークフロー
LIST_DIRECTORYディレクトリ一覧
MCP_TOOLMCP ツール
PROPOSE_CODEコード提案
SEARCH_WEBWeb 検索
MEMORYメモリ
PROXY_WEB_SERVERBrowser プレビュー
DEPLOY_WEB_APPWeb アプリのデプロイ

リクエスト例

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

応答

queryResults
array
各クエリリクエストに対応するクエリ結果の配列

レスポンス例

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

注意事項

  • API は生データを返すため、"UNKNOWN" の値が含まれる場合があります
  • メトリクスを分析する際は、関心のある特定のフィールドごとに集計してください (例: 使用量のパターンを把握するには promptsUsed の合計を使用します)
  • モードとプロンプトのデータは複数のエントリに分かれている場合があります
  • クレジット消費量 (promptsUsed) はセント単位で返されます (100 = 1 クレジット)