VocalDocscontracts 1.65.0

Read a job

GET /v1/jobs/{job_id}

PropertyValue
Operationget_job
GroupJobs
Scopejobs:read
Route classread
IdempotencyNo Idempotency-Key
AuditNot audited: A job record holds ids, counts and codes, never content.
Released in1.52.0
Phase 0 hostServed (the hosted api pins 1.65.0)

Answers one job with its status, progress and result (1.52.0). The api also requires the permission JOB_TYPE_PERMISSIONS names for the job type (webhooks:write for webhook.replay); a job the caller lacks it for is not_found to it and absent from its list.

Request

Set VOCAL_API to the base URL of your API and VOCAL_API_KEY to an API key with the jobs:read scope (Authentication and keys). Replace each placeholder, such as agt_... or <name>, with your own value.

curl "$VOCAL_API/v1/jobs/job_..." \
  -H "Authorization: Bearer $VOCAL_API_KEY"

Parameters

NameInTypeRequiredDescription
job_idpathJobIdyesThe id of an asynchronous job: job_ and the row's UUIDv7 in 26 Crockford base32 characters. Opaque and safe to log.

Responses

StatusContent typeShapeError codes
200application/jsonJob
400application/jsonErrorEnvelopeinvalid_request
401application/jsonErrorEnvelopeunauthenticated
403application/jsonErrorEnvelopeforbidden
404application/jsonErrorEnvelopenot_found
429application/jsonErrorEnveloperate_limited
500application/jsonErrorEnvelopeinternal_error

Fields of the 200 answer

The shape is Job.

FieldTypeRequiredDescription
created_atTimestampyes
created_byActorRefyes
errorJobError or nullyesWhy the job failed, a code and a message; null otherwise.
finished_atTimestamp or nullyes
has_result_filebooleanyesTrue when the result is a file, fetched through POST /v1/jobs/{job_id}/result-url.
idJobIdyes
object"job"yes
progressJobProgressyes
resourceJobResource or nullyes
resultJobResult or nullyesA small result inline once succeeded, typed by the job type (WebhookReplayJobResult for webhook.replay, from 1.53.0 KnowledgeEvaluationJobResult for knowledge.evaluation, from 1.55.0 PromptEvalRunJobResult for prompt.evaluation and agent.conversation_test, from 1.56.0 AnalysisJobResult for call.analyze); null before.
started_atTimestamp or nullyes
statusJobStatusyes
typeJobTypeyes