Skip to content

Get one posting of a run

GET
/api/runs/{run_id}/posting
curl --request GET \
--url 'http://127.0.0.1:8765/api/runs/example/posting?url=example'

One posting of a run, complete with its text and assessment. For a job across runs and quick assessments use GET /api/jobs?url= instead. bank_suggestions is added when a question this assessment left open has a near match in the user’s answers. not_assessed_reason is one of: unchanged, duplicate, failed, over_cap, role_mismatch, no_resume, model_unavailable, model_denied, location_mismatch, sponsorship_excluded, model_output_invalid, posting_incomplete, region_only, published_too_old, work_mode_mismatch (posting_incomplete: the requirement list looked cut off, so no verdict was given; sponsorship_excluded: older runs only, since 0.1.11.3 sponsorship is a label and leaves no posting out). job_state may carry assessment_stale: {reason: "posting_changed"} (absent otherwise) when the assessment that gives the state was made on posting text that has since changed: the verdict still reads, and the job should be re-assessed. The same marker carries reason older_prompt, settings_changed or story_bank_changed when the state comes from a stored quick assessment made with an older assess prompt, other candidate settings (work mode, countries, location, sponsorship need) or answers and stories that have since changed, and resume_changed when a master resume is stored and a resume line the assessment quoted is gone or a new line names one of its open questions; nothing is re-assessed until you ask (POST /api/assess, or assess-all). job_state.state weak_fit is needs_answers for a job whose stored assessment has few requirements met AND whose rank score is low (the fit block of the project’s settings: below 40% and below rank 50): it is not counted with the jobs that need your answers. job_state.state thin_posting (0.1.11.2) is matched for a job whose stored assessment has no requirement row about the job (an empty matrix, a lone “No stated requirements” row, eligibility rows alone): nothing was judged, so it is never shown or counted as a match. A matched verdict whose stored gate decision is not_a_match reads not_a_match.

run_id
required
string

A run id from GET /api/runs (run_…).

url
required
string

The posting’s normalized_url.

Success.

Media typeapplication/json
object
schema_version
required
Allowed value: scout-find-jobs-run-posting:1
key
additional properties
any
Example
{
"assessment": null,
"carried_forward": null,
"not_assessed_reason": null,
"row": {},
"run_id": "run_20260929T100000Z",
"schema_version": "scout-find-jobs-run-posting:1"
}

Forbidden / forbidden_origin: loopback peer and Host 127.0.0.1:<port> or localhost:<port> only (Origin too on writes).

Media typeapplication/json
object
error
required
object
allowed_keys
Array<string>
code
required
string
message
required
string
key
additional properties
any
Examplegenerated
{
"error": {
"allowed_keys": [
"example"
],
"code": "example",
"message": "example"
}
}

Not_found

Media typeapplication/json
object
error
required
object
allowed_keys
Array<string>
code
required
string
message
required
string
key
additional properties
any
Example
{
"error": {
"code": "not_found",
"message": "..."
}
}

Invalid_value, unknown_key

Media typeapplication/json
object
error
required
object
allowed_keys
Array<string>
code
required
string
message
required
string
key
additional properties
any
Example
{
"error": {
"code": "invalid_value",
"message": "..."
}
}