Update a call
Update mutable fields on an existing call observation: label, tag,
customer_number, call_end_reason, and metadata.
Everything else (call_identifier, agent_id, client_id,
recording_url, transcript, …) is fixed at ingestion. Those fields
are silently ignored if you send them — the request still succeeds.
Authentication
API key from RubricHQ Settings → API Keys. Send it as: Authorization: Bearer <YOUR_API_KEY>.
Path parameters
Your call_identifier, or RubricHQ’s internal integer call ID.
Query parameters
Optional. RubricHQ client (workspace) ID. Defaults to the workspace your API key belongs to; pass it only to target another workspace you can access.
Optional. The call is already identified by its ID within your workspace; pass agent_id only to require that it belongs to that agent (otherwise 404).
Request
Free-text label for this call (visible in the dashboard).
Short tag for grouping/filtering calls.
How the call ended (e.g. Completed, Dropped, Transferred).
Merged into the existing metadata (not a full replace). Keys you send are
added or overwritten; keys you omit are preserved. Send a key with a null
value to delete it.
Response
voice when the call has a recording; text for a transcript-only call.
pending— analysis queuedprocessing— analysis in progresscomputed— the audio pass is done; transcript and custom metrics may still be scoring. Not final — keep polling.completed— every metric has a result (final)failed— analysis encountered an error (final)skipped— not analyzed, e.g. the workspace is out of credits (final)
Stop polling on completed, failed, or skipped.
pending— the recording has not been transcribed yetprocessing— transcription in progresscompleted— a transcript is available (generated from the recording, or the one you provided on a transcript-only call)failed— transcription failed
Presigned URL to the stored recording (valid for a limited time —
fetch the call again for a fresh one). null until RubricHQ has
finished storing the recording, and always null for
transcript-only calls.
Only on the POST /calls response, and only when it is not empty:
the IDs from your metric_ids that could not be scored on this
call and were skipped.