# A job's status and results

`GET /api/v1/jobs/{id}`

Status (`queued`, `running`, `paused`, `done`, `cancelled`, `failed`), progress and the results so far. Poll every 5–10 seconds until `status` is `done`, or use a webhook. More than 1,000 results: page with `cursor`.

**Credits:** Free.

## Parameters

| Name | Type | Required | What it is |
| --- | --- | --- | --- |
| `id` | integer | yes | The id. |
| `limit` | integer | yes | Rows per page, 1–1000. default `1000`, 1–1000 |
| `cursor` | string |  | The `nextCursor` of the page before. Leave out for the first page. |

## Example request

```bash
curl "https://moleman.io/api/v1/jobs/981" \
  -H "Authorization: Bearer $MOLEMAN_API_KEY"
```

## Example answer

```json
{
  "jobId": 981,
  "listId": 377,
  "action": "companyInbox",
  "status": "done",
  "livemode": true,
  "total": 1,
  "done": 1,
  "failed": 0,
  "creditsCharged": 1,
  "creditsHeld": 0,
  "message": null,
  "createdAt": 1762344000000,
  "finishedAt": 1762344014000,
  "results": [
    {
      "id": 4102,
      "company": "Example Dental",
      "domain": "example.com",
      "firstName": null,
      "lastName": null,
      "fullName": null,
      "jobTitle": null,
      "email": "info@example.com",
      "result": "Works",
      "resultCode": "verified",
      "resultMeaning": "We checked it. This inbox is real, so you can send to it.",
      "emailStatus": "valid",
      "emailStatusText": "Works",
      "emailScore": 96,
      "resolveStatus": null,
      "resolveStatusText": null,
      "findStatus": "found",
      "findStatusText": "Found and checked",
      "emailType": "business-inbox",
      "emailTypeText": "Business inbox",
      "briefText": null,
      "briefLine": null,
      "briefRelevance": null,
      "extra": {}
    }
  ],
  "nextCursor": null
}
```

## Errors

| Status | Code | When |
| --- | --- | --- |
| 401 | [`missing_api_key`](/docs/errors#missing_api_key) | The request has no API key. |
| 401 | [`invalid_api_key`](/docs/errors#invalid_api_key) | The API key is not one of ours (a typo, a cut-off copy, or a key from another account that was deleted). |
| 401 | [`revoked_api_key`](/docs/errors#revoked_api_key) | The API key was revoked on the API page. Revoking takes effect at once. |
| 429 | [`rate_limited`](/docs/errors#rate_limited) | More than 120 requests in one minute with this key. |
| 500 | [`server_error`](/docs/errors#server_error) | Something broke on our side. Nothing was charged for it. |
| 400 | [`invalid_request`](/docs/errors#invalid_request) | A parameter is missing, has the wrong type or is out of range. `details` lists every problem with its path. |
| 400 | [`invalid_cursor`](/docs/errors#invalid_cursor) | The cursor is not one we gave out (they are opaque; do not build them yourself). |
| 404 | [`not_found`](/docs/errors#not_found) | The job or list does not exist, belongs to another account, or was deleted. |
| 403 | [`wrong_key_mode`](/docs/errors#wrong_key_mode) | A test key asked for something made with a live key, or the other way round. Test and live data never mix. |
