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.
Kinds of jobs
Section titled “Kinds of jobs”kind | Started by | Ends with |
|---|---|---|
meeting_processing | POST /v1/meetings | the transcript and the AI report (transcript only with transcribe_only) |
document_generation | POST /v1/meetings/{id}/documents, or document_templates at meeting creation | a document (document_id) |
Statuses and stages
Section titled “Statuses and stages”status is the coarse state, stage the detail:
status | stage (meeting processing) | stage (document generation) |
|---|---|---|
queued | queued | queued |
processing | downloading (with audio_url), transcribing, summarizing | generating |
completed | done | done |
failed | the stage where it failed | |
canceled | the 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 a job
Section titled “Get a job”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"}| Field | Meaning |
|---|---|
meeting_id | the meeting concerned (known from the start) |
document_id | document_generation: the document once completed |
document_job_ids | meeting_processing: the document jobs started after the report (from document_templates or persona) |
parent_job_id | document_generation: the meeting job that requested it at creation |
error | {code, message} when the job failed |
usage | cost of the job once metered, see billing |
metadata | the object you sent, unchanged |
List jobs
Section titled “List jobs”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:
curl -s "https://app.meetingize.com/api/v1/jobs?status=processing" -H "Authorization: Bearer $MEETINGIZE_API_KEY"Poll or subscribe?
Section titled “Poll or subscribe?”- Polling: call
GET /v1/jobs/{id}every 10 to 30 seconds untilcompleted,failedorcanceled. Simple and fine for scripts. - Webhooks:
transcription.completed,processing.completed,document.generatedand the.failedevents carry the job indata.object. Recommended for integrations.
The step-by-step guide Create a meeting and get the results shows both.