> For the complete documentation index, see [llms.txt](https://docs.robinmesh.com/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.robinmesh.com/api-reference/jobs.md).

# Jobs

Each inference request you send becomes a job. Through the Jobs API you can look up where any of your jobs stands and fetch its on-chain receipt.

***

## Retrieve a job

`GET /v1/jobs/{job_id}`

```bash
curl https://api.robinmesh.com/v1/jobs/job_8fx2kp3m9qrstvwxyz \
  -H "Authorization: Bearer rmesh_live_your_key_here"
```

### Response

```json
{
  "id": "job_8fx2kp3m9qrstvwxyz",
  "object": "job",
  "status": "settled",
  "model": "qwen3-8b",
  "tier": "standard",
  "credits_charged": 8,
  "usdg_value": 0.08,
  "worker_address": "0x9d24ab7e315f68c0d1b2fa4c8e0973d65a1cbe48",
  "created_at": "2026-06-15T14:22:00Z",
  "completed_at": "2026-06-15T14:22:03Z",
  "on_chain": {
    "escrow_tx": "0x8c2f41ab9e07d3565f18c4ba20d97e631a5c08f2be49d176e0a3b58c917d24f0",
    "settlement_tx": "0x3a91d5c07f26e8b4915dc3a08e67f21b49c0d8a35e7612fb08d94ce5a172b36d",
    "escrow_address": "0x4be09d7c21f8a3565edc10b9f472ea08d3961c5b",
    "block_number": 12847293,
    "proof_hash": "sha256:a1b2c3d4e5f6..."
  },
  "usage": {
    "prompt_tokens": 48,
    "completion_tokens": 214,
    "total_tokens": 262
  }
}
```

### Job status values

| Status       | Meaning                                                                       |
| ------------ | ----------------------------------------------------------------------------- |
| `pending`    | Escrow holds the credits while the network finds a worker                     |
| `processing` | A worker has taken the job and is running inference                           |
| `settling`   | The proof landed on-chain; settlement confirmation is in progress             |
| `settled`    | Done: the worker got paid and the credits left your balance                   |
| `failed`     | Something broke before the job finished (a routing problem or a worker error) |
| `refunded`   | The 120-second timeout hit, so the credits went back to your balance          |
| `disputed`   | The client contested the result; arbitration is underway                      |

***

## List jobs

`GET /v1/jobs`

Pages through the jobs belonging to the authenticated key.

```bash
curl "https://api.robinmesh.com/v1/jobs?limit=20&status=settled" \
  -H "Authorization: Bearer rmesh_live_your_key_here"
```

### Query parameters

| Parameter | Type    | Default | Description                                             |
| --------- | ------- | ------- | ------------------------------------------------------- |
| `limit`   | integer | 20      | How many jobs to return, up to 100                      |
| `before`  | string  | none    | Cursor: only jobs created earlier than this job ID      |
| `after`   | string  | none    | Cursor: only jobs created later than this job ID        |
| `status`  | string  | none    | Restrict to one status, such as `settled` or `refunded` |
| `model`   | string  | none    | Restrict to one model ID                                |

### Response

```json
{
  "object": "list",
  "data": [...],
  "has_more": true,
  "next_cursor": "job_7ex1jo2l8pqrsuvwxy"
}
```

***

## On-chain verification

A settled job's `on_chain` object holds everything required to check the payment yourself, without taking the API's word for it.

**Verify the escrow lock:**

```
https://robinhoodchain.blockscout.com/tx/0x8c2f41ab9e07d3565f18c4ba20d97e631a5c08f2be49d176e0a3b58c917d24f0
```

In this transaction you can see the debit against your credit balance, the lock placed in the settlement contract, the recorded model tier, and the job ID.

**Verify the settlement:**

```
https://robinhoodchain.blockscout.com/tx/0x3a91d5c07f26e8b4915dc3a08e67f21b49c0d8a35e7612fb08d94ce5a172b36d
```

Here you can see the escrow being released, USDG flowing to the worker's wallet, USDG flowing to the protocol treasury, and the verified proof hash.

Whatever the API tells you about a job, Robinhood Chain holds the ground truth. The transactions themselves are the record that counts.

***

## Opening a dispute

When the proof a worker posted does not appear to match what you actually received, you have 60 seconds from the final output token to contest it.

`POST /v1/jobs/{job_id}/dispute`

```json
{
  "received_output_hash": "sha256:a1b2c3d4..."
}
```

Hash the complete response text with SHA-256 (encode as UTF-8, drop any trailing newline) and submit it. The API checks your hash against the one the worker put on-chain; a mismatch flags the job as disputed.

```json
{
  "job_id": "job_8fx2kp3m9qrstvwxyz",
  "dispute_opened": true,
  "your_hash": "sha256:a1b2c3d4...",
  "worker_hash": "sha256:e5f6g7h8...",
  "dispute_tx": "0xb47a20e9c15d38f60a92e7b40c81f5d3968a2ce70b15df4839e6a01c2d7458b9",
  "arbitration_window_hours": 24
}
```

When the two hashes agree, the response tells you so and no dispute is created.

The complete dispute and arbitration mechanics are covered in \[On-Chain Settlement]\(

\#dispute-process).


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter, and the optional `goal` query parameter:

```
GET https://docs.robinmesh.com/api-reference/jobs.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
