# Job

The Job object of the Kaabist API.

| Field | Type | Required | Description |
|---|---|---|---|
| `id` | string | yes | pattern `^job_[0-9a-hjkmnp-tv-z]{26}$` |
| `object` | `"job"` | yes |  |
| `mode` | `"live"`, `"test"` | yes |  |
| `status` | enum (7 values) | yes | one of `"queued"`, `"running"`, `"awaiting_input"`, `"needs_attention"`, `"succeeded"`, `"failed"`, `"canceled"` |
| `reason` | enum (7 values) | yes | one of `"obstacle"`, `"drift"`, `"unknown_page"`, `"session_expired"`, `"side_effect_ambiguous"`, `"captcha"`, `null` |
| `program` | object | yes |  |
| `program.id` | string or null | yes | pattern `^prg_[0-9a-hjkmnp-tv-z]{26}$` |
| `program.name` | string or null | yes |  |
| `program.version` | integer or null | yes | ≥ 1 |
| `program.version_id` | string or null | yes | pattern `^pv_[0-9a-hjkmnp-tv-z]{26}$` |
| `inputs_hash` | string or null | yes |  |
| `data` | object or null | yes |  |
| `raw` | object or null | yes |  |
| `warnings` | object[] | yes |  |
| `warnings[].code` | enum (19 values) | yes | one of `"null_marker"`, `"parse_failed"`, `"out_of_range"`, `"required_missing"`, `"list_short"`, `"fill_rate_drop"`, `"escalated"`, `"healed_locator_used"`, `"obstacle_dismissed"`, `"field_empty"`, `"step_skipped"`, `"cache_hit"`, `"byo_fallback_used"`, `"pdf_source_not_extractable"`, `"pdf_no_text"`, `"pdf_pages_truncated"`, `"redirect_not_followed"`, `"pagination_incomplete"`, `"captcha_inject_navigated"` |
| `warnings[].field` | string or null |  |  |
| `warnings[].raw` | string or null |  |  |
| `warnings[].step` | string or null |  |  |
| `warnings[].message` | string |  |  |
| `warnings[].detail` | string |  |  |
| `warnings[].count` | integer |  | ≥ 1 |
| `warnings[].of` | integer |  | ≥ 0 |
| `warnings[].hint` | object |  |  |
| `warnings[].hint.date_format` | string |  |  |
| `warnings[].hint.date_formats` | string[] |  |  |
| `warnings[].hint.ambiguous` | `true` |  |  |
| `warnings[].hint.locale` | string |  |  |
| `meta` | object | yes |  |
| `meta.tier` | `"http"`, `"browser"`, `"stealth"`, `null` | yes |  |
| `meta.tier_requested` | `"http"`, `"browser"`, `"stealth"` | yes |  |
| `meta.escalations` | object[] | yes |  |
| `meta.escalations[].from` | `"http"`, `"browser"`, `"stealth"` | yes |  |
| `meta.escalations[].to` | `"http"`, `"browser"`, `"stealth"` | yes |  |
| `meta.escalations[].reason` | string | yes |  |
| `meta.region` | `"eu"`, `"us"` | yes |  |
| `meta.final_url` | string or null | yes |  |
| `meta.cache` | `"hit"`, `"miss"` | yes |  |
| `meta.duration_ms` | integer | yes | ≥ 0 |
| `meta.parked_ms` | integer | yes | ≥ 0 |
| `meta.dry_run` | boolean |  |  |
| `meta.stopped_at` | string |  |  |
| `meta.resumed_from` | `"page"`, `"checkpoint"`, `"replay"` |  |  |
| `meta.blocked_reason` | `"insufficient_credits"`, `"session_locked"` |  |  |
| `meta.proxy` | object |  |  |
| `meta.proxy.mode` | `"platform"`, `"byo"` | yes |  |
| `meta.proxy.pool` | `"datacenter"`, `"residential"`, `"mobile"`, `null` | yes |  |
| `meta.proxy.country` | string or null | yes | min length 2 · max length 2 |
| `meta.session` | object or null |  |  |
| `meta.session.id` | string | yes | pattern `^ses_[0-9a-hjkmnp-tv-z]{26}$` |
| `meta.session.name` | string | yes |  |
| `meta.session.saved` | boolean | yes |  |
| `meta.assets` | object |  |  |
| `meta.assets.blocked_requests` | integer | yes | ≥ 0 |
| `meta.assets.blocked_bytes_estimate` | integer | yes | ≥ 0 |
| `meta.credits` | object |  |  |
| `meta.credits.reserved` | number | yes |  |
| `meta.credits.settled` | number or null | yes |  |
| `meta.credits.breakdown` | object | yes |  |
| `meta.credits.breakdown.compute` | number | yes |  |
| `meta.credits.breakdown.proxy` | number | yes |  |
| `meta.credits.breakdown.llm` | number | yes |  |
| `meta.credits.breakdown.captcha` | number | yes |  |
| `meta.steps` | object[] |  |  |
| `meta.steps[].path` | string | yes |  |
| `meta.steps[].action` | string | yes |  |
| `meta.steps[].status` | `"ok"`, `"failed"`, `"skipped"`, `"parked"` | yes |  |
| `meta.steps[].duration_ms` | integer | yes | ≥ 0 |
| `meta.steps[].healed` | boolean | yes |  |
| `meta.snapshot` | string or null |  |  |
| `meta.artifacts` | map of string |  |  |
| `meta.vars` | map of any |  |  |
| `error` | object or null | yes |  |
| `error.code` | enum (58 values) | yes | one of `"blocked"`, `"timeout"`, `"session_expired"`, `"validation_failed"`, `"input_expired"`, `"side_effect_ambiguous"`, `"insufficient_credits"`, `"max_credits_exceeded"`, `"max_tier_exceeded"`, `"max_steps_exceeded"`, `"ssrf_blocked"`, `"target_disallowed"`, `"byo_proxy_unreachable"`, `"byo_proxy_blocked"`, `"byo_llm_auth_failed"`, `"byo_llm_rate_limited"`, `"byo_llm_quota_exceeded"`, `"byo_captcha_auth_failed"`, `"byo_captcha_balance"`, `"byo_provider_failing"`, `"byo_in_use"`, `"program_invalid"`, `"request_invalid"`, `"idempotency_conflict"`, `"session_locked_timeout"`, `"session_locked"`, `"session_engine_mismatch"`, `"job_not_waiting"`, `"fence_open"`, `"loop_exhausted"`, `"target_ambiguous"`, `"canceled"`, `"not_found"`, `"program_not_found"`, `"program_has_schedules"`, `"secret_storage_disabled"`, `"not_implemented"`, `"two_factor_required"`, `"reauth_required"`, `"rate_limited"`, `"payment_method_required"`, `"billing_unavailable"`, `"test_quota_exceeded"`, `"plan_required"`, `"plan_managed"`, `"login_flow_rate_limited"`, `"schedule_interval_too_small"`, `"live_unavailable"`, `"pdf_not_pdf"`, `"pdf_too_large"`, `"pdf_malware"`, `"pdf_scanner_unavailable"`, `"pdf_encrypted"`, `"pdf_too_complex"`, `"pdf_malformed"`, `"pdf_active_content"`, `"pdf_source_missing"`, `"internal"` |
| `error.message` | string | yes |  |
| `error.tier` | `"http"`, `"browser"`, `"stealth"`, `null` | yes |  |
| `error.retryable` | boolean | yes |  |
| `error.step` | string or null | yes |  |
| `error.snapshot` | string or null |  |  |
| `error.details` | map of any |  |  |
| `input_request` | object or null | yes |  |
| `input_request.name` | string | yes |  |
| `input_request.prompt` | string | yes |  |
| `input_request.type` | `"string"`, `"number"`, `"secret"` | yes |  |
| `input_request.pattern` | string or null | yes |  |
| `input_request.keep_alive_until` | string or null (date-time) | yes |  |
| `input_request.expires_at` | string (date-time) | yes |  |
| `input_request.collect` | `"api"`, `"hosted"` | yes |  |
| `input_request.screenshot` | string or null | yes |  |
| `input_request.resolve_url` | string or null (uri) | yes |  |
| `attention` | object or null | yes |  |
| `attention.reason` | `"obstacle"`, `"drift"`, `"unknown_page"`, `"session_expired"`, `"side_effect_ambiguous"`, `"captcha"` | yes |  |
| `attention.step` | string | yes |  |
| `attention.detail` | string | yes |  |
| `attention.screenshot` | string or null | yes |  |
| `attention.snapshot` | string or null | yes |  |
| `attention.checkpoint` | string or null | yes |  |
| `attention.expires_at` | string (date-time) | yes |  |
| `attention.proposals` | [Proposal](https://docs.kaab.ist/reference/api/schemas/proposal)[] | yes |  |
| `attention.resolve_url` | string or null (uri) | yes |  |
| `attention.actions` | `"apply"`, `"skip_step"`, `"retry_from"`, `"takeover"`, `"abort"`[] | yes |  |
| `progress` | object or null | yes |  |
| `progress.step` | integer | yes | ≥ 0 |
| `progress.of` | integer | yes | ≥ 0 |
| `progress.checkpoint` | string or null | yes |  |
| `tags` | string[] | yes | max items 20 |
| `webhook_url` | string or null (uri) | yes |  |
| `created_at` | string (date-time) | yes |  |
| `started_at` | string or null (date-time) | yes |  |
| `finished_at` | string or null (date-time) | yes |  |
| `expires_at` | string or null (date-time) | yes |  |

## Example

```json
{
  "id": "job_01j9zqk3q7m4n5p6r7s8t9v0wx",
  "object": "job",
  "mode": "live",
  "status": "queued",
  "reason": null,
  "program": {
    "id": "prg_01j9zqk3q7m4n5p6r7s8t9v0wx",
    "name": "acme-report",
    "version": 3,
    "version_id": "pv_01j9zqk3q7m4n5p6r7s8t9v0wx"
  },
  "inputs_hash": "sha256:2b8f1c",
  "data": null,
  "raw": null,
  "warnings": [],
  "meta": {
    "tier": null,
    "tier_requested": "browser",
    "escalations": [],
    "region": "eu",
    "final_url": null,
    "cache": "miss",
    "duration_ms": 0,
    "parked_ms": 0
  },
  "error": null,
  "input_request": null,
  "attention": null,
  "progress": null,
  "tags": [
    "customer:42"
  ],
  "webhook_url": null,
  "created_at": "2026-09-18T10:00:00Z",
  "started_at": null,
  "finished_at": null,
  "expires_at": null
}
```
