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.
Agenții citesc același card de cont prin unealta account_get a serverului MCP (doar citire; referința la cheie, tokenurile și id-urile de facturare sunt eliminate). profile_get întoarce doar partea de profil (nume, username, consimțăminte, numele de recomandare), profile_update setează username-ul (consimțămintele, renunțarea la antrenare și codurile de recomandare rămân în aplicații), iar feedback_submit notează una dintre turele tale, ca POST /v1/feedback.
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).
x-request-id?stringId de corelare ales de client; e returnat ca x-codai-trace-id și persistat pe rândul de usage.
length <= 128Vederea contului.
application/json- response
Cardul de cont complet returnat de GET /v1/account.
wallet*|nullpromo*|nullreferral*|nulluser_id*stringuuidemail*stringemailtraining_opt_out*booleanFlag-ul GDPR de antrenare. true înseamnă NU ai consimțit (valoarea implicită).
consents*array<>user*key*plan*usage*referral_redeem_until*|Până când mai poți folosi un referral_code (7 zile de la înregistrare); null odată închis.
date-timefeatures*billing_url*"https://codai.ro/api/mobile/billing"uri"https://codai.ro/api/mobile/billing"curl -X GET 'https://ai.codai.ro/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": "user@example.com", "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": "user@example.com", "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"}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).
x-request-id?stringId de corelare ales de client; e returnat ca x-codai-trace-id și persistat pe rândul de usage.
length <= 128x-codai-device*stringUUID 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.
uuidCel puțin un câmp este obligatoriu; cheile necunoscute sunt respinse.
application/json- body
Obiect strict — cheile necunoscute sunt respinse și cel puțin un câmp trebuie să fie prezent.
1 <= propertiestraining_opt_out?booleantrue = NU folosi datele mele pentru antrenare; false doar printr-o acțiune explicită de consimțământ.
consents?Versiunile de termeni/confidențialitate acceptate pentru o suprafață client.
username?stringNormalizat la [a-z0-9_]; se poate schimba o singură dată. Rezultatul în username_error.
3 <= length <= 20referral_consent?booleanOptezi pentru sau ieși din programul de referral.
referral_code?stringUsername-ul celui care te-a invitat. Se poate folosi în primele 7 zile de la înregistrare; acordă recompensa celui invitat.
3 <= length <= 20Contul actualizat (un subset al vederii GET plus câmpurile de rezultat).
application/json- response
Returnat de PATCH /v1/account.
wallet*|nullpromo*|nullreferral*|nulluser_id*stringuuidemail*stringemailtraining_opt_out*booleanconsents*array<>username_error*|De ce username nu a fost aplicat; null când nu l-ai trimis sau a fost aplicat.
"invalid""taken""change_limit"nullreferral_result*|Rezultatul pentru referral_code; null când nu l-ai trimis.
"window_closed""none""invalid_code""self""already_referred""flagged""pending_payment""granted""cap_reached"nullcurl -X PATCH 'https://ai.codai.ro/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": "user@example.com", "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"}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).
session_id?stringSesiunea la care limitezi (se potrivește pe session_id sau pe cheia de sesiune derivată). Are prioritate față de since.
since?stringLimita inferioară ISO 8601 pe started_at. Ignorată când dai session_id. Implicit acum 24h. Neparsabil → 400.
date-timex-request-id?stringId de corelare ales de client; e returnat ca x-codai-trace-id și persistat pe rândul de usage.
length <= 128Chitanța agregată.
application/json- response
Consumul agregat al apelantului. Câmpurile micro-USD sunt întregi; doar cost_usd este convertit.
events*integerNumărul de usage events din scope.
tasks*integerSUMA marcajelor de început de task (un contor, nu rânduri).
cost_micro_usd_total*integerCostul total în micro-USD.
cost_usd*numbercost_micro_usd_total / 1_000_000.
prompt_tokens*integercompletion_tokens*integercached_read_tokens*integercache_write_tokens*integerby_upstream*array<>Per model upstream, ordonat descrescător după cost.
window*curl -X GET 'https://ai.codai.ro/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" }}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).
x-request-id?stringId de corelare ales de client; e returnat ca x-codai-trace-id și persistat pe rândul de usage.
length <= 128Rating plus exact unul dintre event_id, session_id, client_request_id.
application/json- body
Un rating plus o țintă. Zod respinge body-ul când niciuna dintre cele trei ținte nu e prezentă.
event_id*stringId-ul exact al usage event-ului din header-ul de răspuns x-codai-event-id.
uuidsession_id?stringEvaluează cea mai recentă tură de adâncime 0 a apelantului din această sesiune.
1 <= length <= 256client_request_id?stringEvaluează cea mai recentă tură de adâncime 0 a apelantului trimisă cu acest x-request-id.
1 <= length <= 256rating?integer1-1comment?stringlength <= 500Rating salvat (sau actualizat).
application/json- response
ok*truetrueevent_id*stringUsage event-ul evaluat (id-ul rezolvat când ai folosit un alias).
uuidcurl -X POST 'https://ai.codai.ro/v1/feedback' \ -H 'Content-Type: application/json' \ -d '{ "rating": 1}'{ "ok": true, "event_id": "3f0b2c9e-1d4a-4b8c-9e7f-2a6d5c4b3a10"}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).
x-request-id?stringId de corelare ales de client; e returnat ca x-codai-trace-id și persistat pe rândul de usage.
length <= 128Catalogul semnat.
application/json- response
models*array<>curl -X GET 'https://ai.codai.ro/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" } ]}Ultima actualizare: