# Read a job, now or after waiting up to wait seconds while it works or waits on a person. Waiting on a party, it answers at once with the link to hand them.

URL: https://services.dev/docs/examples/lingua/api/get_job

## Read a job, now or after waiting up to wait seconds while it works or waits on a person. Waiting on a party, it answers at once with the link to hand them.

`GET /jobs/{id}` · `get_job`

Status: live

### Parameters

- `id` string · required: The job, as every answer names it.
- `wait` number: Seconds to hold the request open while the job works, at most undefined.
- `expand` array
- `Services-Version` string

### Returns

- 200 job: OK.
- 400 error: BLOCKED: version_unknown. (not captured yet)
- 401 error: BLOCKED: key_missing, key_invalid. (not captured yet)
- 404 error: EMPTY: not_found.
- 500 error: BLOCKED: api_error. (not captured yet)

### CLI

```
$ curl http://localhost:8787/jobs/job_7Hq2?wait=50
job_7Hq2 · delivered · document.fr-CA.pdf · $49.00 charged
```

### API

```
curl http://localhost:8787/jobs/job_7Hq2?wait=50
```

### MCP

```
→ tools/call get_job {"id":"job_7Hq2","wait":50}
← job_7Hq2 · delivered · document.fr-CA.pdf · $49.00 charged
```

### SDK

```
const done = await job.done()
```

### 200 job

```json
{
  "id": "job_7Hq2",
  "object": "job",
  "created": "2026-10-25T14:00:02.000Z",
  "livemode": false,
  "simulated": true,
  "service": "translation",
  "input": {
    "document": {
      "url": "https://example.com/document.pdf",
      "name": "document.pdf"
    },
    "to": "fr-CA"
  },
  "metadata": {},
  "price": {
    "usd": 49,
    "approved": false,
    "max_usd": 49
  },
  "payment": {
    "status": "charged",
    "amount_usd": 49
  },
  "human": "AI delivers every job.",
  "stage": "review",
  "steps": [
    {
      "id": "stp_1",
      "object": "step",
      "step": "draft",
      "by": "ai",
      "status": "committed",
      "hash": "sha256:21255a755ba4991ffd2799e8fdf39d0997678ced5a36fea9d9c8c10e8154bf7f"
    },
    {
      "id": "stp_2",
      "object": "step",
      "step": "review",
      "by": "ai",
      "review": "adversarial",
      "verdict": "pass",
      "status": "committed",
      "hash": "sha256:95851b48d6d0adf87f5c3d1210a3157976f66081111d2367176e5f8c92508cb2"
    }
  ],
  "next": [
    {
      "do": "accept",
      "arguments": {
        "id": "job_7Hq2"
      },
      "tool": "accept_job",
      "http": "POST http://localhost:8787/jobs/job_7Hq2/accept"
    },
    {
      "do": "send_back",
      "arguments": {
        "id": "job_7Hq2",
        "note": ""
      },
      "tool": "send_back_job",
      "http": "POST http://localhost:8787/jobs/job_7Hq2/send_back"
    }
  ],
  "status": "delivered",
  "output": {
    "document": {
      "url": "data:text/plain,Simulated%20Translation%3A%20document",
      "name": "document.fr-CA.pdf"
    }
  },
  "final_at": "2026-11-01T14:00:16.000Z"
}
```

### 404 not_found

```json
{
  "type": "EMPTY",
  "category": "invalid_request",
  "code": "not_found",
  "reason": "No job job_0000.",
  "param": "id",
  "next": null,
  "doc_url": "http://localhost:8787/docs/errors/not_found",
  "request_id": "req_c7PJaH",
  "simulated": true
}
```
