---
title: Jobs API
description: List jobs and retrieve one job's result.
type: doc
icon: list-checks
sidebar:
  label: Jobs API
  order: 4
  icon: list-checks
search:
  tags: [api]
---
Every analyze call returns a job. List jobs on the account, or read one (including `result`). Lifecycle: [Jobs, Polling, and Webhooks](/guides/jobs).


## List jobs

`GET /v2/jobs`

Get a paginated list of jobs for the account. Results are returned in reverse chronological order.

### Query Parameters

| Parameter | Type | Description |
|---|---|---|
| `page` | integer | Page number to retrieve. 0-based. Default: `0`. |

### Response

| Field | Type | Description |
|---|---|---|
| `jobs` | array | List of job summary objects for the current page. Each object has `job_id`, `status`, and `created_at`. |
| `page` | integer | The current page number (0-based). |
| `total_pages` | integer | Total number of pages available. |

Each item in `jobs`:

| Field | Type | Description |
|---|---|---|
| `job_id` | string | Unique job identifier. Use with `GET /v2/jobs/{job_id}` to retrieve the full result. |
| `status` | string | Job status. See [Enumerations](/reference/enumerations#job-status). |
| `created_at` | string | ISO 8601 datetime; fractional seconds and timezone suffix may vary. See [Response Schema — Timestamps](/reference/response-schema#timestamps). |

### Example

<CodeGroup param="lang">

```bash cURL
curl -X GET "https://api.amplifierhealth.com/v2/jobs?page=0" \
  -H "X-Account-ID: your-account-id" \
  -H "X-API-Key: your-api-key"
```

```javascript JavaScript
const response = await fetch("https://api.amplifierhealth.com/v2/jobs?page=0", {
  headers: {
    "X-Account-ID": process.env.AMPLIFIER_ACCOUNT_ID,
    "X-API-Key": process.env.AMPLIFIER_API_KEY,
  },
});

const data = await response.json();
```

```python Python
# Requires httpx: pip install httpx
import os
import httpx

response = httpx.get(
  "https://api.amplifierhealth.com/v2/jobs?page=0",
  headers={
      "X-Account-ID": os.environ["AMPLIFIER_ACCOUNT_ID"],
      "X-API-Key": os.environ["AMPLIFIER_API_KEY"],
  },
)

data = response.json()
```

</CodeGroup>

### Errors

For 401 and other codes, see [Errors](/reference/errors#error-codes).

## Retrieve a job

`GET /v2/jobs/{job_id}`

Retrieve a previously submitted job by ID, including its result once analysis completes.

For a valid `job_id` on your account, the API returns `200 OK` with a job object. `status` tells you whether the job is still queued or running, succeeded (`done`), or ended without a result (`failed` or `timed-out`) — these outcomes are expressed in the body, not only via HTTP error codes. See [Response Schema — Job Status: Failed or Timed-out](/reference/response-schema#job-status-failed).

### Path Parameters

| Parameter | Type | Description |
|---|---|---|
| `job_id` | string | The `job_id` returned from an analyze endpoint (`POST /v2/models/{model_name}/analyze` or `POST /v2/signs/{sign_name}/analyze`). |

### Response

`200 OK` returns the job object. Field names, types, and `result` shape are defined in [Response Schema — Job response](/reference/response-schema#job-response). How to branch on `level` and `recommended_action` is in [Interpreting Results](/guides/interpreting-results).

### Example

<CodeGroup param="lang">

```bash cURL
curl -X GET https://api.amplifierhealth.com/v2/jobs/189bce4a-52cb-4e60-8586-cef89e719109 \
  -H "X-Account-ID: your-account-id" \
  -H "X-API-Key: your-api-key"
```

```javascript JavaScript
const response = await fetch("https://api.amplifierhealth.com/v2/jobs/189bce4a-52cb-4e60-8586-cef89e719109", {
  headers: {
    "X-Account-ID": process.env.AMPLIFIER_ACCOUNT_ID,
    "X-API-Key": process.env.AMPLIFIER_API_KEY,
  },
});

const data = await response.json();
```

```python Python
# Requires httpx: pip install httpx
import os
import httpx

response = httpx.get(
  "https://api.amplifierhealth.com/v2/jobs/189bce4a-52cb-4e60-8586-cef89e719109",
  headers={
      "X-Account-ID": os.environ["AMPLIFIER_ACCOUNT_ID"],
      "X-API-Key": os.environ["AMPLIFIER_API_KEY"],
  },
)

data = response.json()
```

</CodeGroup>

### Example response

```json
{
  "job_id": "189bce4a-52cb-4e60-8586-cef89e719109",
  "status": "done",
  "created_at": "2026-02-22T09:14:00Z",
  "completed_at": "2026-02-22T09:14:03Z",
  "job_type": "model",
  "api_version": "v2",
  "model_name": "pulse",
  "sign_name": null,
  "audio_content_type": "audio/wav",
  "audio_size_bytes": 876032,
  "audio_duration_seconds": 27.4,
  "audio_sample_rate": 16000,
  "result": {
    "summary": { ... },
    "signals": [ ... ],
    "audio_quality": { ... },
    "extended_metrics": [ ... ]
  }
}
```

### Errors

`404` when `job_id` is missing or belongs to another account. Match it to the analyze response and check `X-Account-ID`.

For authentication (401), rate limiting (429), server errors (500), and retry guidance, see [Errors](/reference/errors#retry-guidance).

## Related pages

- [Jobs, Polling, and Webhooks](/guides/jobs) — polling cadence, terminal statuses, and webhook delivery.
- [Response Schema](/reference/response-schema) — every field of a completed result.
- [Groups API](/reference/groups) — list the jobs registered in a group.
- [Longitudinal API](/reference/longitudinal-api) — submit audio into a group and read trajectory.
