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

# Jobs

Every inference request you send becomes a job. The Jobs API tells you where any job stands and hands you its on-chain receipt.

***

## Retrieve a job

`GET /v1/jobs/{job_id}`

```bash
curl https://api.robincompute.org/v1/jobs/job_8fx2kp3m9qrstvwxyz \
  -H "Authorization: Bearer rcompute_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 took 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; 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 that belong to the authenticated key.

```bash
curl "https://api.robincompute.org/v1/jobs?limit=20&status=settled" \
  -H "Authorization: Bearer rcompute_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 before this job ID          |
| `after`   | string  | none    | Cursor: only jobs created after this job ID           |
| `status`  | string  | none    | Filter to one status, such as `settled` or `refunded` |
| `model`   | string  | none    | Filter 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 you need to verify the payment yourself. You never have to take the API's word for it.

**Verify the escrow lock:**

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

This transaction shows 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
```

This one shows the escrow releasing, USDG landing in the worker's wallet, USDG going to the protocol treasury, and the verified proof hash.

Whatever the API tells you about a job, Robinhood Chain holds the ground truth. If the two ever disagree, the record wins.

***

## Opening a dispute

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

`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 compares your hash to the one the worker put on-chain. A mismatch marks the job 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 says so and no dispute opens.

The complete dispute and arbitration mechanics live 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.robincompute.org/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.
