> ## Documentation Index
> Fetch the complete documentation index at: https://docs.haiqu.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# Jobs

> Track job status, read results and metrics, and fix jobs that fail or stall

export const Clip = ({name, alt}) => <Frame>
    <video className="block dark:hidden" src={`/images/dashboard/${name}.mp4`} autoPlay muted loop playsInline aria-label={alt} />
    <video className="hidden dark:block" src={`/images/dashboard/${name}-dark.mp4`} autoPlay muted loop playsInline aria-label={alt} />
  </Frame>;

export const Shot = ({name, alt}) => <Frame>
    <img className="block dark:hidden" src={`/images/dashboard/${name}.png`} alt={alt} />
    <img className="hidden dark:block" src={`/images/dashboard/${name}-dark.png`} alt={alt} />
  </Frame>;

A job is created each time you run something: `haiqu.run(...)`, a transpilation, a data-loading or a hybrid program. **All Jobs** lists every job across all your experiments.

<Shot name="jobs" alt="All Jobs list" />

## Statuses

A job moves through these statuses. While any job is in progress, the list refreshes on its own every 15 seconds.

| Status | What is happening |
| - | - |
| **Submitted** (orange) | The job is accepted and waiting for a Haiqu worker. A restarted job also returns here |
| **Initializing** (orange) | A worker has picked the job up and is preparing the pipeline and the backend |
| **Running** (orange) | Circuits have been sent to the backend. On a real QPU this includes the time spent in the **provider's queue**, so a job can stay here for a while |
| **Done** (green) | Finished. Results and metrics are available |
| **Error** (red) | Failed. **View Logs** shows the reason |
| **Cancelled** (grey) | Stopped before it finished |

## Metrics in the table

| Column | What it means | Better when |
| - | - | - |
| **QPU Quality** | How closely the QPU results match a classical simulation of the same circuit | Higher |
| **CPU Time** | Classical compute Haiqu spent on the job: transpilation, compression, mitigation, post-processing. This is what your [Haiqu credits](/dashboard/account#credits) pay for | Lower |
| **QPU Cost** | What the hardware provider charges for running the circuits. Estimated before the run (dotted underline), then updated to the actual cost. Paid to the provider, not from Haiqu credits | Lower |

<Note>
  **QPU Quality** is empty for circuits with 20 or more qubits: it needs a classical simulation, which is not feasible at that size. An empty value is not an error. See [Job Performance Metrics](/core_features/quality).
</Note>

## Find a job

* **Search** by name, and filter by **Type**, **Status** or **Backend**. **Haiqu OS** groups jobs that don't target a QPU or simulator, such as transpilation or variational jobs.
* Click a **Type** or **Backend** badge to filter by it. Hover over a job ID to copy it; click a name or description to edit it.

## Results and actions

The icons at the end of each row:

* **View input circuit(s)** / **View output circuit(s)**: the experiment's circuits, filtered to this job.
* **View bitstrings**: **Job Results**, the measured bitstrings and their probabilities, most likely first.
* **View observables**: for jobs that measure observables, **Job Results** shows the returned values as JSON.
* **Details**: the job details page (Run jobs).
* **…** menu: **View Logs**, **Cancel** (jobs in progress), **Restart** (jobs in **Error** or **Cancelled**), **Delete**.

Both results views have **Export to JSON**.

<Clip name="flow-job-results" alt="Opening a job's results, then its details page" />

### What Restart does

**Restart** runs the **same job again**: it keeps its ID and its original circuits, parameters and device, and goes back to **Submitted**. It is charged like a new run. To change anything — the device, shots or options — submit a new job from the SDK instead.

## Job details

The job details page shows the job's status, type, backend and experiment, followed by three sections:

* **Quantum Flow Graph**: each step of the job, from the input circuit through transpilation and error mitigation to the device. Hover over a step to see what it does.
* **Circuits**: the circuits this job ran.
* **Results: Probability vs Bitstring**: a chart of the 10 most likely outcomes. Use the download icon to export all results as JSON.

<Shot name="job" alt="Job details with Quantum Flow Graph and results chart" />

<Tip>
  Results are also available in the SDK. See [`haiqu.run`](/reference/run/run).
</Tip>

## Troubleshooting

<AccordionGroup>
  <Accordion title="The job stays in Running for a long time">
    On a real QPU, **Running** includes waiting in the provider's queue. Check the device's **Queue** and **Load (7 days)** on [Devices](/dashboard/devices); a long queue means a long wait. Cancel the job and run it on a less busy device if you can't wait.
  </Accordion>

  <Accordion title="The job ended in Error">
    Open **…** → **View Logs**: the last lines show the reason. If it was temporary, such as a provider outage, use **Restart**. If it was an authentication error (for example, an expired provider token), Restart will fail again because it reuses the job's original options: submit a new job from the SDK with valid credentials. The same applies when the circuit or options need to change.
  </Accordion>

  <Accordion title="The job is Done but shows no results or QPU Quality">
    **View bitstrings** appears only for jobs that return measurement counts; jobs that measure observables show **View observables** instead. An empty **QPU Quality** for 20 or more qubits is expected (see above).
  </Accordion>

  <Accordion title="I can't see a job I just ran">
    Check that the SDK is logged in with the API key shown on your [Dashboard home](/dashboard/home#api-key), and look under the experiment you initialized with `haiqu.init("name")`. See also [Account & Credits](/dashboard/account#troubleshooting).
  </Accordion>
</AccordionGroup>


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.