codai docs
Referință APIGateway

Cont

Cardul contului tău, consimțămintele, chitanțele de cost, feedback-ul pe ture și catalogul de modele on-device.

GET /v1/receipt e endpoint-ul de cost: trimiți session_id pentru o conversație sau since pentru o fereastră și citești cost_micro_usd — micro-USD, niciodată convertiți. Consimțământul pentru antrenare e opt-in (training_opt_out are implicit true). Context de prețuri: limite & prețuri.

GET
/v1/account

Autorizare

bearerAuth
AutorizareBearer <token>

O cheie API codai (prefix codai_). Tokenurile efemere de la POST /v1/tokens sunt acceptate doar de /v1/realtime.

În: header

Parametri header

x-request-id?string

Id de corelare ales de client; e returnat ca x-codai-trace-id și persistat pe rândul de usage.

Lungimelength <= 128

Corpul răspunsului

application/json

application/json

application/json

application/json

curl -X GET "https://example.com/v1/account"
{  "wallet": {    "balance_eur": 12.5,    "next_expiry_at": "2019-08-24T14:15:22Z",    "promo_granted_eur": 0,    "promo_cap_eur": 0,    "history": [      {        "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",        "delta_eur": 10,        "source": "welcome_grant",        "expires_at": "2019-08-24T14:15:22Z",        "promo": "string",        "multiplier": 0,        "list_eur": 0,        "note": "string",        "created_at": "2019-08-24T14:15:22Z"      }    ]  },  "promo": {    "slug": "launch-50",    "title": "string",    "banner_en": "string",    "banner_ro": "string",    "multiplier": 0.5,    "ends_at": "2019-08-24T14:15:22Z"  },  "referral": {    "username": "string",    "consented": true,    "share_url": "https://codai.ro/r/dragos_v",    "invited": 0,    "rewarded": 0,    "pending": 0,    "flagged": 0,    "earned_eur": 0,    "month_remaining": 0,    "lifetime_remaining": 0,    "reward_eur": 0,    "referee_reward_eur": 0,    "qualify_spend_eur": 0  },  "user_id": "a169451c-8525-4352-b8ca-070dd449a1a5",  "email": "[email protected]",  "training_opt_out": true,  "consents": [    {      "surface": "desktop",      "terms_version": "1.1",      "privacy_version": "training-consent-v2-2026-09",      "accepted_at": "2026-09-20T09:15:00.000Z"    }  ],  "user": {    "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",    "email": "[email protected]",    "name": "string",    "username": "string",    "suggested_username": "string"  },  "key": {    "id": "string",    "app_id": "affd1d10-9538-4fc8-9e0b-4594a28c1335"  },  "plan": {    "tier": "pro",    "status": "active",    "current_period_end": "2019-08-24T14:15:22Z",    "cancel_at_period_end": true,    "has_billing_account": true,    "max_routing_tier": "small"  },  "usage": {    "tasks_today": 0,    "tasks_per_day": 0,    "tasks_month": 0,    "tasks_per_month": 0,    "budget_eur_per_day": 0,    "budget_eur_per_month": 0,    "credits": 0  },  "referral_redeem_until": "2019-08-24T14:15:22Z",  "features": {    "byok": true,    "subagents": true,    "persistent_memory": true,    "limits_exempt": true  },  "billing_url": "https://codai.ro/api/mobile/billing"}
PATCH
/v1/account

Autorizare

bearerAuth
AutorizareBearer <token>

O cheie API codai (prefix codai_). Tokenurile efemere de la POST /v1/tokens sunt acceptate doar de /v1/realtime.

În: header

Parametri header

x-request-id?string

Id de corelare ales de client; e returnat ca x-codai-trace-id și persistat pe rândul de usage.

Lungimelength <= 128
x-codai-device*string

UUID stabil al dispozitivului. Înregistrează dispozitivul la prima folosire (nume/platformă din x-codai-device-name / x-codai-device-platform) și selectează protocolul de sesiuni partajate.

Formatuuid

Corpul cererii

application/json

Cel puțin un câmp este obligatoriu; cheile necunoscute sunt respinse.

Definiții TypeScript

Folosește tipul request body în TypeScript.

Obiect strict — cheile necunoscute sunt respinse și cel puțin un câmp trebuie să fie prezent.

Proprietăți1 <= properties

Corpul răspunsului

application/json

application/json

application/json

application/json

