Get what the background pipeline is doing
const url = 'http://127.0.0.1:8765/api/pipeline';const options = {method: 'GET'};
try { const response = await fetch(url, options); const data = await response.json(); console.log(data);} catch (error) { console.error(error);}curl --request GET \ --url http://127.0.0.1:8765/api/pipelineWhat the background pipeline is doing: lanes, caps used today, queue counts, approvals, each job’s steps and Scout label. System data only: ids, codes, counts, numbers and timestamps. A job is named by its job_identity (the posting’s public link). No posting, resume, answer or story text, no title, no company. setting is the pipeline’s settings in effect with the source that decided them (default, setting, environment, settings_unreadable); readable false: the settings file cannot be read and the pipeline is off. runner is this server’s runner thread (null when it runs none); its rank is the background rank lane’s last turn (null before the first: state, reason, model calls made, postings ranked, warning). yielding_to names live work the pipeline waits for (sources_update, assess_batch, find_jobs_run), else null. lanes: steps running per model lane against its cap, and error_code / retry_at while a lane is backed off. caps: today’s model calls of the pipeline and of the background rank against their daily caps (one count for the install, every profile together; warning once the count is past warn_at) and jobs_per_trigger. counts: steps per state and jobs per state (running, awaiting_approval, failed, waiting, done, cancelled). approvals: the pending approvals with their estimate. jobs: at most 200, most recently changed first, each with its steps’ states, the trigger that queued it, why it waits (daily_cap_reached, lane_backoff, retry_backoff), its failed step’s code and, once the label step is done, the Scout label as codes (label: recommended or needs_attention, reasons, ats_score). errors: the last 20 failed attempts, newest first, by code. A job enters the pipeline only when the user answered one of its questions, saved a story about one, or asked for it (POST /api/pipeline/process): new postings never do. Reading makes no model call and creates nothing.
Responses
Section titled “Responses”Success.
object
Example
{ "approvals": { "items": [ { "created_at": "2026-10-03T09:30:00.000000Z", "decided_at": null, "decided_by": null, "est_calls": 4, "est_tokens": 78000, "id": "apv_0123456789abcdef0123456789abcdef", "jobs": 2, "profile_id": null, "state": "pending", "trigger": "answer_saved", "waiting": [ { "job_identity": "https://boards.greenhouse.io/acme/jobs/111", "profile_id": "prof_1" }, { "job_identity": "https://boards.greenhouse.io/acme/jobs/112", "profile_id": "prof_1" } ], "waiting_jobs": 2 } ], "pending": 1 }, "caps": { "day": "2026-10-03", "jobs_per_trigger": 10, "pipeline_calls": { "limit": 40, "used": 6 }, "rank_calls": { "limit": 100, "used": 12, "warn_at": 60, "warning": false } }, "counts": { "jobs": { "awaiting_approval": 2, "done": 1, "running": 1 }, "jobs_total": 4, "steps": { "awaiting_approval": 2, "blocked": 3, "done": 4, "running": 1 } }, "errors": [ { "at": "2026-10-03T09:12:00.000000Z", "attempt": 1, "error_code": "assess_timeout", "job_identity": "https://boards.greenhouse.io/acme/jobs/109", "profile_id": "prof_1", "step": "tailor" } ], "jobs": [ { "approval_id": null, "error_code": null, "job_identity": "https://boards.greenhouse.io/acme/jobs/101", "label": { "ats_score": 84, "label": "recommended", "reasons": [] }, "profile_id": "prof_1", "state": "done", "steps": { "ats": "done", "label": "done", "reassess": "done", "tailor": "done" }, "trigger": "answer_saved", "updated_at": "2026-10-03T09:31:10.000000Z", "waiting": null } ], "lanes": [ { "cap": 2, "error_code": null, "lane": "claude_cli", "retry_at": null, "running": 0 }, { "cap": 2, "error_code": null, "lane": "codex_cli", "retry_at": null, "running": 1 }, { "cap": 4, "error_code": null, "lane": "local", "retry_at": null, "running": 0 }, { "cap": 1, "error_code": null, "lane": "ollama", "retry_at": null, "running": 0 } ], "readable": true, "runner": { "active": true, "last": { "reason": null, "state": "ran", "steps": 4 }, "rank": { "calls": 2, "ranked": 73, "reason": null, "state": "ran", "warning": false } }, "schema_version": "scout-pipeline:1", "setting": { "auto_jobs_per_trigger": 10, "enabled": true, "label_min_ats": 0, "max_model_calls_per_day": 40, "models": {}, "rank": { "enabled": true, "max_calls_per_day": 100, "source": "default", "warn_calls_per_day": 60 }, "source": "default" }, "yielding_to": null}Forbidden / forbidden_origin: loopback peer and Host 127.0.0.1:<port> or localhost:<port> only (Origin too on writes).
object
object
Examplegenerated
{ "error": { "allowed_keys": [ "example" ], "code": "example", "message": "example" }}Unknown_key
object
object
Example
{ "error": { "code": "unknown_key", "message": "..." }}