aethexDocs

API Reference

Conversations

Retrieve conversation history, transcripts, audio recordings, and per-conversation feedback.

Base URL
https://api.aethexai.com/api/v1
Endpoints
8
Scopes
conversations:read
GET/conversations

Paginate through all conversations for your account.

List Conversations

Returns a paginated list of conversations ordered newest first. Each item includes status, turn count, total duration, and links to transcript and audio if available.

Path & Query

2
  • offsetintegeroptional

    Number of conversations to skip (default: 0).

  • limitintegeroptional

    Maximum number to return (default: 50, max: 100).

Errors

3
401Unauthorized

Missing or invalid API key.

Add X-API-Key: YOUR_KEY to your request headers.

403Forbidden

Your API key does not have the conversations:read scope.

Issue a new key with the conversations:read scope.

422Unprocessable Entity

offset or limit is not a valid integer or is out of range.

Use a non-negative integer for offset and a value between 1 and 100 for limit.

GET/conversations/:conversation_id

Fetch a single conversation record by ID.

Get Conversation

Returns the full conversation record including status, turn count, total duration, and whether a transcript and recording are available.

Path & Query

1
  • conversation_idstring (uuid)required

    UUID of the conversation.

Errors

4
401Unauthorized

Missing or invalid API key.

Add X-API-Key: YOUR_KEY to your request headers.

403Forbidden

Your API key does not have the conversations:read scope.

Issue a new key with the conversations:read scope.

404Not Found

No conversation with this ID exists.

Confirm the UUID from GET /conversations.

422Unprocessable Entity

conversation_id is not a valid UUID.

Pass a valid UUID from GET /conversations.

GET/conversations/:conversation_id/transcript

Retrieve the full turn-by-turn transcript for a conversation.

Get Transcript

Returns an ordered array of turns with speaker role (user, assistant, or human_agent for the person a conference transfer reached), text, latency metrics, and any tool calls made by the agent. Caller turns also carry text_raw, the speech recogniser's own output, when post-call correction changed the text. Agent turns the caller cut short carry interrupted_after_ms, how long the agent spoke before being interrupted, and estimated_text_spoken, the part of the sentence that fits in that time. All three are null otherwise. Every turn also carries start_ms, the offset in milliseconds from the first sample of the call recording to the moment that turn became audible. Hand it to a player alongside the audio from GET /conversations/{id}/audio and the turn's own words start there. It is published per turn: an individual turn reports null when its onset was not measured (a reply that never played, a caller turn with no detected onset, or a keypad entry) while the turns around it keep theirs, and every caller turn reports null when part of the caller's audio never reached us, while the agent's turns keep theirs. null on every turn of a call means one of three things: the offsets contradicted each other or the recording, the call's media reconnected mid-way, or the call predates this field.

Path & Query

1
  • conversation_idstring (uuid)required

    UUID of the conversation.

Errors

4
401Unauthorized

Missing or invalid API key.

Add X-API-Key: YOUR_KEY to your request headers.

403Forbidden

Your API key does not have the conversations:read scope.

Issue a new key with the conversations:read scope.

404Not Found

No conversation with this ID exists.

Confirm the UUID from GET /conversations.

422Unprocessable Entity

conversation_id is not a valid UUID.

Pass a valid UUID from GET /conversations.

GET/conversations/:conversation_id/audio

Obtain a short-lived signed URL for the conversation recording.

Get Audio URL

Issues a signed URL (valid 60 minutes) for downloading the WAV recording. Use this URL with a standard HTTP client; it does not require the X-API-Key header.

Path & Query

1
  • conversation_idstring (uuid)required

    UUID of the conversation.

Errors

4
401Unauthorized

Missing or invalid API key.

Add X-API-Key: YOUR_KEY to your request headers.

403Forbidden

Your API key does not have the conversations:read scope.

Issue a new key with the conversations:read scope.

404Not Found

No recording exists for this conversation, or the recording is empty or still finalizing. The endpoint returns 404 in all of these cases — it never issues a URL for an empty recording.

Check has_recording: true on the conversation before requesting the audio URL.

422Unprocessable Entity

conversation_id is not a valid UUID.

Pass a valid UUID from GET /conversations.

GET/conversations/:conversation_id/audio.wav

Stream or download the WAV recording directly.

Stream Audio

Returns the raw WAV file. Supports Range headers for partial downloads. Authenticate with the token query parameter (value from GET .../audio) or the X-API-Key header.

Path & Query

2
  • conversation_idstring (uuid)required

    UUID of the conversation.

  • tokenstringoptional

    Signed token from GET /conversations/:conversation_id/audio; if omitted the request must carry X-API-Key.

Errors

5
401Unauthorized

No valid API key or signed token was provided.

Add X-API-Key: YOUR_KEY or a valid token query parameter.

403Forbidden

Authenticated but not allowed to access this recording.

Issue a new key with the conversations:read scope.

404Not Found

No recording exists for this conversation, or the recording is empty or still finalizing. The endpoint returns 404 in all of these cases — it never streams a zero-length WAV.

Check has_recording: true on the conversation before streaming audio.

416Range Not Satisfiable

The requested Range exceeds the file size.

Check Content-Length first or omit the Range header.

502Bad Gateway

The storage backend returned an error while streaming the file.

Retry after a brief delay; if the error persists, contact support.

POST/conversations/:conversation_id/audio/revoke

Invalidate a previously issued signed audio URL.

Revoke Audio Token

Immediately revokes a signed token so the URL can no longer be used to stream the recording. Useful when a URL is accidentally exposed.

Path & Query

1
  • conversation_idstring (uuid)required

    UUID of the conversation.

Request body

1
  • tokenstringrequired

    Signed token string returned by GET /conversations/:conversation_id/audio.

Errors

4
401Unauthorized

Missing or invalid API key.

Add X-API-Key: YOUR_KEY to your request headers.

403Forbidden

Authenticated but not allowed to access this recording.

Issue a new key with the conversations:read scope.

404Not Found

No conversation with this ID exists.

Confirm the UUID from GET /conversations.

422Unprocessable Entity

token field is missing or empty.

Supply the token string from GET .../audio in the request body.

POST/conversations/:conversation_id/feedback

Record a star rating and optional comment for a conversation.

Submit Feedback

Attaches a 1–5 star rating and optional free-text comment to a conversation. Feedback is stored server-side and available in your analytics dashboard.

Path & Query

1
  • conversation_idstring (uuid)required

    UUID of the conversation.

Request body

2
  • ratingintegerrequired

    Integer rating from 1 (worst) to 5 (best).

  • commentstringoptional

    Optional free-text comment (max 1000 characters).

Errors

4
401Unauthorized

Missing or invalid API key.

Add X-API-Key: YOUR_KEY to your request headers.

403Forbidden

Your API key does not have the conversations:read scope.

Issue a new key with the conversations:read scope.

404Not Found

No conversation with this ID exists.

Confirm the UUID from GET /conversations.

422Unprocessable Entity

rating is missing, not an integer, or outside the 1–5 range.

Pass rating as an integer between 1 and 5.