curl -X PATCH "https://example.com/v1/account" \  -H "x-codai-device: 497f6eca-6276-4993-bfeb-53cbbbba6f08" \  -H "Content-Type: application/json" \  -d '{}'
{  "wallet": {    "balance_eur": 12.5,    "next_expiry_at": "2019-08-24T14:15:22Z",    "promo_granted_eur": 0,    "promo_cap_eur": 0,    "history": [      {        "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",        "delta_eur": 10,        "source": "welcome_grant",        "expires_at": "2019-08-24T14:15:22Z",        "promo": "string",        "multiplier": 0,        "list_eur": 0,        "note": "string",        "created_at": "2019-08-24T14:15:22Z"      }    ]  },  "promo": {    "slug": "launch-50",    "title": "string",    "banner_en": "string",    "banner_ro": "string",    "multiplier": 0.5,    "ends_at": "2019-08-24T14:15:22Z"  },  "referral": {    "username": "string",    "consented": true,    "share_url": "https://codai.ro/r/dragos_v",    "invited": 0,    "rewarded": 0,    "pending": 0,    "flagged": 0,    "earned_eur": 0,    "month_remaining": 0,    "lifetime_remaining": 0,    "reward_eur": 0,    "referee_reward_eur": 0,    "qualify_spend_eur": 0  },  "user_id": "a169451c-8525-4352-b8ca-070dd449a1a5",  "email": "[email protected]",  "training_opt_out": true,  "consents": [    {      "surface": "desktop",      "terms_version": "1.1",      "privacy_version": "training-consent-v2-2026-09",      "accepted_at": "2026-09-20T09:15:00.000Z"    }  ],  "username_error": "invalid",  "referral_result": "window_closed"}
GET
/v1/receipt

Autorizare

bearerAuth
AutorizareBearer <token>

O cheie API codai (prefix codai_). Tokenurile efemere de la POST /v1/tokens sunt acceptate doar de /v1/realtime.

În: header

Parametri query

session_id?string

Sesiunea la care limitezi (se potrivește pe session_id sau pe cheia de sesiune derivată). Are prioritate față de since.

since?string

Limita inferioară ISO 8601 pe started_at. Ignorată când dai session_id. Implicit acum 24h. Neparsabil → 400.

Formatdate-time

Parametri header

x-request-id?string

Id de corelare ales de client; e returnat ca x-codai-trace-id și persistat pe rândul de usage.

Lungimelength <= 128

Corpul răspunsului

application/json

application/json

application/json

curl -X GET "https://example.com/v1/receipt"
{  "events": 0,  "tasks": 0,  "cost_micro_usd_total": 1834210,  "cost_usd": 1.83421,  "prompt_tokens": 0,  "completion_tokens": 0,  "cached_read_tokens": 0,  "cache_write_tokens": 0,  "by_upstream": [    {      "upstream_model": "claude-sonnet-4-5",      "events": 0,      "cost_micro_usd": 0    }  ],  "window": {    "from": "2019-08-24T14:15:22Z",    "to": "2019-08-24T14:15:22Z",    "session_id": "string"  }}
POST
/v1/feedback

Autorizare

bearerAuth
AutorizareBearer <token>

O cheie API codai (prefix codai_). Tokenurile efemere de la POST /v1/tokens sunt acceptate doar de /v1/realtime.

În: header

Parametri header

x-request-id?string

Id de corelare ales de client; e returnat ca x-codai-trace-id și persistat pe rândul de usage.

Lungimelength <= 128

Corpul cererii

application/json

Rating plus exact unul dintre event_id, session_id, client_request_id.

Definiții TypeScript

Folosește tipul request body în TypeScript.

Un rating plus o țintă. Zod respinge body-ul când niciuna dintre cele trei ținte nu e prezentă.

Un rating plus o țintă. Zod respinge body-ul când niciuna dintre cele trei ținte nu e prezentă.

Corpul răspunsului

application/json

application/json

application/json

application/json

application/json

curl -X POST "https://example.com/v1/feedback" \  -H "Content-Type: application/json" \  -d '{    "rating": 1  }'
{  "ok": true,  "event_id": "3f0b2c9e-1d4a-4b8c-9e7f-2a6d5c4b3a10"}
GET
/v1/phone/models

Autorizare

bearerAuth
AutorizareBearer <token>

O cheie API codai (prefix codai_). Tokenurile efemere de la POST /v1/tokens sunt acceptate doar de /v1/realtime.

În: header

Parametri header

x-request-id?string

Id de corelare ales de client; e returnat ca x-codai-trace-id și persistat pe rândul de usage.

Lungimelength <= 128

Corpul răspunsului

application/json

application/json

application/json

curl -X GET "https://example.com/v1/phone/models"
{  "models": [    {      "id": "codai-nano-1b-q8",      "name": "string",      "file": "codai-nano-1b-q8.litertlm",      "sizeBytes": 3700000000,      "sha256": "string",      "backends": [        "cpu",        "gpu"      ],      "base": "string",      "notes": "string",      "url": "http://example.com",      "expiresAt": "2019-08-24T14:15:22Z"    }  ]}