Sesiuni
Protocolul de sesiuni partajate v2: jurnal de evenimente, controale, lease de executor, dispatch și stream-ul SSE live.
Fiecare apel poartă x-codai-device (un UUID stabil) — acel header e cel care selectează protocolul v2 și înregistrează dispozitivul. Un singur executor ține lease-ul; viewer-ii și editorii trimit controale; toți citesc același jurnal de evenimente. Protocolul în sine e specificat în secțiunea de sesiuni.
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-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.
uuidx-codai-device-name?stringNume lizibil al dispozitivului, folosit la prima înregistrare (trunchiat la 120 de caractere).
length <= 120x-codai-device-platform?stringPlatforma înregistrată la prima folosire; valorile necunoscute devin agent.
"android""ios""web""desktop""cli""agent"x-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
session_key?stringCheie stabilă aleasă de client; UUID aleator când lipsește. Un UUID de server al unei sesiuni existente pe care o poți citi se rezolvă la acea sesiune.
1 <= length <= 256title?stringlength <= 500e2e?booleanMarchează payload-urile ca criptate end-to-end.
falsestub?booleanCreează un stub doar cu titlu (încă fără evenimente); cei care o văd cer transcriptul cu un control hydrate.
falseExistă deja o sesiune cu acest session_key (sau id de server); e întoarsă neschimbată.
application/json- response
O sesiune partajată, așa cum e întoarsă de create/patch și inclusă în listă/detalii.
id*stringId atribuit de server.
uuidsession_key*stringCheie stabilă aleasă de client, unică per owner.
owner_user_id*stringuuidtitle*stringlength <= 500created_at*stringdate-timelast_event_at*stringActualizat la fiecare eveniment stocat.
date-timelast_seq*integerCel mai mare seq de eveniment; 0 pentru o sesiune goală.
0 <= valueexecutor_device_id*stringOglinda deținătorului lease-ului; poate fi învechită până la următoarea scriere a lease-ului.
uuidlease_expires_at*stringdate-timee2e*booleanPayload-urile sunt criptate end-to-end pe client.
archived*booleanstub*booleanOglindă doar cu titlu, încă fără evenimente; se anulează la primul lot de evenimente adăugat.
curl -X POST 'https://ai.codai.ro/v1/sessions' \ -H 'x-codai-device: 497f6eca-6276-4993-bfeb-53cbbbba6f08' \ -H 'Content-Type: application/json' \ -d '{}'{ "id": "3f7a4c1e-9b2d-4e8f-a1b6-5c0d7e2f9a34", "session_key": "desktop-2026-09-23-main", "owner_user_id": "65139110-7c3c-4777-b692-80c218be3b9d", "title": "string", "created_at": "2019-08-24T14:15:22Z", "last_event_at": "2019-08-24T14:15:22Z", "last_seq": 0, "executor_device_id": "4a403d11-3f52-4f9c-8024-3e4b6ac6da4c", "lease_expires_at": "2019-08-24T14:15:22Z", "e2e": true, "archived": true, "stub": 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).
limit?integerNumăr maxim de rânduri per listă (proprii și partajate sunt limitate separat). Implicit 50, maxim 200.
0 <= value <= 20050archived?stringInclude sesiunile arhivate când e 1 sau true.
"0""1""true""false"v?"2"Forțează protocolul v2 fără header-ul de dispozitiv. Doar 2 are sens.
"2"x-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.
uuidx-codai-device-name?stringNume lizibil al dispozitivului, folosit la prima înregistrare (trunchiat la 120 de caractere).
length <= 120x-codai-device-platform?stringPlatforma înregistrată la prima folosire; valorile necunoscute devin agent.
"android""ios""web""desktop""cli""agent"x-request-id?stringId de corelare ales de client; e returnat ca x-codai-trace-id și persistat pe rândul de usage.
length <= 128Sesiunile proprii mai întâi, apoi cele partajate, fiecare ordonate descrescător după last_event_at.
application/json- response
sessions*array<>curl -X GET 'https://ai.codai.ro/v1/sessions' \ -H 'x-codai-device: 497f6eca-6276-4993-bfeb-53cbbbba6f08'{ "sessions": [ { "id": "3f7a4c1e-9b2d-4e8f-a1b6-5c0d7e2f9a34", "session_key": "desktop-2026-09-23-main", "owner_user_id": "65139110-7c3c-4777-b692-80c218be3b9d", "title": "string", "created_at": "2019-08-24T14:15:22Z", "last_event_at": "2019-08-24T14:15:22Z", "last_seq": 0, "executor_device_id": "4a403d11-3f52-4f9c-8024-3e4b6ac6da4c", "lease_expires_at": "2019-08-24T14:15:22Z", "e2e": true, "archived": true, "stub": true, "role": "viewer", "presence_count": 0 } ]}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*stringUUID-ul de server al sesiunii SAU session_key-ul ei de client. La coliziuni de session_key, sesiunile proprii au prioritate.
length <= 256v?"2"Forțează protocolul v2 fără header-ul de dispozitiv. Doar 2 are sens.
"2"x-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.
uuidx-codai-device-name?stringNume lizibil al dispozitivului, folosit la prima înregistrare (trunchiat la 120 de caractere).
length <= 120x-codai-device-platform?stringPlatforma înregistrată la prima folosire; valorile necunoscute devin agent.
"android""ios""web""desktop""cli""agent"x-request-id?stringId de corelare ales de client; e returnat ca x-codai-trace-id și persistat pe rândul de usage.
length <= 128Detaliile sesiunii.
application/json- response
O sesiune partajată, așa cum e întoarsă de create/patch și inclusă în listă/detalii.
id*stringId atribuit de server.
uuidsession_key*stringCheie stabilă aleasă de client, unică per owner.
owner_user_id*stringuuidtitle*stringlength <= 500created_at*stringdate-timelast_event_at*stringActualizat la fiecare eveniment stocat.
date-timelast_seq*integerCel mai mare seq de eveniment; 0 pentru o sesiune goală.
0 <= valueexecutor_device_id*stringOglinda deținătorului lease-ului; poate fi învechită până la următoarea scriere a lease-ului.
uuidlease_expires_at*stringdate-timee2e*booleanPayload-urile sunt criptate end-to-end pe client.
archived*booleanstub*booleanOglindă doar cu titlu, încă fără evenimente; se anulează la primul lot de evenimente adăugat.
role*SessionRoleRolul unui principal pe o sesiune; owner ≥ editor ≥ viewer.
"viewer""editor""owner"members*array<>lease*|nullpresence*array<>curl -X GET 'https://ai.codai.ro/v1/sessions/3f7a4c1e-9b2d-4e8f-a1b6-5c0d7e2f9a34' \ -H 'x-codai-device: 497f6eca-6276-4993-bfeb-53cbbbba6f08'{ "id": "3f7a4c1e-9b2d-4e8f-a1b6-5c0d7e2f9a34", "session_key": "desktop-2026-09-23-main", "owner_user_id": "65139110-7c3c-4777-b692-80c218be3b9d", "title": "string", "created_at": "2019-08-24T14:15:22Z", "last_event_at": "2019-08-24T14:15:22Z", "last_seq": 0, "executor_device_id": "4a403d11-3f52-4f9c-8024-3e4b6ac6da4c", "lease_expires_at": "2019-08-24T14:15:22Z", "e2e": true, "archived": true, "stub": true, "role": "viewer", "members": [ { "user_id": "a169451c-8525-4352-b8ca-070dd449a1a5", "role": "viewer", "remote": true, "devices": [ { "device_id": "3bafab7b-4400-4bcf-8e6e-09f954699940", "name": "string", "platform": "android", "last_seen_at": "2019-08-24T14:15:22Z", "remote": true } ] } ], "lease": { "device_id": "3bafab7b-4400-4bcf-8e6e-09f954699940", "expires_at": "2019-08-24T14:15:22Z" }, "presence": [ { "device_id": "3bafab7b-4400-4bcf-8e6e-09f954699940", "user_id": "a169451c-8525-4352-b8ca-070dd449a1a5", "role": "viewer", "executor": true, "last_seen": 1758614400000, "driving": true, "remote": 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*stringUUID-ul de server al sesiunii SAU session_key-ul ei de client. La coliziuni de session_key, sesiunile proprii au prioritate.
length <= 256x-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.
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
Cel puțin unul dintre title / archived e obligatoriu.
title?stringTitlul nou, sau null pentru a-l șterge.
length <= 500archived?booleanSesiunea actualizată.
application/json- response
O sesiune partajată, așa cum e întoarsă de create/patch și inclusă în listă/detalii.
id*stringId atribuit de server.
uuidsession_key*stringCheie stabilă aleasă de client, unică per owner.
owner_user_id*stringuuidtitle*stringlength <= 500created_at*stringdate-timelast_event_at*stringActualizat la fiecare eveniment stocat.
date-timelast_seq*integerCel mai mare seq de eveniment; 0 pentru o sesiune goală.
0 <= valueexecutor_device_id*stringOglinda deținătorului lease-ului; poate fi învechită până la următoarea scriere a lease-ului.
uuidlease_expires_at*stringdate-timee2e*booleanPayload-urile sunt criptate end-to-end pe client.
archived*booleanstub*booleanOglindă doar cu titlu, încă fără evenimente; se anulează la primul lot de evenimente adăugat.
curl -X PATCH 'https://ai.codai.ro/v1/sessions/3f7a4c1e-9b2d-4e8f-a1b6-5c0d7e2f9a34' \ -H 'x-codai-device: 497f6eca-6276-4993-bfeb-53cbbbba6f08' \ -H 'Content-Type: application/json' \ -d '{}'{ "id": "3f7a4c1e-9b2d-4e8f-a1b6-5c0d7e2f9a34", "session_key": "desktop-2026-09-23-main", "owner_user_id": "65139110-7c3c-4777-b692-80c218be3b9d", "title": "string", "created_at": "2019-08-24T14:15:22Z", "last_event_at": "2019-08-24T14:15:22Z", "last_seq": 0, "executor_device_id": "4a403d11-3f52-4f9c-8024-3e4b6ac6da4c", "lease_expires_at": "2019-08-24T14:15:22Z", "e2e": true, "archived": true, "stub": 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*stringUUID-ul de server al sesiunii SAU session_key-ul ei de client. La coliziuni de session_key, sesiunile proprii au prioritate.
length <= 256x-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.
uuidx-request-id?stringId de corelare ales de client; e returnat ca x-codai-trace-id și persistat pe rândul de usage.
length <= 128Ștearsă.
application/json- response
deleted*truetrueid*stringId-ul de server al sesiunii șterse.
uuidcurl -X DELETE 'https://ai.codai.ro/v1/sessions/3f7a4c1e-9b2d-4e8f-a1b6-5c0d7e2f9a34' \ -H 'x-codai-device: 497f6eca-6276-4993-bfeb-53cbbbba6f08'{ "deleted": true, "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08"}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*stringUUID-ul de server al sesiunii SAU session_key-ul ei de client. La coliziuni de session_key, sesiunile proprii au prioritate.
length <= 256after?integerÎntoarce evenimentele cu seq strict mai mare decât această valoare. Implicit 0.
0 <= value0limit?integerDimensiunea paginii. Implicit 200, maxim 1000.
0 <= value <= 1000200x-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.
uuidx-request-id?stringId de corelare ales de client; e returnat ca x-codai-trace-id și persistat pe rândul de usage.
length <= 128O pagină de evenimente.
application/json- response
last_seq*integerCel mai mare seq din sesiune la momentul citirii.
events*array<>curl -X GET 'https://ai.codai.ro/v1/sessions/3f7a4c1e-9b2d-4e8f-a1b6-5c0d7e2f9a34/events' \ -H 'x-codai-device: 497f6eca-6276-4993-bfeb-53cbbbba6f08'{ "last_seq": 42, "events": [ { "seq": 1, "kind": "user_message", "ts": 1758614400000, "sender_device_id": "bc45c0f5-ada8-4820-b7a5-8dc052568462", "turn_id": "string", "client_event_id": "string", "payload": {} } ]}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*stringUUID-ul de server al sesiunii SAU session_key-ul ei de client. La coliziuni de session_key, sesiunile proprii au prioritate.
length <= 256x-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.
uuidx-codai-device-name?stringNume lizibil al dispozitivului, folosit la prima înregistrare (trunchiat la 120 de caractere).
length <= 120x-codai-device-platform?stringPlatforma înregistrată la prima folosire; valorile necunoscute devin agent.
"android""ios""web""desktop""cli""agent"x-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
events*array<>1 <= items <= 200expected_last_seq?integerVerificare optimistă; nepotrivire → 409 seq_conflict.
0 <= valueLot procesat (rândurile noi stocate, duplicatele mapate la seq-ul existent).
application/json- response
last_seq*integerlast_seq-ul sesiunii după adăugare.
accepted*integerNumărul de evenimente stocate acum (fără duplicate).
events*array<>O intrare per element al lotului, în ordine.
curl -X POST 'https://ai.codai.ro/v1/sessions/3f7a4c1e-9b2d-4e8f-a1b6-5c0d7e2f9a34/events' \ -H 'x-codai-device: 497f6eca-6276-4993-bfeb-53cbbbba6f08' \ -H 'Content-Type: application/json' \ -d '{ "events": [ { "kind": "string" } ]}'{ "last_seq": 0, "accepted": 0, "events": [ { "client_event_id": "string", "seq": 0 } ]}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*stringUUID-ul de server al sesiunii SAU session_key-ul ei de client. La coliziuni de session_key, sesiunile proprii au prioritate.
length <= 256applied?stringÎntoarce controalele aplicate (1/true) în loc de cele în așteptare. Implicit cele în așteptare.
"0""1""true""false"target?stringme (dispozitivul apelant) sau un UUID de dispozitiv; se întorc doar controalele trimise către acel dispozitiv.
x-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.
uuidx-request-id?stringId de corelare ales de client; e returnat ca x-codai-trace-id și persistat pe rândul de usage.
length <= 128Controalele care corespund filtrelor.
application/json- response
controls*array<>curl -X GET 'https://ai.codai.ro/v1/sessions/3f7a4c1e-9b2d-4e8f-a1b6-5c0d7e2f9a34/controls' \ -H 'x-codai-device: 497f6eca-6276-4993-bfeb-53cbbbba6f08'{ "controls": [ { "id": "string", "kind": "send", "text": "string", "turn_id": "string", "ask_id": "string", "from_device_id": "10624cda-85b4-412c-80da-8ce165bfd5b0", "target_device_id": "12785743-1d27-41cd-88a7-0ac66360e3d6", "mode": "open", "seq": 0, "applied": true, "created_at": "2019-08-24T14:15:22Z" } ]}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*stringUUID-ul de server al sesiunii SAU session_key-ul ei de client. La coliziuni de session_key, sesiunile proprii au prioritate.
length <= 256x-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.
uuidx-codai-device-name?stringNume lizibil al dispozitivului, folosit la prima înregistrare (trunchiat la 120 de caractere).
length <= 120x-codai-device-platform?stringPlatforma înregistrată la prima folosire; valorile necunoscute devin agent.
"android""ios""web""desktop""cli""agent"x-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
id*stringCheie de idempotență a clientului, unică per sesiune.
1 <= length <= 128kind*SessionControlKindTipul de control pe care un non-executor îl poate trimite executorului. hydrate cere executorului să încarce transcriptul unei sesiuni stub (doar owner-ul sesiunii, ca send).
"send""answer""approve""deny""cancel""steer""inject""pause""resume""hydrate"text?stringTextul mesajului pentru send / answer / steer / inject.
length <= 100000turn_id?stringlength <= 128ask_id?stringId-ul întrebării la care se răspunde / se aprobă / se refuză.
length <= 128Există deja un control cu acest id în sesiune; nu s-a scris nimic.
application/json- response
accepted*truetrueseq*integerSeq-ul evenimentului control reflectat.
duplicate*booleantrue când id-ul controlului exista deja.
curl -X POST 'https://ai.codai.ro/v1/sessions/3f7a4c1e-9b2d-4e8f-a1b6-5c0d7e2f9a34/control' \ -H 'x-codai-device: 497f6eca-6276-4993-bfeb-53cbbbba6f08' \ -H 'Content-Type: application/json' \ -d '{ "id": "ctl-01J8Z7Q2K9", "kind": "send"}'{ "accepted": true, "seq": 0, "duplicate": 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*stringUUID-ul de server al sesiunii SAU session_key-ul ei de client. La coliziuni de session_key, sesiunile proprii au prioritate.
length <= 256cid*stringid-ul controlului, ales de client.
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.
uuidx-request-id?stringId de corelare ales de client; e returnat ca x-codai-trace-id și persistat pe rândul de usage.
length <= 128Marcat ca aplicat.
application/json- response
id*stringId-ul controlului.
applied*truetruecurl -X POST 'https://ai.codai.ro/v1/sessions/3f7a4c1e-9b2d-4e8f-a1b6-5c0d7e2f9a34/control/string/applied' \ -H 'x-codai-device: 497f6eca-6276-4993-bfeb-53cbbbba6f08'{ "id": "string", "applied": 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*stringUUID-ul de server al sesiunii SAU session_key-ul ei de client. La coliziuni de session_key, sesiunile proprii au prioritate.
length <= 256x-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.
uuidx-codai-device-name?stringNume lizibil al dispozitivului, folosit la prima înregistrare (trunchiat la 120 de caractere).
length <= 120x-codai-device-platform?stringPlatforma înregistrată la prima folosire; valorile necunoscute devin agent.
"android""ios""web""desktop""cli""agent"x-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
device_id*stringDispozitivul țintă; trebuie să aparțină owner-ului sesiunii.
uuidmode?stringsend rulează text ca tură nouă pe țintă; open doar deschide sesiunea acolo (handoff — text/turn_id ignorate, nicio tură de utilizator).
"send""send""open"text?stringPrompt-ul pentru țintă. Obligatoriu, cu excepția mode = open (altfel 400).
1 <= length <= 100000turn_id?stringIgnorat când mode e open.
length <= 128control_id?stringCheie de idempotență a clientului; se generează dispatch:<uuid> când lipsește.
1 <= length <= 128Există deja un control cu acest control_id; nimic pus în coadă, niciun push trimis.
application/json- response
control_id*stringseq*integertarget_device_id*stringuuidmode*stringModul efectiv de dispatch (send când cererea l-a omis).
"send""open"queued*truetruepushed*booleantrue doar când FCM a acceptat mesajul de trezire.
duplicate*booleanpush_reason?stringDe ce nu s-a livrat push — no_push_token, no_token, auth_failed, network_error, unregistered (token șters) sau http_<status>. Absent la succes.
curl -X POST 'https://ai.codai.ro/v1/sessions/3f7a4c1e-9b2d-4e8f-a1b6-5c0d7e2f9a34/dispatch' \ -H 'x-codai-device: 497f6eca-6276-4993-bfeb-53cbbbba6f08' \ -H 'Content-Type: application/json' \ -d '{ "device_id": "3bafab7b-4400-4bcf-8e6e-09f954699940"}'{ "control_id": "dispatch:8c2e5f1a-7b3d-4c9e-a0f1-2d3e4f5a6b7c", "seq": 0, "target_device_id": "12785743-1d27-41cd-88a7-0ac66360e3d6", "mode": "send", "queued": true, "pushed": true, "duplicate": true, "push_reason": "no_push_token"}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*stringUUID-ul de server al sesiunii SAU session_key-ul ei de client. La coliziuni de session_key, sesiunile proprii au prioritate.
length <= 256x-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.
uuidx-codai-device-name?stringNume lizibil al dispozitivului, folosit la prima înregistrare (trunchiat la 120 de caractere).
length <= 120x-codai-device-platform?stringPlatforma înregistrată la prima folosire; valorile necunoscute devin agent.
"android""ios""web""desktop""cli""agent"x-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
device_id?stringRevendică pentru acest dispozitiv în locul celui din x-codai-device (înregistrat lazy sub contul tău).
uuidforce?booleanPreia un lease live deținut de alt dispozitiv.
falseLease acordat (sau reînnoit pentru același dispozitiv).
application/json- response
session_id*stringuuiddevice_id*stringDeținătorul lease-ului.
uuidexpires_at*stringAcum + 30 s.
date-timecurl -X POST 'https://ai.codai.ro/v1/sessions/3f7a4c1e-9b2d-4e8f-a1b6-5c0d7e2f9a34/lease' \ -H 'x-codai-device: 497f6eca-6276-4993-bfeb-53cbbbba6f08' \ -H 'Content-Type: application/json' \ -d '{}'{ "session_id": "1ffd059c-17ea-40a8-8aef-70fd0307db82", "device_id": "3bafab7b-4400-4bcf-8e6e-09f954699940", "expires_at": "2019-08-24T14:15:22Z"}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*stringUUID-ul de server al sesiunii SAU session_key-ul ei de client. La coliziuni de session_key, sesiunile proprii au prioritate.
length <= 256x-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.
uuidx-request-id?stringId de corelare ales de client; e returnat ca x-codai-trace-id și persistat pe rândul de usage.
length <= 128Lease reînnoit.
application/json- response
session_id*stringuuiddevice_id*stringDeținătorul lease-ului.
uuidexpires_at*stringAcum + 30 s.
date-timecurl -X PUT 'https://ai.codai.ro/v1/sessions/3f7a4c1e-9b2d-4e8f-a1b6-5c0d7e2f9a34/lease' \ -H 'x-codai-device: 497f6eca-6276-4993-bfeb-53cbbbba6f08'{ "session_id": "1ffd059c-17ea-40a8-8aef-70fd0307db82", "device_id": "3bafab7b-4400-4bcf-8e6e-09f954699940", "expires_at": "2019-08-24T14:15:22Z"}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*stringUUID-ul de server al sesiunii SAU session_key-ul ei de client. La coliziuni de session_key, sesiunile proprii au prioritate.
length <= 256x-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.
uuidx-request-id?stringId de corelare ales de client; e returnat ca x-codai-trace-id și persistat pe rândul de usage.
length <= 128Rezultatul eliberării.
application/json- response
session_id*stringuuidreleased*booleanfalse când acest dispozitiv nu era deținătorul.
curl -X DELETE 'https://ai.codai.ro/v1/sessions/3f7a4c1e-9b2d-4e8f-a1b6-5c0d7e2f9a34/lease' \ -H 'x-codai-device: 497f6eca-6276-4993-bfeb-53cbbbba6f08'{ "session_id": "1ffd059c-17ea-40a8-8aef-70fd0307db82", "released": 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*stringUUID-ul de server al sesiunii SAU session_key-ul ei de client. La coliziuni de session_key, sesiunile proprii au prioritate.
length <= 256after?integerRedă evenimentele cu seq strict mai mare decât această valoare înainte de a trece live. Implicit 0 (redare completă, limitată la 1000).
0 <= value0x-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.
uuidx-codai-device-name?stringNume lizibil al dispozitivului, folosit la prima înregistrare (trunchiat la 120 de caractere).
length <= 120x-codai-device-platform?stringPlatforma înregistrată la prima folosire; valorile necunoscute devin agent.
"android""ios""web""desktop""cli""agent"x-request-id?stringId de corelare ales de client; e returnat ca x-codai-trace-id și persistat pe rândul de usage.
length <= 128Server-sent events; rămâne deschis până la 30 de minute.
response?stringtext/event-streamcurl -X GET 'https://ai.codai.ro/v1/sessions/3f7a4c1e-9b2d-4e8f-a1b6-5c0d7e2f9a34/stream' \ -H 'x-codai-device: 497f6eca-6276-4993-bfeb-53cbbbba6f08'"string"Ultima actualizare: