codai docs
Referință APIGateway

Embeddings și audio

Embeddings vectoriale, speech-to-text, text-to-speech și tokenurile efemere cerute de WebSocket-ul realtime.

Embeddings și audio urmează formele OpenAI. POST /v1/tokens emite tokenul de scurtă durată pe care un browser trebuie să-l trimită ca ?key= când deschide wss://ai.codai.ro/v1/realtime — o cheie codai_ brută în query string e refuzată (cod de închidere 4401). Vezi ghidul embeddings & audio pentru exemple complete.

POST
/v1/embeddings

Autorizare

bearerAuth
headerAutorizareBearer <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).

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-session-id?string

Grupează cererile unei conversații pentru chitanțe, stickiness și prompt caching.

Lungimelength <= 128

Corpul cererii

application/json
  1. body

Body de embeddings compatibil OpenAI. Câmpurile necunoscute sunt acceptate și ignorate.

model?string

Alias sau id concret de model de embedding. Implicit codai-embed (modelul implicit al platformei voyage-code-3).

Implicit"codai-embed"
input*|array<string>

Un string sau un array nevid de string-uri. Array-urile de id-uri de tokeni nu sunt suportate.

dimensions?integer

Limită opțională a dimensionalității de ieșire. Respectată de upstream-urile OpenAI-style, ignorată de celelalte.

Interval1 <= value
user?string

Câmp de tracking OpenAI; logat, niciodată trimis upstream.

encoding_format?"float"

Doar float e suportat; base64 e respins cu 400.

Valoare din"float"
[key: string]?any

Corpul răspunsului

Vectorii de embedding în forma de listă OpenAI.

application/json
  1. response
object*"list"
Valoare din"list"
data*array<>
model*string

Modelul upstream care a produs vectorii (coincide cu x-codai-routed-to).

usage*
Exemplu de cerere
curl -X POST 'https://ai.codai.ro/v1/embeddings' \  -H 'Content-Type: application/json' \  -d '{  "input": "function add(a, b) { return a + b }"}'
Exemplu de răspuns
{  "object": "list",  "data": [    {      "object": "embedding",      "index": 0,      "embedding": [        0      ]    }  ],  "model": "voyage-code-3",  "usage": {    "prompt_tokens": 0,    "total_tokens": 0  }}
POST
/v1/audio/transcriptions

Autorizare

bearerAuth
headerAutorizareBearer <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).

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-session-id?string

Grupează cererile unei conversații pentru chitanțe, stickiness și prompt caching.

Lungimelength <= 128

Corpul cererii

multipart/form-data
  1. body

Câmpuri de formular multipart. Doar câmpurile listate sunt trimise mai departe; orice altceva e ignorat.

file*file

Fișier audio, max 25 MB. Numele original al fișierului e trimis mai departe (audio.webm când lipsește).

Formatbinary
model?string

codai-transcribe, whisper-1 și whisper merg la deployment-ul Whisper; gpt-4o-mini-transcribe la al lui propriu.

Implicit"codai-transcribe"
Valoare din"codai-transcribe""whisper-1""whisper""gpt-4o-mini-transcribe"
language?string

Indiciu de limbă ISO-639-1, trimis mai departe neschimbat.

prompt?string

Text opțional care ghidează stilul sau ortografia, trimis mai departe neschimbat.

response_format?string

Trimis mai departe neschimbat. Folosește un format JSON (json, verbose_json); text/srt/vtt stric parsarea JSON a gateway-ului.

Implicit"json"
temperature?string

Temperatura de eșantionare ca câmp de formular string (0–1), trimisă mai departe neschimbată.

Corpul răspunsului

Transcrierea, așa cum a returnat-o deployment-ul upstream.

application/json
  1. response

JSON-ul upstream e returnat neschimbat. Cu verbose_json apar câmpuri suplimentare (language, duration, segments, …) lângă text.

text?string

Transcrierea.

[key: string]?any
Exemplu de cerere
curl -X POST 'https://ai.codai.ro/v1/audio/transcriptions' \  -F 'file=string'
Exemplu de răspuns
{  "text": "Bună, vreau să programez o întâlnire mâine la zece."}
POST
/v1/audio/speech

Autorizare

bearerAuth
headerAutorizareBearer <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).

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-session-id?string

Grupează cererile unei conversații pentru chitanțe, stickiness și prompt caching.

Lungimelength <= 128

Corpul cererii

application/json
  1. body
model?string

codai-tts/tts-1/tts = voce neutră; codai-tts-expressive/gpt-4o-mini-tts = familia expresivă care respectă instructions; codai-speech = Chirp 3 HD (română nativă, rapid); codai-speech-expressive = Gemini 2.5 Flash TTS (română nativă, respectă instructions).

Implicit"codai-tts"
Valoare din"codai-tts""tts-1""tts""codai-tts-expressive""gpt-4o-mini-tts""codai-speech""codai-speech-expressive"
input*string

Textul de sintetizat. Peste 4096 de caractere e respins cu 400.

Lungime1 <= length <= 4096
voice?string

Numele vocii, nevalidat. Implicit alloy (neutră), marin (expresivă), Aoede (codai-speech) sau Kore (codai-speech-expressive). Familia expresivă acceptă și ash, ballad, coral, echo, fable, onyx, nova, sage, shimmer, verse, cedar. Modelele codai-speech acceptă cele 30 de nume scurte Chirp 3 HD (Achernar … Zubenelgenubi) sau un nume complet de voce Google.

response_format?string

Containerul audio, trimis mai departe fără validare.

Implicit"mp3"
speed?number

Multiplicator de viteză de redare, trimis mai departe când e truthy (deci 0 e ignorat).

instructions?string

Indiciu de stil de rostire (ex. „calm, cald, rar”). Respectat doar de codai-tts-expressive/gpt-4o-mini-tts și codai-speech-expressive; trunchiat la 1000 de caractere.

Lungimelength <= 1000
language?string

Limba BCP-47 a textului. Alege localizarea vocii pentru modelele codai-speech și ghidează transcrierea pentru marcajele de timp.

Implicit"ro-RO"
timestamps?boolean

Întoarce marcaje de timp per cuvânt în words. Comută răspunsul pe SpeechJson.

Implicitfalse
store?boolean

Stochează audio-ul ca asset studio (tip speech, cu words în metadate când e setat timestamps) și îl întoarce ca asset în loc de b64_json. Comută răspunsul pe SpeechJson.

Implicitfalse

Corpul răspunsului

Audio binar în formatul cerut (media type-ul e cel returnat de upstream, audio/mpeg când nu a trimis niciunul) sau SpeechJson când timestamps ori store e true.

  1. response

Întors de POST /v1/audio/speech când timestamps sau store e true.

object*"audio.speech"
Valoare din"audio.speech"
model*string

Id-ul public al modelului care a servit cererea.

voice*string
language*string
mime_type*string
duration_seconds*number

Durata audio-ului, în secunde.

b64_json?string

Audio în base64. Prezent când store nu e true.

asset?

Un asset codai Studio. Îl întorc /v1/assets și, cu response_format: "url", câmpul data al endpoint-urilor de imagine, muzică și video.

words?array<>|

Marcaje de timp per cuvânt; prezente doar când timestamps a fost true, null când transcrierea a eșuat.

cost_micro_usd*string

Costul upstream al cererii, în micro-USD, ca șir zecimal.

Exemplu de cerere
curl -X POST 'https://ai.codai.ro/v1/audio/speech' \  -H 'Content-Type: application/json' \  -d '{  "input": "Bună ziua! Cu ce te pot ajuta astăzi?"}'
Exemplu de răspuns
{  "object": "audio.speech",  "model": "codai-speech",  "voice": "Aoede",  "language": "ro-RO",  "mime_type": "audio/mpeg",  "duration_seconds": 0,  "b64_json": "string",  "asset": {    "asset_id": "b4695157-0d1d-4da0-8f9e-5c53149389e4",    "kind": "music",    "status": "pending",    "model": "lyria-002",    "url": "http://example.com",    "mime_type": "audio/wav",    "bytes": 0,    "duration_seconds": 0,    "width": 0,    "height": 0,    "created_at": "2019-08-24T14:15:22Z",    "expires_at": "2019-08-24T14:15:22Z"  },  "words": [    {      "word": "Bună",      "start": 0,      "end": 0    }  ],  "cost_micro_usd": "480"}
POST
/v1/tokens

Autorizare

bearerAuth
headerAutorizareBearer <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).

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
  1. body
scope*string

Suprafața la care poate ajunge tokenul. Doar realtime, audio, embeddings și live (realtime + audio) sunt acceptate; orice altceva e 400.

Lungime1 <= length <= 32
ttl_seconds?integer

Durata de viață în secunde. Valorile din afara 60–3600 pică validarea.

Interval60 <= value <= 3600
Implicit600

Corpul răspunsului

Tokenul emis, expirarea lui și scope-ul de care a fost legat.

application/json
  1. response
token*string

Credențial bearer de forma codai_eph_v1.<payload>.<signature>. Îl trimiți ca Authorization: Bearer sau ca ?key= pe /v1/realtime.

expires_at*string

Expirarea ca timestamp ISO-8601.

Formatdate-time
scope*string
Valoare din"realtime""audio""embeddings""live"
Exemplu de cerere
curl -X POST 'https://ai.codai.ro/v1/tokens' \  -H 'Content-Type: application/json' \  -d '{  "scope": "realtime"}'
Exemplu de răspuns
{  "token": "codai_eph_v1.eyJraWQiOiIuLi4ifQ.c2lnbmF0dXJl",  "expires_at": "2026-09-23T10:15:00.000Z",  "scope": "realtime"}

Ultima actualizare: