---
title: "Get a job"
method: GET
path: "/v1/jobs/{id}"
tags: ["jobs"]
---

# Get a job

`GET /v1/jobs/{id}`

## Request

- Base URL: `https://api.pomerado.ai`
- URL: `https://api.pomerado.ai/v1/jobs/{id}`
- Auth: HTTP bearer

Get a run's or build's job: its status, question, result, write status and error.

- Returns at once. While the job is live, Retry-After suggests when to read it again.
- A result is kept until it is first read, and at most 60 minutes after the job ends. include_result=false reads everything else and leaves the result for later.

## Path parameters

- `id` string, required

## Query parameters

- `include_result` 'true' | 'false'

## Response `200`

The job

- Job
  - `id` string, required: a job ID: job_ and 32 lowercase hex digits
  - `type` 'run' | 'build', required
  - `status` 'queued' | 'running' | 'needs_input' | 'succeeded' | 'failed' | 'cancelled', required
  - `tool_id` string, nullable, required
  - `input_request` InputRequest, required
    - `id` string, required: An input request ID: req_ and 32 lowercase hex digits
    - `expires_at` string, required
    - `answer_url` string, required
    - `message` string, required
    - `questions` Question[], required
      - union
        - object
          - `id` string, required
          - `prompt` string, required
          - `type` 'choice', required
          - `options` object[], required
            - `id` string, required
            - `label` string, required
          - `allow_other` boolean, required
          - `allow_note` boolean, required
        - object
          - `id` string, required
          - `prompt` string, required
          - `type` 'multi_choice', required
          - `options` object[], required
            - `id` string, required
            - `label` string, required
          - `min_selections` integer, required: an integer
          - `max_selections` integer, required: an integer
          - `allow_other` boolean, required
          - `allow_note` boolean, required
        - object
          - `id` string, required
          - `prompt` string, required
          - `type` 'text', required
          - `max_length` integer, required: an integer
        - object
          - `id` string, required
          - `prompt` string, required
          - `type` 'confirm', required
          - `follow_up` object, nullable, required
            - `prompt` string, required
        - object
          - `id` string, required
          - `prompt` string, required
          - `type` 'secret', required
          - `kind` 'one_time_code' | 'authenticator_code' | 'private_text', required
        - object
          - `id` string, required
          - `prompt` string, required
          - `type` 'login', required
          - `site_url` string, required
          - `fields` string[], required
          - `reason` 'missing' | 'rejected' | 'expired', required
          - `username_masked` string, nullable, required
          - `can_save` boolean, required
  - `result` unknown, required
  - `result_file` ResultFile
    - `id` string, required
    - `name` string, required
    - `media_type` string, required
    - `size` number, required
    - `sha256` string, required
    - `download_url` string, required
    - `expires_at` string, required
  - `result_preview` unknown
  - `result_status` 'available' | 'delivered' | 'expired', nullable, required
  - `result_expires_at` string, required: a string to be decoded into a Date
  - `write_status` 'not_attempted' | 'may_have_applied' | 'applied' | 'not_applied', nullable, required
  - `login_save` object, nullable, required
    - `status` 'saved' | 'not_saved' | 'failed', required
    - `login_id` string, nullable, required
    - `reason` string, nullable, required
  - `error` Error, required
    - `error` object, required
      - `code` string, required
      - `message` string, required
      - `retryable` boolean, required
      - `docs_url` string, required
      - `details` object
  - `message` string, nullable, required
  - `maintenance` object, nullable, required
    - `status` 'repairing' | 'repaired' | 'incomplete', required
    - `result_recovered` boolean, required
    - `message` string, required
    - `deadline_at` string, nullable, required
    - `now` JobMaintenanceNow: What the repair is doing now while the run waits for it. Absent otherwise, and from an older backend
      - `label` string, required: One line for the user saying what the repair is doing now: repairing, testing the fix or publishing it
      - `started_at` string, nullable, required: When the repair's current step started (ISO 8601 UTC); null when unknown
    - `waiting_for_repair` true: Present, as true, while the run waits behind another repair of its tool, which runs first. Each time a repair publishes a fixed tool, Pomerado runs the task again on it, and repairs the tool for this run if it still fails. Absent otherwise, and from an older backend
    - `change_in_progress` true: Present, as true, with waiting_for_repair while the repair the run waits behind is a change to the tool that someone requested. When the change publishes, Pomerado runs the task again on the changed tool; deadline_at leaves the change its time to finish. Absent otherwise, and from an older backend
    - `input_refusal` JobMaintenanceInputRefusal: Present while the repair checks a value in the input that the tool refused. It finds whether the input or the tool is wrong. Absent otherwise, and from an older backend
      - `reason` string, nullable, required: The tool's own reason for refusing the value. Null from a status-only read, or when Pomerado can't read it
  - `build` JobBuild, required
    - `integration_id` string, required: an integration ID: int_ and 32 lowercase hex digits
    - `stage` 'queued' | 'checking_login' | 'exploring' | 'building' | 'publishing', required
    - `stages` object[], required
      - `key` 'queued' | 'checking_login' | 'exploring' | 'building' | 'publishing', required
      - `label` string, required
      - `status` 'done' | 'active' | 'pending', required
      - `started_at` string, nullable, required
      - `completed_at` string, nullable, required
    - `now` JobBuildNow
      - `label` string, required: One line for the user saying what the build is doing now, such as its step on the site, a test round's progress or that it waits for an answer. It changes as the build moves on
      - `started_at` string, nullable, required: When this line started (ISO 8601 UTC); null when unknown
    - `eta` object, nullable, required
      - `min_seconds` number, required
      - `max_seconds` number, required
    - `longer_than_usual` boolean: True when this build is queued or running and has run longer than usual. eta is null then
    - `example_result` unknown, required
    - `existing_tool_id` string, nullable, required
    - `change` JobChange, required
      - `revision_id` string, nullable, required
      - `previous_revision_id` string, nullable, required
      - `write_started` boolean, required
    - `recorded` boolean, required: Whether the build's browser was recorded. A Business account watches the recording on the build page, or reads there why it was removed
  - `site_url` string, nullable: The website's https origin the job was asked for: a build's site_url, or the site of the tool a run runs
  - `site_name` string, nullable: The site's name: its tool's integration's, else the integration of its website; null until one names it
  - `task` string, nullable: A build's task, or a requested change, as it was sent; null for a run and a job accepted before Pomerado kept tasks
  - `tool_name` string, nullable: The name of the tool tool_id names, as GET /v1/tools shows it
  - `waiting_since` string, nullable: When the question input_request asks was asked; null when the job asks none
  - `answered_questions` JobAnsweredQuestion[]: The questions the job asked and its member answered, oldest first; a secret, login or code shows only that it was answered
    - `request_id` string, required
    - `question_id` string, required
    - `type` string, required
    - `prompt` string, required
    - `options` string[], nullable, required: The offered options' labels, for a choice; null otherwise
    - `selected` string[], required: The labels picked
    - `other` string, nullable, required: The member's own answer instead of, or beside, the offered options
    - `note` string, nullable, required
    - `text` string, nullable, required: A text answer, or the text a confirmation sent
    - `confirmed` boolean, nullable, required
    - `answered` boolean, required: False for an optional question left unanswered
    - `value_hidden` boolean, required: True for a secret, a login, a code or a saved login's choice: it was answered, and its value is never shown
    - `asked_at` string, nullable, required
    - `answered_at` string, nullable, required
  - `warnings` JobWarning[]: What to tell the person about a build or requested change, as is, or, on the answer that accepted a run, about its call. Absent when there is none
    - `code` 'non_us_site' | 'login_not_needed', required
    - `message` string, required
  - `watch_url` string, required
  - `tip` string
  - `created_at` string, required: a string to be decoded into a Date
  - `updated_at` string, required: a string to be decoded into a Date
  - `completed_at` string, required: a string to be decoded into a Date

## Other responses

- `400`: invalid_request
- `401`: unauthorized, reauthentication_required
- `403`: forbidden
- `404`: not_found
- `500`: internal_error
- `503`: result_unavailable, temporarily_unavailable

---

[API](https://skmtc.dev/pomerado/apis/pomerado-api.md) · [All operations](https://skmtc.dev/pomerado/apis/pomerado-api/llms.txt) · [OpenAPI document](https://skmtc.dev/pomerado/apis/pomerado-api/revisions/48dac2a3143e?raw)
