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"
}
}Obtener usuarios activos
Consulta cuántos usuarios activos distintos hay en tu equipo, con granularidad temporal opcional y agrupación por usuario.
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"
}
}Autenticación
Este endpoint utiliza autenticación con Bearer token. Incluye tu token en el encabezadoAuthorization:
Authorization: Bearer <your_token>
Qué se considera un usuario activo
Un usuario se considera activo en un intervalo de tiempo determinado si tiene algún evento de facturación en él. El campoactive_users indica el número de usuarios distintos.
Agrupación y granularidad
Usagranularity y group_by para controlar la estructura de los datos devueltos:
- Sin granularidad ni agrupación — devuelve una sola fila con el recuento total de usuarios activos para todo el intervalo de fechas
granularity=daily— cada fila incluye untimestampen formatoYYYY-MM-DD(usuarios activos diarios)granularity=monthly— cada fila incluye untimestampen formatoYYYY-MM(usuarios activos mensuales)group_by=user— devuelve una fila por cada usuario activo con unuser_id; el valor deactive_usersen cada fila es1
user como valor de group_by. Otras dimensiones (model_uid, ide, os) no son válidas aquí.Paginación
Los resultados se paginan con un tamaño de página predeterminado de 1.000 filas (máx. 10.000). Cuando hay más resultados disponibles, la respuesta incluye unnext_page_cursor en el objeto pagination. Pásalo como parámetro de consulta page_cursor
para recuperar la página siguiente.
Los cursores de página caducan después de 24 horas. Una solicitud posterior de página no cuenta como una nueva consulta para tu límite de solicitudes.
Límites de velocidad
Este endpoint está sujeto a un límite de 10 solicitudes por hora por equipo. Si supera este límite, el servidor devuelve429 Too Many Requests con un encabezado Retry-After.
Paginar una consulta previa (siguiendo un next_page_cursor) no se contabiliza dentro de este límite:
solo se contabiliza la consulta inicial de cada informe. El límite reducido refleja que este endpoint es para
informes periódicos, no para el seguimiento del uso en tiempo real.Autorizaciones
Una clave de servicio con el permiso Analytics Read, pasada como token Bearer en el encabezado Authorization.
Crea una clave de servicio en tu configuración del equipo, en la sección "Service Keys".
Parámetros de consulta
Inicio del rango de fechas (incluido) en formato YYYY-MM-DD.
Fin del rango de fechas (incluido) en formato YYYY-MM-DD. El rango no debe superar los 90 días.
Producto cuyos usuarios activos se consultarán.
agent Granularidad temporal para agrupar los resultados. Cuando se especifica, cada fila incluye un campo timestamp.
Si se omite, el recuento de usuarios activos se agrega para todo el rango de fechas.
daily, monthly Dimensión por la que se agrupan los resultados. El endpoint de usuarios activos solo admite user, que devuelve
una fila por cada usuario activo (cada una con active_users = 1).
user Lista separada por comas de UID de modelos para filtrar los resultados.
Filtra los resultados para incluir solo usuarios de un grupo específico. La clave de servicio debe tener acceso a este grupo.
Filtra los resultados para un usuario específico (UID de autenticación).
Número máximo de filas que se devuelven por página.
1 <= x <= 10000Cursor opaco de pagination.next_page_cursor de una respuesta anterior para obtener la página siguiente.

