curl --request GET \
--url https://server.codeium.com/api/v2alpha/analytics/active-users \
--header 'Authorization: Bearer <token>'import requests
url = "https://server.codeium.com/api/v2alpha/analytics/active-users"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://server.codeium.com/api/v2alpha/analytics/active-users', 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/v2alpha/analytics/active-users",
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://server.codeium.com/api/v2alpha/analytics/active-users"
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://server.codeium.com/api/v2alpha/analytics/active-users")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://server.codeium.com/api/v2alpha/analytics/active-users")
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": [
{
"active_users": 142
}
],
"pagination": {
"next_page_cursor": null
},
"metadata": {
"data_freshness": "2026-06-16T03:00:00.000Z",
"query_time_ms": 612,
"team_id": "team_abc123"
}
}Recupera gli utenti attivi
Recupera il numero di utenti attivi distinti del tuo team, con granularità temporale facoltativa e raggruppamento per utente.
curl --request GET \
--url https://server.codeium.com/api/v2alpha/analytics/active-users \
--header 'Authorization: Bearer <token>'import requests
url = "https://server.codeium.com/api/v2alpha/analytics/active-users"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://server.codeium.com/api/v2alpha/analytics/active-users', 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/v2alpha/analytics/active-users",
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://server.codeium.com/api/v2alpha/analytics/active-users"
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://server.codeium.com/api/v2alpha/analytics/active-users")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://server.codeium.com/api/v2alpha/analytics/active-users")
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": [
{
"active_users": 142
}
],
"pagination": {
"next_page_cursor": null
},
"metadata": {
"data_freshness": "2026-06-16T03:00:00.000Z",
"query_time_ms": 612,
"team_id": "team_abc123"
}
}Autenticazione
Questo endpoint utilizza l’autenticazione con token Bearer. Includi il token nell’headerAuthorization:
Authorization: Bearer <your_token>
Cosa si intende per utente attivo
Un utente è conteggiato come attivo per un determinato intervallo di tempo se al suo interno è presente un qualsiasi evento di fatturazione. Il campoactive_users riporta il numero di utenti distinti.
Raggruppamento e granularità
Usagranularity e group_by per controllare la struttura dei dati restituiti:
- Nessuna granularità o raggruppamento — restituisce una singola riga con il numero totale di utenti attivi per l’intero intervallo di date
granularity=daily— ogni riga include untimestampnel formatoYYYY-MM-DD(utenti attivi giornalieri)granularity=monthly— ogni riga include untimestampnel formatoYYYY-MM(utenti attivi mensili)group_by=user— restituisce una riga per ciascun utente attivo con unuser_id; in ogni riga,active_usersè1
user come valore per group_by. Le altre dimensioni (model_uid, ide, os) qui non sono valide.Paginazione
I risultati sono paginati con una dimensione di pagina predefinita di 1.000 righe (max 10.000). Quando sono disponibili altri risultati, la risposta include unnext_page_cursor nell’oggetto pagination. Passalo come parametro di query page_cursor
per recuperare la pagina successiva.
I cursori di pagina scadono dopo 24 ore. Una richiesta per la pagina successiva non viene conteggiata come una nuova richiesta ai fini del tuo limite di richieste.
Limiti di frequenza
Questo endpoint è soggetto a un limite di 10 richieste all’ora per team. Se si supera questo limite, il server restituisce429 Too Many Requests con l’header Retry-After.
La paginazione di una query precedente (seguendo un next_page_cursor) non viene conteggiata ai fini di questo limite —
solo la query iniziale per ciascun report lo è. Il limite ridotto riflette il fatto che questo endpoint è destinato
alla reportistica periodica, non al monitoraggio dell’utilizzo in tempo reale.Autorizzazioni
Una chiave di servizio con autorizzazione Analisi Read, passata come token Bearer nell'header Authorization.
Crea una chiave di servizio nelle impostazioni del team, nella sezione "Service Keys".
Parametri della query
Inizio dell'intervallo di date (incluso) nel formato YYYY-MM-DD.
Fine dell'intervallo di date (incluso) nel formato YYYY-MM-DD. L'intervallo non deve superare i 90 giorni.
Prodotto di cui recuperare gli utenti attivi.
agent Granularità temporale per il raggruppamento dei risultati. Se specificata, ogni riga include un campo timestamp.
Se omessa, il conteggio degli utenti attivi viene aggregato sull'intero intervallo di date.
daily, monthly Dimensione in base a cui raggruppare i risultati. L'endpoint degli utenti attivi supporta solo user, che restituisce
una riga per ogni utente attivo (ciascuna con active_users = 1).
user Elenco separato da virgole degli UID dei modelli in base a cui filtrare i risultati.
Filtra i risultati per gli utenti di un gruppo specifico. La chiave di servizio deve avere accesso a questo gruppo.
Filtra i risultati per un utente specifico (UID auth).
Numero massimo di righe da restituire per pagina.
1 <= x <= 10000Cursore opaco da pagination.next_page_cursor di una risposta precedente per recuperare la pagina successiva.

