---
title: "Poll a job — runs the next slice if one is due, then answers"
method: GET
path: "/v1/jobs/{id}"
tags: ["Jobs"]
---

# Poll a job — runs the next slice if one is due, then answers

`GET /v1/jobs/{id}`

## Request

- Base URL: `https://electronics-architect.com`
- URL: `https://electronics-architect.com/v1/jobs/{id}`
- Auth: HTTP bearer

Scope: `solve`. If the job is still running and no other request is working on it, this request runs about 3 s more of trials (allow up to 5 s) before answering, so a job progresses exactly as fast as it is polled (`meta.advanced` says whether this poll worked). When `job.status` is `done` the body carries `result`; `failed` carries `job.error`; `cancelled` and `expired` carry neither. A job the key did not create, or one older than 24 hours, is 404.

## Path parameters

- `id` string, required

## Response `200`

Status, progress, and the result when done.

- JobResponse
  - `job` Job: A Monte Carlo job: status and progress.
    - `id` string: `job_` + 20 characters.
    - `kind` 'monte_carlo'
    - `status` 'queued' | 'running' | 'done' | 'failed' | 'cancelled' | 'expired'
    - `trials` object
      - `total` integer
      - `done` integer
    - `progress` number
    - `sliceInProgress` boolean: Another request is running a slice right now; poll again.
    - `seed` integer
    - `error` string: Only when `failed`.
    - `createdAt` string, date-time
    - `updatedAt` string, date-time
    - `expiresAt` string, date-time
  - `result` JobResult: The synchronous Monte Carlo result without its per-trial array: summary, seed, trialCount, failedTrials, unconvergedTrials, protectionTrips, operatingTrials, plus `nodeStats` — per node, `trials` and min / mean / max / stddev of voltage, current, power and temperature (over every solved trial, as the MCP digest folds them) with `thermalViolations` — and `attribution`.
    - `summary` object
    - `nodeStats` object
    - `seed` integer
    - `trialCount` integer
    - `failedTrials` integer
    - `protectionTrips` integer
    - `operatingTrials` integer
    - `elapsedMs` number: CPU time summed over every slice.
    - `attribution` object
  - `meta` object
    - `schemaVersion` integer
    - `trials` integer
    - `requestedTrials` integer
    - `clamped` boolean
    - `clampedBy` string, nullable
    - `seed` integer
    - `advanced` boolean: On a poll: whether this request ran a slice.
    - `trialsThisSlice` integer: How many trials the slice inside THIS request ran (0 when none ran). Divide the trials left by it for the polls remaining — measured on this job, not estimated from its size.
    - `cancelled` boolean
    - `refunded` boolean
    - `elapsedMs` number
    - `metered` boolean
    - `feature` string
    - `attribution` object

## Other responses

- `400`: INVALID_REQUEST — a malformed id.
- `401`: No key, a browser token instead of a key, an unknown key, or a revoked key (code KEY_REVOKED).
- `403`: The key lacks a required scope (INSUFFICIENT_SCOPE), or the call needs a plan the account does not have (PLAN_REQUIRED): on the Free plan, compare, exports, Monte Carlo jobs, AI synthesis, a design with more than one sheet, or a save, share or key past the Free limits; or a team key whose team is no longer paid for.
- `404`: NOT_FOUND.
- `429`: RATE_LIMITED: the key's per-minute allowance is used up (or, before any key is recognised, too many requests from one address presented an unknown or revoked key). On the routes that solve inside the request (solve, verify, derating, compare, exports, ai/review, ai/synthesize) it can also be SOLVE_IN_PROGRESS: this account already has 3 calls of that kind running on the server that took the request (solves, AI reviews and syntheses are each counted separately). `Retry-After` is set either way; for SOLVE_IN_PROGRESS it is 2 s for solves and 30 s for AI reviews and syntheses.

---

[API](https://skmtc.dev/electronics-architect/apis/electronics-architect-api.md) · [All operations](https://skmtc.dev/electronics-architect/apis/electronics-architect-api/llms.txt) · [OpenAPI document](https://skmtc.dev/electronics-architect/apis/electronics-architect-api/revisions/98066184ba67?raw)
