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.
Transcrierile transformă o înregistrare în text căutabil și în ceva pe care poți acționa. Aplicația desktop, telefonul și ceasul înregistrează local și încarcă în fundal; gateway-ul transcrie cu etichete de vorbitor și marcaje de timp pe cuvânt (română și engleză, inclusiv amestecate în aceeași înregistrare), apoi scrie analiza: un titlu, un rezumat, idei cheie cu citări, acțiuni, decizii, întrebări deschise și prompturi pentru agenți pe care le poți lansa.
Transcrierile se activează per cont cât timp sunt în previzualizare. Când funcția e oprită pentru
cheia ta, toate endpoint-urile de mai jos răspund 404.
Drumul unei înregistrări
- Creare.
POST /v1/transcriptscu unclient_idgenerat de client (o reîncercare după un crash întoarce aceeași transcriere) șistarted_at. Starerecording. - Încărcare. Fiecare pistă (
mic,system— sunetul sistemului, sau o singură pistămixed) urcă prin tus 1.0 la/v1/uploads: reluabil, cel mult 8 MB perPATCH, deci o conexiune căzută sau o repornire continuă de la ultimul octet pe care îl are serverul (HEAD /v1/uploads/{id}). Id-urile de încărcare aparțin contului tău; altă cheie nu le poate continua. - Finalizare.
POST /v1/transcripts/{id}/finalizecu id-urile încărcărilor, durata, marcajele și (opțional) textul live. Starequeued. - Transcriere. Procesul de fundal taie sunetul în ferestre de cel mult 15 minute (limita pentru separarea vorbitorilor) și le trimite la Gemini 3.5 Transcribe. Vorbitorii sunt potriviți între ferestre. Stare
transcribing, apoianalyzing. - Analiză. Un model scrie analiza din transcriere (cu prompt caching). Stare
ready. Un eșec după 5 încercări se termină cufailedșierror;POST …/retranscribeși…/reanalyzereiau un pas.
Cât timp un pas se reîncearcă, status nu se schimbă; GET /v1/transcripts/{id} întoarce processing cu attempts, max_attempts, last_error și next_attempt_at, ca un client să poată spune „se reîncearcă” în loc să pară blocat. GET /v1/transcripts/stream (server-sent events) trimite un eveniment transcript la fiecare schimbare de stare.
Vizualizare live. În timpul înregistrării, dispozitivul poate trimite POST /v1/transcripts/{id}/live cu textul curent (finals, partial, level, device, elapsed_ms, paused) cam o dată pe secundă. Fiecare vizualizator al fluxului (pagina din hub, desktop, telefon, ceas) îl primește ca op: live; nu se salvează nimic, iar cadrele la mai puțin de 250 ms sunt ignorate.
import { readFile } from 'node:fs/promises';
import { Codai } from 'codai-sdk';
const codai = new Codai({ apiKey: process.env.CODAI_API_KEY! });
const t = await codai.transcripts.create({
client_id: crypto.randomUUID(),
source: 'desktop',
started_at: new Date().toISOString(),
});
const uploadId = await codai.transcripts.uploadAudio(await readFile('sedinta.ogg'), {
transcriptId: t.id,
onProgress: (sent, total) => console.log(`${sent}/${total}`),
});
await codai.transcripts.finalize(t.id, {
duration_ms: 1_800_000,
uploads: [{ track: 'mic', upload_id: uploadId }],
});
for await (const e of codai.transcripts.stream()) if (e.id === t.id && e.status === 'ready') break;
const gata = await codai.transcripts.get(t.id);
console.log(gata.insights?.summary);from codai import Codai
codai = Codai(api_key="codai_...")
t = codai.transcripts.create({"client_id": "rec-2026-10-06-1", "source": "desktop", "started_at": "2026-10-06T09:00:00Z"})
upload_id = codai.transcripts.upload_audio(open("sedinta.ogg", "rb").read(), transcript_id=t["id"])
codai.transcripts.finalize(t["id"], {"duration_ms": 1_800_000, "uploads": [{"track": "mic", "upload_id": upload_id}]})
srt = codai.transcripts.export(t["id"], "srt")["text"]Lucrul cu o transcriere
- Citire.
GET /v1/transcripts/{id}: vorbitorii (redenumești unul sau te marchezi pe tine cuPATCH …/speakers/{label}), replicile cu marcaje de timp pe cuvânt (corectezi una cuPATCH …/utterances/{seq}), marcajele și ultima analiză. - Căutare și întrebări.
GET /v1/transcripts/searchcaută după text și după sens (mode=hybrid, implicit).POST /v1/transcripts/askrăspunde la o întrebare din toate înregistrările tale, cu citări[n]către transcriere, vorbitor și moment. - Acțiune. Analiza conține
promptssugerate pentru agenți;POST …/prompts/{index}/accepttransformă unul într-un prompt în așteptare cusource: transcript, gata de lansat pe un dispozitiv. - Export și redare.
GET …/export?format=md|txt|srt|vtt|json|pdf|docx(vezi mai jos);GET …/audioîntoarce linkuri semnate, de scurtă durată, pentru fiecare pistă. - Organizare. Dosare (
/v1/transcript-folders), etichete și fixare; un vocabular personal (PUT /v1/transcript-vocabulary) pentru nume și termeni pe care transcrierea trebuie să-i scrie corect.
Export ca PDF sau Word
GET /v1/transcripts/{id}/export?format=pdf și format=docx întorc un fișier binar atașat, numit după titlu (un filename ASCII plus titlul exact în filename*). Documentul conține titlul, data, durata și vorbitorii, apoi rezumatul, ideile cheie și acțiunile când există analiza, apoi transcrierea pe vorbitori cu marcaje [hh:mm:ss]. PDF-ul încorporează un font Unicode, deci diacriticele (ș, ț, ă, î, â) apar corect la tipărire. Etichetele urmează limba transcrierii (română sau engleză).
import { writeFile } from 'node:fs/promises';
const pdf = await codai.transcripts.export(t.id, 'pdf'); // { bytes, filename, contentType }
await writeFile(pdf.filename ?? 'transcriere.pdf', pdf.bytes);docx = codai.transcripts.export(t["id"], "docx") # {"bytes", "filename", "content_type"}
open(docx["filename"] or "transcriere.docx", "wb").write(docx["bytes"])Partajare printr-un link doar pentru citire
POST /v1/transcripts/{id}/shares cu un expiresInDays opțional (1–365; fără el linkul nu expiră) întoarce { id, token, url, expiresAt }, unde url este https://hub.codai.ro/t/<token>. Oricine are linkul poate citi titlul, vorbitorii, transcrierea, rezumatul, ideile cheie și acțiunile, niciodată sunetul, și nimic care să-ți identifice contul. Deciziile, întrebările deschise și prompturile sugerate rămân private.
- Tokenul are 32 de octeți aleatori și se afișează o singură dată: se păstrează doar amprenta lui SHA-256, așa că
GET …/shareslistează linkurile active cuurl: null. DELETE …/shares/{shareId}revocă imediat un link; ștergerea transcrierii șterge toate linkurile ei.- Pagina din spatele linkului citește
GET /v1/public/transcripts/{token}, care nu cere cheie API, are limită de cereri per vizitator și răspunde404pentru un link necunoscut, expirat sau revocat.
const link = await codai.transcripts.shares.create(t.id, { expiresInDays: 30 });
console.log(link.url); // copiază-l acum; nu mai poate fi afișat
const active = await codai.transcripts.shares.list(t.id);
await codai.transcripts.shares.revoke(t.id, active[0]!.id);Confidențialitate, păstrare și limite
- Sunetul stă într-un bucket din UE, criptat cu o cheie dedicată, și se șterge după 30 de zile; textul și analiza rămân până le ștergi tu. După ce sunetul dispare,
audio_purged_ateste setat și redarea și retranscrierea nu mai sunt oferite. DELETE /v1/transcripts/{id}șterge transcrierea și sunetul ei. Ștergerea contului șterge toate înregistrările; exportul contului include toate tabelele de transcrieri (fără sunet).- Cel mult 3 ore per înregistrare și 20 de ore pe lună per cont (
GET /v1/transcripts/usage).
Tool-uri MCP
Serverul MCP expune list_transcripts, get_transcript, search_transcripts, ask_transcripts, export_transcript (doar formatele text; PDF și Word sunt fișiere binare), accept_transcript_prompt și transcript_share_create, apelate cu cheia ta API (token-urile OAuth sunt refuzate). Ștergerea, revocarea linkurilor, reluarea și editarea rămân în aplicații.
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).
status?stringDoar transcrierile cu acest status.
"recording""uploading""queued""transcribing""analyzing""ready""failed"folder_id?stringDoar transcrierile din acest dosar.
uuidpinned?booleanFiltru după fixare: true/1 doar cele fixate, false/0 doar cele nefixate.
tag?stringDoar transcrierile cu această etichetă.
length <= 40cursor?stringnext_cursor al paginii anterioare (dată-oră ISO); întoarce transcrieri mai vechi.
length <= 200limit?integerDimensiunea paginii (1–100).
1 <= value <= 10030x-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 transcrieri.
application/json- response
transcripts*array<>next_cursor*|Cursorul paginii următoare; null pe ultima pagină.
curl -X GET 'https://ai.codai.ro/v1/transcripts'{ "transcripts": [ { "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08", "client_id": "string", "title": "string", "status": "recording", "source": "desktop", "template": "auto", "language_hint": "string", "language": "string", "folder_id": "7695bac3-9397-4ec2-9335-45a2a16f1901", "pinned": true, "tags": [ "string" ], "feed_memory": true, "started_at": "2019-08-24T14:15:22Z", "duration_ms": 0, "error": "string", "audio_available": true, "ready_at": "2019-08-24T14:15:22Z", "created_at": "2019-08-24T14:15:22Z", "updated_at": "2019-08-24T14:15:22Z" } ], "next_cursor": "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 <= 128application/json- body
title?stringlength <= 200source*string"desktop""phone""wear""web""vscode""tv""api"template?TranscriptTemplateDetermină forma analizei; auto lasă modelul să aleagă.
"auto""meeting""brainstorm""journal""interview""lecture"language_hint?string2 <= length <= 12"auto"tracks?array<>1 <= items <= 2folder_id?|uuidclient_id*stringId generat de client; o creare reluată după un crash întoarce aceeași transcriere.
8 <= length <= 64started_at*stringdate-timefeed_memory?booleanfalseTranscrierea (nouă sau cea existentă pentru acest client_id).
application/json- response
id*stringuuidclient_id*stringtitle*stringstatus*TranscriptStatusCiclu de viață: recording → uploading → queued → transcribing → analyzing → ready, sau failed.
"recording""uploading""queued""transcribing""analyzing""ready""failed"source*string"desktop""phone""wear""web""vscode""tv""api"template*TranscriptTemplateDetermină forma analizei; auto lasă modelul să aleagă.
"auto""meeting""brainstorm""journal""interview""lecture"language_hint*stringauto, ro, en sau alt tag BCP-47 transmis recunoașterii vorbirii.
language*|Limba detectată, după transcriere.
folder_id*|uuidpinned*booleantags*array<string>feed_memory*booleanOpțiune ca faptele extrase să alimenteze memoria codai.
started_at*stringdate-timeduration_ms*integer0 <= valueerror*string|nullaudio_available*booleanfalse după ce retenția de 30 de zile a șters audio-ul.
ready_at*|date-timecreated_at*stringdate-timeupdated_at*stringdate-timecurl -X POST 'https://ai.codai.ro/v1/transcripts' \ -H 'Content-Type: application/json' \ -d '{ "source": "desktop", "client_id": "stringst", "started_at": "2019-08-24T14:15:22Z"}'{ "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08", "client_id": "string", "title": "string", "status": "recording", "source": "desktop", "template": "auto", "language_hint": "string", "language": "string", "folder_id": "7695bac3-9397-4ec2-9335-45a2a16f1901", "pinned": true, "tags": [ "string" ], "feed_memory": true, "started_at": "2019-08-24T14:15:22Z", "duration_ms": 0, "error": "string", "audio_available": true, "ready_at": "2019-08-24T14:15:22Z", "created_at": "2019-08-24T14:15:22Z", "updated_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).
x-request-id?stringId de corelare ales de client; e returnat ca x-codai-trace-id și persistat pe rândul de usage.
length <= 128Alocare consumată și rămasă.
application/json- response
used_ms*integer0 <= valuecap_ms*integer0 <= valueremaining_ms*integer0 <= valueperiod_start*stringdate-timecurl -X GET 'https://ai.codai.ro/v1/transcripts/usage'{ "used_ms": 0, "cap_ms": 0, "remaining_ms": 0, "period_start": "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).
x-request-id?stringId de corelare ales de client; e returnat ca x-codai-trace-id și persistat pe rândul de usage.
length <= 128Stream SSE (text/event-stream, cache-control: no-cache).
response?stringtext/event-streamcurl -X GET 'https://ai.codai.ro/v1/transcripts/stream'"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).
q*stringInterogarea de căutare.
1 <= length <= 500mode?stringModul de căutare.
"hybrid""hybrid""text""semantic"limit?integerNumărul maxim de replici găsite (1–50).
1 <= value <= 5020x-request-id?stringId de corelare ales de client; e returnat ca x-codai-trace-id și persistat pe rândul de usage.
length <= 128Replici găsite și titluri găsite.
application/json- response
hits*array<>titles*array<>curl -X GET 'https://ai.codai.ro/v1/transcripts/search?q=string'{ "hits": [ { "transcript_id": "215670dc-b708-4c27-9393-0b9ca7d8935d", "title": "string", "start_ms": 0, "end_ms": 0, "speaker": "string", "snippet": "string" } ], "titles": [ { "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08", "title": "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 <= 128application/json- body
question*string3 <= length <= 2000transcript_ids?array<>Limitează căutarea la aceste transcrieri.
items <= 50Răspunsul și sursele lui numerotate.
application/json- response
answer*stringsources*array<>curl -X POST 'https://ai.codai.ro/v1/transcripts/ask' \ -H 'Content-Type: application/json' \ -d '{ "question": "string"}'{ "answer": "string", "sources": [ { "n": 1, "transcript_id": "215670dc-b708-4c27-9393-0b9ca7d8935d", "title": "string", "start_ms": 0, "end_ms": 0, "text": "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).
id*stringId-ul transcrierii (uuid). Un id străin sau malformat primește 404.
uuidx-request-id?stringId de corelare ales de client; e returnat ca x-codai-trace-id și persistat pe rândul de usage.
length <= 128Detaliul transcrierii.
application/json- response
id*stringuuidclient_id*stringtitle*stringstatus*TranscriptStatusCiclu de viață: recording → uploading → queued → transcribing → analyzing → ready, sau failed.
"recording""uploading""queued""transcribing""analyzing""ready""failed"source*string"desktop""phone""wear""web""vscode""tv""api"template*TranscriptTemplateDetermină forma analizei; auto lasă modelul să aleagă.
"auto""meeting""brainstorm""journal""interview""lecture"language_hint*stringauto, ro, en sau alt tag BCP-47 transmis recunoașterii vorbirii.
language*|Limba detectată, după transcriere.
folder_id*|uuidpinned*booleantags*array<string>feed_memory*booleanOpțiune ca faptele extrase să alimenteze memoria codai.
started_at*stringdate-timeduration_ms*integer0 <= valueerror*string|nullaudio_available*booleanfalse după ce retenția de 30 de zile a șters audio-ul.
ready_at*|date-timecreated_at*stringdate-timeupdated_at*stringdate-timelive_preview*|Textul live de pe dispozitiv, păstrat ca rezervă până sosește transcrierea finală.
processing*|Lucrarea de fundal în așteptare, sau null când nu există. Cât timp o lucrare se reîncearcă, status rămâne transcribing / analyzing; last_error și next_attempt_at spun de ce și când rulează din nou. După max_attempts transcrierea devine failed.
tracks*array<>speakers*array<>utterances*array<>bookmarks*array<>insights*|nullcurl -X GET 'https://ai.codai.ro/v1/transcripts/497f6eca-6276-4993-bfeb-53cbbbba6f08'{ "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08", "client_id": "string", "title": "string", "status": "recording", "source": "desktop", "template": "auto", "language_hint": "string", "language": "string", "folder_id": "7695bac3-9397-4ec2-9335-45a2a16f1901", "pinned": true, "tags": [ "string" ], "feed_memory": true, "started_at": "2019-08-24T14:15:22Z", "duration_ms": 0, "error": "string", "audio_available": true, "ready_at": "2019-08-24T14:15:22Z", "created_at": "2019-08-24T14:15:22Z", "updated_at": "2019-08-24T14:15:22Z", "live_preview": "string", "processing": { "kind": "transcribe", "attempts": 0, "max_attempts": 1, "last_error": "string", "next_attempt_at": "2019-08-24T14:15:22Z" }, "tracks": [ { "kind": "mic", "bytes": 0 } ], "speakers": [ { "label": "string", "name": "string", "is_owner": true, "talk_ms": 0 } ], "utterances": [ { "seq": 0, "speaker": "string", "start_ms": 0, "end_ms": 0, "text": "string", "language": "string", "words": [ { "w": "string", "s": 0, "e": 0, "c": 0 } ], "edited": true } ], "bookmarks": [ { "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08", "at_ms": 0, "label": "string" } ], "insights": { "version": 0, "model": "string", "created_at": "2019-08-24T14:15:22Z", "accepted_prompts": { "property1": "497f6eca-6276-4993-bfeb-53cbbbba6f08", "property2": "497f6eca-6276-4993-bfeb-53cbbbba6f08" }, "title": "string", "summary": "string", "template": "auto", "language": "string", "keyPoints": [ { "text": "string", "cite": { "startMs": 0, "endMs": 0 } } ], "actions": [ { "text": "string", "owner": "string", "due": "string", "cite": { "startMs": 0, "endMs": 0 } } ], "decisions": [ { "text": "string", "cite": { "startMs": 0, "endMs": 0 } } ], "openQuestions": [ { "text": "string", "cite": { "startMs": 0, "endMs": 0 } } ], "tags": [ "string" ], "project": "string", "prompts": [ { "title": "string", "prompt": "string", "repo": "string", "cite": { "startMs": 0, "endMs": 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*stringId-ul transcrierii (uuid). Un id străin sau malformat primește 404.
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
1 <= propertiestitle?string1 <= length <= 200folder_id?|uuidpinned?booleantags?array<>items <= 30template?TranscriptTemplateDetermină forma analizei; auto lasă modelul să aleagă.
"auto""meeting""brainstorm""journal""interview""lecture"feed_memory?booleanTranscrierea actualizată.
application/json- response
id*stringuuidclient_id*stringtitle*stringstatus*TranscriptStatusCiclu de viață: recording → uploading → queued → transcribing → analyzing → ready, sau failed.
"recording""uploading""queued""transcribing""analyzing""ready""failed"source*string"desktop""phone""wear""web""vscode""tv""api"template*TranscriptTemplateDetermină forma analizei; auto lasă modelul să aleagă.
"auto""meeting""brainstorm""journal""interview""lecture"language_hint*stringauto, ro, en sau alt tag BCP-47 transmis recunoașterii vorbirii.
language*|Limba detectată, după transcriere.
folder_id*|uuidpinned*booleantags*array<string>feed_memory*booleanOpțiune ca faptele extrase să alimenteze memoria codai.
started_at*stringdate-timeduration_ms*integer0 <= valueerror*string|nullaudio_available*booleanfalse după ce retenția de 30 de zile a șters audio-ul.
ready_at*|date-timecreated_at*stringdate-timeupdated_at*stringdate-timecurl -X PATCH 'https://ai.codai.ro/v1/transcripts/497f6eca-6276-4993-bfeb-53cbbbba6f08' \ -H 'Content-Type: application/json' \ -d '{}'{ "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08", "client_id": "string", "title": "string", "status": "recording", "source": "desktop", "template": "auto", "language_hint": "string", "language": "string", "folder_id": "7695bac3-9397-4ec2-9335-45a2a16f1901", "pinned": true, "tags": [ "string" ], "feed_memory": true, "started_at": "2019-08-24T14:15:22Z", "duration_ms": 0, "error": "string", "audio_available": true, "ready_at": "2019-08-24T14:15:22Z", "created_at": "2019-08-24T14:15:22Z", "updated_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*stringId-ul transcrierii (uuid). Un id străin sau malformat primește 404.
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Șters.
curl -X DELETE 'https://ai.codai.ro/v1/transcripts/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*stringId-ul transcrierii (uuid). Un id străin sau malformat primește 404.
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
duration_ms*integer1 <= value <= 10860000uploads*array<>1 <= items <= 2bookmarks?array<>items <= 500live_preview?stringlength <= 400000Deja finalizată; transcrierea așa cum este.
application/json- response
id*stringuuidclient_id*stringtitle*stringstatus*TranscriptStatusCiclu de viață: recording → uploading → queued → transcribing → analyzing → ready, sau failed.
"recording""uploading""queued""transcribing""analyzing""ready""failed"source*string"desktop""phone""wear""web""vscode""tv""api"template*TranscriptTemplateDetermină forma analizei; auto lasă modelul să aleagă.
"auto""meeting""brainstorm""journal""interview""lecture"language_hint*stringauto, ro, en sau alt tag BCP-47 transmis recunoașterii vorbirii.
language*|Limba detectată, după transcriere.
folder_id*|uuidpinned*booleantags*array<string>feed_memory*booleanOpțiune ca faptele extrase să alimenteze memoria codai.
started_at*stringdate-timeduration_ms*integer0 <= valueerror*string|nullaudio_available*booleanfalse după ce retenția de 30 de zile a șters audio-ul.
ready_at*|date-timecreated_at*stringdate-timeupdated_at*stringdate-timecurl -X POST 'https://ai.codai.ro/v1/transcripts/497f6eca-6276-4993-bfeb-53cbbbba6f08/finalize' \ -H 'Content-Type: application/json' \ -d '{ "duration_ms": 1, "uploads": [ { "track": "mic", "upload_id": "stringst" } ]}'{ "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08", "client_id": "string", "title": "string", "status": "recording", "source": "desktop", "template": "auto", "language_hint": "string", "language": "string", "folder_id": "7695bac3-9397-4ec2-9335-45a2a16f1901", "pinned": true, "tags": [ "string" ], "feed_memory": true, "started_at": "2019-08-24T14:15:22Z", "duration_ms": 0, "error": "string", "audio_available": true, "ready_at": "2019-08-24T14:15:22Z", "created_at": "2019-08-24T14:15:22Z", "updated_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*stringId-ul transcrierii (uuid). Un id străin sau malformat primește 404.
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În coadă pentru transcriere.
application/json- response
id*stringuuidclient_id*stringtitle*stringstatus*TranscriptStatusCiclu de viață: recording → uploading → queued → transcribing → analyzing → ready, sau failed.
"recording""uploading""queued""transcribing""analyzing""ready""failed"source*string"desktop""phone""wear""web""vscode""tv""api"template*TranscriptTemplateDetermină forma analizei; auto lasă modelul să aleagă.
"auto""meeting""brainstorm""journal""interview""lecture"language_hint*stringauto, ro, en sau alt tag BCP-47 transmis recunoașterii vorbirii.
language*|Limba detectată, după transcriere.
folder_id*|uuidpinned*booleantags*array<string>feed_memory*booleanOpțiune ca faptele extrase să alimenteze memoria codai.
started_at*stringdate-timeduration_ms*integer0 <= valueerror*string|nullaudio_available*booleanfalse după ce retenția de 30 de zile a șters audio-ul.
ready_at*|date-timecreated_at*stringdate-timeupdated_at*stringdate-timecurl -X POST 'https://ai.codai.ro/v1/transcripts/497f6eca-6276-4993-bfeb-53cbbbba6f08/retranscribe'{ "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08", "client_id": "string", "title": "string", "status": "recording", "source": "desktop", "template": "auto", "language_hint": "string", "language": "string", "folder_id": "7695bac3-9397-4ec2-9335-45a2a16f1901", "pinned": true, "tags": [ "string" ], "feed_memory": true, "started_at": "2019-08-24T14:15:22Z", "duration_ms": 0, "error": "string", "audio_available": true, "ready_at": "2019-08-24T14:15:22Z", "created_at": "2019-08-24T14:15:22Z", "updated_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*stringId-ul transcrierii (uuid). Un id străin sau malformat primește 404.
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În coadă pentru analiză.
application/json- response
id*stringuuidclient_id*stringtitle*stringstatus*TranscriptStatusCiclu de viață: recording → uploading → queued → transcribing → analyzing → ready, sau failed.
"recording""uploading""queued""transcribing""analyzing""ready""failed"source*string"desktop""phone""wear""web""vscode""tv""api"template*TranscriptTemplateDetermină forma analizei; auto lasă modelul să aleagă.
"auto""meeting""brainstorm""journal""interview""lecture"language_hint*stringauto, ro, en sau alt tag BCP-47 transmis recunoașterii vorbirii.
language*|Limba detectată, după transcriere.
folder_id*|uuidpinned*booleantags*array<string>feed_memory*booleanOpțiune ca faptele extrase să alimenteze memoria codai.
started_at*stringdate-timeduration_ms*integer0 <= valueerror*string|nullaudio_available*booleanfalse după ce retenția de 30 de zile a șters audio-ul.
ready_at*|date-timecreated_at*stringdate-timeupdated_at*stringdate-timecurl -X POST 'https://ai.codai.ro/v1/transcripts/497f6eca-6276-4993-bfeb-53cbbbba6f08/reanalyze'{ "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08", "client_id": "string", "title": "string", "status": "recording", "source": "desktop", "template": "auto", "language_hint": "string", "language": "string", "folder_id": "7695bac3-9397-4ec2-9335-45a2a16f1901", "pinned": true, "tags": [ "string" ], "feed_memory": true, "started_at": "2019-08-24T14:15:22Z", "duration_ms": 0, "error": "string", "audio_available": true, "ready_at": "2019-08-24T14:15:22Z", "created_at": "2019-08-24T14:15:22Z", "updated_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*stringId-ul transcrierii (uuid). Un id străin sau malformat primește 404.
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
finals?stringlength <= 4000partial?stringlength <= 1000level?number0 <= value <= 1device*string"phone""wear""desktop"elapsed_ms*integer0 <= valuepaused?booleanAcceptat (sau ignorat de limita de frecvență).
curl -X POST 'https://ai.codai.ro/v1/transcripts/497f6eca-6276-4993-bfeb-53cbbbba6f08/live' \ -H 'Content-Type: application/json' \ -d '{ "device": "phone", "elapsed_ms": 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*stringId-ul transcrierii (uuid). Un id străin sau malformat primește 404.
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
at_ms*integer0 <= value <= 10860000label?stringlength <= 120Semnul de carte.
application/json- response
id*stringuuidat_ms*integer0 <= valuelabel*string|nullcurl -X POST 'https://ai.codai.ro/v1/transcripts/497f6eca-6276-4993-bfeb-53cbbbba6f08/bookmarks' \ -H 'Content-Type: application/json' \ -d '{ "at_ms": 0}'{ "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08", "at_ms": 0, "label": "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).
id*stringId-ul transcrierii (uuid). Un id străin sau malformat primește 404.
uuidlabel*stringEticheta de diarizare a vorbitorului (de exemplu A).
length <= 40x-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
name*string1 <= length <= 80is_owner?booleanVorbitorul redenumit.
application/json- response
label*stringname*stringis_owner*booleancurl -X PATCH 'https://ai.codai.ro/v1/transcripts/497f6eca-6276-4993-bfeb-53cbbbba6f08/speakers/string' \ -H 'Content-Type: application/json' \ -d '{ "name": "string"}'{ "label": "string", "name": "string", "is_owner": 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 transcrierii (uuid). Un id străin sau malformat primește 404.
uuidseq*integerPoziția replicii în transcriere (de la 0).
0 <= valuex-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
text*string1 <= length <= 20000Replica corectată.
application/json- response
seq*integertext*stringedited*booleancurl -X PATCH 'https://ai.codai.ro/v1/transcripts/497f6eca-6276-4993-bfeb-53cbbbba6f08/utterances/0' \ -H 'Content-Type: application/json' \ -d '{ "text": "string"}'{ "seq": 0, "text": "string", "edited": 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 transcrierii (uuid). Un id străin sau malformat primește 404.
uuidx-request-id?stringId de corelare ales de client; e returnat ca x-codai-trace-id și persistat pe rândul de usage.
length <= 128URL-uri semnate (cache-control: private, no-store).
application/json- response
tracks*array<>expires_in?integerSecundele cât URL-urile rămân valide; lipsește când tracks este gol.
curl -X GET 'https://ai.codai.ro/v1/transcripts/497f6eca-6276-4993-bfeb-53cbbbba6f08/audio'{ "tracks": [ { "kind": "mic", "mime": "string", "url": "http://example.com" } ], "expires_in": 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*stringId-ul transcrierii (uuid). Un id străin sau malformat primește 404.
uuidformat?stringFormatul fișierului.
"md""md""txt""srt""vtt""json""pdf""docx"x-request-id?stringId de corelare ales de client; e returnat ca x-codai-trace-id și persistat pe rândul de usage.
length <= 128Fișierul exportat (text UTF-8, sau binar pentru pdf / docx).
response?stringcurl -X GET 'https://ai.codai.ro/v1/transcripts/497f6eca-6276-4993-bfeb-53cbbbba6f08/export'{ "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08", "client_id": "string", "title": "string", "status": "recording", "source": "desktop", "template": "auto", "language_hint": "string", "language": "string", "folder_id": "7695bac3-9397-4ec2-9335-45a2a16f1901", "pinned": true, "tags": [ "string" ], "feed_memory": true, "started_at": "2019-08-24T14:15:22Z", "duration_ms": 0, "error": "string", "audio_available": true, "ready_at": "2019-08-24T14:15:22Z", "created_at": "2019-08-24T14:15:22Z", "updated_at": "2019-08-24T14:15:22Z", "live_preview": "string", "processing": { "kind": "transcribe", "attempts": 0, "max_attempts": 1, "last_error": "string", "next_attempt_at": "2019-08-24T14:15:22Z" }, "tracks": [ { "kind": "mic", "bytes": 0 } ], "speakers": [ { "label": "string", "name": "string", "is_owner": true, "talk_ms": 0 } ], "utterances": [ { "seq": 0, "speaker": "string", "start_ms": 0, "end_ms": 0, "text": "string", "language": "string", "words": [ { "w": "string", "s": 0, "e": 0, "c": 0 } ], "edited": true } ], "bookmarks": [ { "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08", "at_ms": 0, "label": "string" } ], "insights": { "version": 0, "model": "string", "created_at": "2019-08-24T14:15:22Z", "accepted_prompts": { "property1": "497f6eca-6276-4993-bfeb-53cbbbba6f08", "property2": "497f6eca-6276-4993-bfeb-53cbbbba6f08" }, "title": "string", "summary": "string", "template": "auto", "language": "string", "keyPoints": [ { "text": "string", "cite": { "startMs": 0, "endMs": 0 } } ], "actions": [ { "text": "string", "owner": "string", "due": "string", "cite": { "startMs": 0, "endMs": 0 } } ], "decisions": [ { "text": "string", "cite": { "startMs": 0, "endMs": 0 } } ], "openQuestions": [ { "text": "string", "cite": { "startMs": 0, "endMs": 0 } } ], "tags": [ "string" ], "project": "string", "prompts": [ { "title": "string", "prompt": "string", "repo": "string", "cite": { "startMs": 0, "endMs": 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*stringId-ul transcrierii (uuid). Un id străin sau malformat primește 404.
uuidindex*integerIndex în insights.prompts (0–20).
0 <= value <= 20x-request-id?stringId de corelare ales de client; e returnat ca x-codai-trace-id și persistat pe rândul de usage.
length <= 128Deja acceptat; promptul existent.
application/json- response
prompt_id*stringuuidcreated*booleancurl -X POST 'https://ai.codai.ro/v1/transcripts/497f6eca-6276-4993-bfeb-53cbbbba6f08/prompts/0/accept'{ "prompt_id": "24783230-27c2-455c-9de9-95bbdbb78c3d", "created": 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 transcrierii (uuid). Un id străin sau malformat primește 404.
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
expiresInDays?integerDurata linkului în zile; omite-l pentru un link care nu expiră.
1 <= value <= 365Link creat; păstrează tokenul/url-ul, nu poate fi recuperat.
application/json- response
id*stringuuidtoken*string32 de octeți aleatori, base64url. Afișat doar în acest răspuns.
url*stringPagina publică doar pentru citire, https://hub.codai.ro/t/<token>.
uriexpiresAt*|date-timecurl -X POST 'https://ai.codai.ro/v1/transcripts/497f6eca-6276-4993-bfeb-53cbbbba6f08/shares' \ -H 'Content-Type: application/json' \ -d '{}'{ "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08", "token": "string", "url": "http://example.com", "expiresAt": "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*stringId-ul transcrierii (uuid). Un id străin sau malformat primește 404.
uuidx-request-id?stringId de corelare ales de client; e returnat ca x-codai-trace-id și persistat pe rândul de usage.
length <= 128Linkurile active.
application/json- response
data*array<>curl -X GET 'https://ai.codai.ro/v1/transcripts/497f6eca-6276-4993-bfeb-53cbbbba6f08/shares'{ "data": [ { "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08", "url": null, "createdAt": "2019-08-24T14:15:22Z", "expiresAt": "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*stringId-ul transcrierii (uuid). Un id străin sau malformat primește 404.
uuidx-request-id?stringId de corelare ales de client; e returnat ca x-codai-trace-id și persistat pe rândul de usage.
length <= 128Revocat.
curl -X DELETE 'https://ai.codai.ro/v1/transcripts/497f6eca-6276-4993-bfeb-53cbbbba6f08/shares/497f6eca-6276-4993-bfeb-53cbbbba6f08'token*stringTokenul de partajare (43 de caractere base64url).
^[A-Za-z0-9_-]{43}$Transcrierea partajată.
application/json- response
title*stringcreatedAt*stringdate-timedurationMs*integer0 <= valuespeakers*array<>utterances*array<>insights*null|curl -X GET 'https://ai.codai.ro/v1/public/transcripts/string'{ "title": "string", "createdAt": "2019-08-24T14:15:22Z", "durationMs": 0, "speakers": [ { "label": "string", "name": "string" } ], "utterances": [ { "speaker": "string", "startMs": 0, "endMs": 0, "text": "string" } ], "insights": null}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 <= 128Dosarele.
application/json- response
folders*array<>curl -X GET 'https://ai.codai.ro/v1/transcript-folders'{ "folders": [ { "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08", "name": "string", "color": "string", "position": 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).
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
name*string1 <= length <= 80color?string^[a-z]{3,16}$Dosarul.
application/json- response
id*stringuuidname*stringcolor*string|nullposition*integercurl -X POST 'https://ai.codai.ro/v1/transcript-folders' \ -H 'Content-Type: application/json' \ -d '{ "name": "string"}'{ "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08", "name": "string", "color": "string", "position": 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*stringId-ul dosarului (uuid). Un id malformat primește 404.
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
name?string1 <= length <= 80color?string^[a-z]{3,16}$position?integer0 <= value <= 10000Dosarul actualizat.
application/json- response
id*stringuuidname*stringcolor*string|nullposition*integercurl -X PATCH 'https://ai.codai.ro/v1/transcript-folders/497f6eca-6276-4993-bfeb-53cbbbba6f08' \ -H 'Content-Type: application/json' \ -d '{}'{ "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08", "name": "string", "color": "string", "position": 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*stringId-ul dosarului (uuid). Un id malformat primește 404.
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Șters.
curl -X DELETE 'https://ai.codai.ro/v1/transcript-folders/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).
x-request-id?stringId de corelare ales de client; e returnat ca x-codai-trace-id și persistat pe rândul de usage.
length <= 128Termenii tăi.
application/json- response
terms*array<>items <= 1000curl -X GET 'https://ai.codai.ro/v1/transcript-vocabulary'{ "terms": [ "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 <= 128application/json- body
terms*array<>items <= 1000Termenii stocați.
application/json- response
terms*array<>items <= 1000curl -X PUT 'https://ai.codai.ro/v1/transcript-vocabulary' \ -H 'Content-Type: application/json' \ -d '{ "terms": [ "string" ]}'{ "terms": [ "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).
tus-resumable*"1.0.0"Versiunea protocolului.
"1.0.0"upload-length?integerDimensiunea totală în octeți, când este cunoscută.
0 <= value <= 209715200upload-defer-length?11 când dimensiunea nu este încă cunoscută.
1upload-metadata?stringPerechi cheie valoare-base64 separate prin virgulă (transcript, track, durationMs; sau purpose=list cu mime).
Upload creat.
curl -X POST 'https://ai.codai.ro/v1/uploads' \ -H 'tus-resumable: 1.0.0'Capabilitățile, în antetele răspunsului.
curl -X OPTIONS 'https://ai.codai.ro/v1/uploads'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 upload-ului tus din Location (legat de contul tău). Un id străin sau malformat primește 404.
tus-resumable*"1.0.0"Versiunea protocolului.
"1.0.0"Offset-ul curent (cache-control: no-store), fără corp.
curl -X GET 'https://ai.codai.ro/v1/uploads/string' \ -H 'tus-resumable: 1.0.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*stringId-ul upload-ului tus din Location (legat de contul tău). Un id străin sau malformat primește 404.
tus-resumable*"1.0.0"Versiunea protocolului.
"1.0.0"upload-offset*integerOffset-ul de la care începe bucata.
0 <= valuebody*fileapplication/offset+octet-streambinarylength <= 8388608Bucată stocată.
curl -X PATCH 'https://ai.codai.ro/v1/uploads/string' \ -H 'tus-resumable: 1.0.0' \ -H 'upload-offset: 0' \ -H 'Content-Type: application/offset+octet-stream' \ -d 'string'Planificator
Sarcini agent, comenzi terminal, webhook-uri și lanțuri programate, rulate pe oricare PC, telefon, ceas sau VM cloud al tău — cron sau cuvinte, aprobări, reîncercări, failover și stare live.
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.