Consum și chei
Consumul tău împărțit pe zi, cheie, dispozitiv, aplicație, platformă, model, client sau etichetă, plus cheile tale API cu atribuirea pe dispozitiv și etichete.
Aceste rute întorc aceleași date pe care le arată hub-ul în paginile de consum și de chei, limitate la contul care deține cheia apelantă. Folosește-le din scripturi, din SDK-uri, din CLI sau dintr-un agent ca să afli „cât m-a costat mașina asta săptămâna trecută?” fără să deschizi hub-ul.
Consum
GET /v1/usage întoarce câte un rând pentru fiecare valoare a lui group_by (implicit day) pe o fereastră de zile UTC. from și to sunt date YYYY-MM-DD incluse; fără ele primești ultimele 30 de zile, inclusiv azi. O fereastră are cel mult 400 de zile.
- Grupare după
day,key,device,app(client OAuth),platform,model,clientsautag. - Filtre:
key,device,app,platform,modelsautag; filtrele se aplică înainte de grupare, decigroup_by=model&device=<id>înseamnă „ce modele a folosit dispozitivul acesta”. - Coloane:
requests,errors,tasks(sarcini pornite),prompt_tokens,completion_tokens,cached_read_tokensșicost_micro_usd— micro-USD ca șir zecimal ("1250000"= 1,25 USD). Împarte la 1 000 000 pentru dolari; nu-l transforma în float dacă aduni multe rânduri. - MCP. Agenții apelează unealta doar-citire
usage_get(days= fereastra care se încheie azi, implicit 30;group_byopțional). Serverul MCP nu are unealtă pentru chei: cheile rămân în hub, SDK-uri și CLI. - Istoric. Ultimele 30 de zile sunt citite din evenimentele brute de consum; zilele mai vechi vin dintr-o agregare zilnică. Etichetele stau pe cheie și sunt unite la citire, deci etichetarea unei chei îi reatribuie tot istoricul.
Chei și etichete
GET /v1/keys listează cheile tale (adaugă include_revoked=true pentru cele revocate). Fiecare cheie are kind (device, user, app, service), device_id și platform pe care a fost emisă, client_version, tags, marcajele de timp și current: true pentru cheia care face apelul. Secretul nu este returnat niciodată. Cheile emise pentru aplicații terțe nu apar.
PATCH /v1/keys/{id} înlocuiește etichetele unei chei: cel mult 16 etichete de până la 32 de caractere, iar [] le șterge. Etichetele le alegi tu — un proiect, un client, un centru de cost — iar apoi GET /v1/usage?group_by=tag împarte cheltuielile după ele.
import { Codai } from 'codai-sdk';
const codai = new Codai({ apiKey: process.env.CODAI_API_KEY! });
const byDevice = await codai.usage.get({ from: '2026-09-01', to: '2026-09-30', group_by: 'device' });
const { data: keys } = await codai.keys.list();
await codai.keys.setTags(keys[0]!.id, ['client-acme']);from codai import Codai
codai = Codai(api_key="codai_...")
by_model = codai.usage.get({"group_by": "model"})
keys = codai.keys.list(include_revoked=True)["data"]
codai.keys.set_tags(keys[0]["id"], ["client-acme"])bearerAuthAutorizareBearer <codai_…>O cheie API codai (prefix codai_). Tokenurile efemere de la POST /v1/tokens sunt acceptate doar de suprafețele media potrivite scope-ului lor (/v1/realtime, /v1/audio/*, /v1/embeddings).
from?stringPrima zi (inclusă, YYYY-MM-DD, UTC). Implicit cu 30 de zile înainte de to.
dateto?stringUltima zi (inclusă, YYYY-MM-DD, UTC). Implicit azi.
dategroup_by?stringDimensiunea fiecărui rând.
"day""day""key""device""app""platform""model""client""tag"key?stringDoar această cheie API a ta (uuid).
uuiddevice?stringDoar acest dispozitiv (uuid).
uuidapp?stringDoar acest id de client OAuth (aplicație).
length <= 64platform?stringDoar această platformă de client (de exemplu vscode, desktop, android).
length <= 16model?stringDoar acest model (modelul din amonte, altfel cel cerut).
length <= 128tag?stringDoar cheile care au această etichetă.
length <= 32x-request-id?stringId de corelare ales de client; e returnat ca x-codai-trace-id și persistat pe rândul de usage.
length <= 128Rândurile de consum pentru fereastră.
application/json- response
Consumul contului apelant pentru o fereastră, grupat după o dimensiune.
from*stringPrima zi a ferestrei (inclusă).
dateto*stringUltima zi a ferestrei (inclusă).
dategroup_by*string"day""key""device""app""platform""model""client""tag"data*array<>curl -X GET 'https://ai.codai.ro/v1/usage'{ "from": "2019-08-24", "to": "2019-08-24", "group_by": "day", "data": [ { "key": "string", "requests": 0, "errors": 0, "tasks": 0, "prompt_tokens": 0, "completion_tokens": 0, "cached_read_tokens": 0, "cost_micro_usd": "string" } ]}bearerAuthAutorizareBearer <codai_…>O cheie API codai (prefix codai_). Tokenurile efemere de la POST /v1/tokens sunt acceptate doar de suprafețele media potrivite scope-ului lor (/v1/realtime, /v1/audio/*, /v1/embeddings).
include_revoked?stringtrue întoarce și cheile revocate.
"false""true""false"x-request-id?stringId de corelare ales de client; e returnat ca x-codai-trace-id și persistat pe rândul de usage.
length <= 128Cheile tale.
application/json- response
data*array<>curl -X GET 'https://ai.codai.ro/v1/keys'{ "data": [ { "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08", "label": "string", "prefix": "string", "enabled": true, "kind": "device", "app": "string", "device_id": "string", "platform": "string", "client_version": "string", "tags": [ "string" ], "created_at": "2019-08-24T14:15:22Z", "last_used_at": "2019-08-24T14:15:22Z", "expires_at": "2019-08-24T14:15:22Z", "idle_expiry_days": 0, "revoked_at": "2019-08-24T14:15:22Z", "current": true } ]}bearerAuthAutorizareBearer <codai_…>O cheie API codai (prefix codai_). Tokenurile efemere de la POST /v1/tokens sunt acceptate doar de suprafețele media potrivite scope-ului lor (/v1/realtime, /v1/audio/*, /v1/embeddings).
id*stringId-ul cheii API (uuid).
uuidx-request-id?stringId de corelare ales de client; e returnat ca x-codai-trace-id și persistat pe rândul de usage.
length <= 128application/json- body
tags*array<>items <= 16Etichetele salvate acum pe cheie.
application/json- response
id*stringuuidtags*array<string>curl -X PATCH 'https://ai.codai.ro/v1/keys/497f6eca-6276-4993-bfeb-53cbbbba6f08' \ -H 'Content-Type: application/json' \ -d '{ "tags": [ "string" ]}'{ "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08", "tags": [ "string" ]}Transcrieri
Înregistrezi ședințe și apeluri pe orice dispozitiv și primești o transcriere română/engleză cu vorbitori și marcaje de timp pe cuvânt, apoi un rezumat, idei cheie, acțiuni și prompturi pentru agenți gata de rulat.
Memorie
Listează, caută, salvează și șterge amintirile persistente — același depozit folosit de uneltele de memorie MCP.