Objects
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 | 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
{
"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
}