Skip to content

Jobs

Everything slow in Meetingize runs as an asynchronous job: processing a new meeting (transcription, diarization, AI report) and generating a document. The POST that starts the work answers immediately with the job; you then follow it by polling or with webhooks.

kindStarted byEnds with
meeting_processingPOST /v1/meetingsthe transcript and the AI report (transcript only with transcribe_only)
document_generationPOST /v1/meetings/{id}/documents, or document_templates at meeting creationa document (document_id)

status is the coarse state, stage the detail:

statusstage (meeting processing)stage (document generation)
queuedqueuedqueued
processingdownloading (with audio_url), transcribing, summarizinggenerating
completeddonedone
failedthe stage where it failed
canceledthe processing was canceled (for example the meeting was deleted while it was running)

A meeting processing in stage summarizing already has its transcript; it becomes completed when the AI report is ready.

GET /v1/jobs/{job_id} returns the status, the stage, the ids of what was produced and the cost of one job. It is what you poll.

{
"id": "job_9b0c2d1e",
"object": "job",
"kind": "meeting_processing",
"status": "completed",
"stage": "done",
"progress": null,
"meeting_id": "6f0c2a4e-1b7d-4c55-9a51-3e2d8f0b7c11",
"document_id": null,
"parent_job_id": null,
"transcribe_only": false,
"document_templates": ["tpl_42"],
"document_job_ids": ["job_a41f07c2"],
"error": null,
"usage": { "cost_eur": "0.0581", "wallet_eur": "0.0581", "on_demand_eur": "0.0000", "ledger_entry_ids": ["led_..."] },
"metadata": { "crm_id": "C-1042" },
"created_at": "2026-10-14T10:02:11Z",
"started_at": "2026-10-14T10:02:13Z",
"finished_at": "2026-10-14T10:09:42Z"
}
FieldMeaning
meeting_idthe meeting concerned (known from the start)
document_iddocument_generation: the document once completed
document_job_idsmeeting_processing: the document jobs started after the report (from document_templates or persona)
parent_job_iddocument_generation: the meeting job that requested it at creation
error{code, message} when the job failed
usagecost of the job once metered, see billing
metadatathe object you sent, unchanged

GET /v1/jobs returns your jobs, most recent first, filtered with status (queued, processing, completed, failed, canceled) and kind. Handy to see what occupies your parallel processing slots:

Terminal window
curl -s "https://app.meetingize.com/api/v1/jobs?status=processing" -H "Authorization: Bearer $MEETINGIZE_API_KEY"
  • Polling: call GET /v1/jobs/{id} every 10 to 30 seconds until completed, failed or canceled. Simple and fine for scripts.
  • Webhooks: transcription.completed, processing.completed, document.generated and the .failed events carry the job in data.object. Recommended for integrations.

The step-by-step guide Create a meeting and get the results shows both.