# Send a job back with a note, and the AI redoes it: a delivered one as the buyer, a waiting one as the person at the line.

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

## Send a job back with a note, and the AI redoes it: a delivered one as the buyer, a waiting one as the person at the line.

`POST /jobs/{id}/send_back` · `send_back_job`

Status: live

### Parameters

- `id` string · required: The job, as every answer names it.
- `Services-Version` string
- `Idempotency-Key` string
- `note` string · required: What to fix. The AI redoes the job with it.

### Returns

- 200 job: The same job, for a key already used.
- 202 job: The job, working. (not captured yet)
- 400 error: BLOCKED: body_invalid, version_unknown. (not captured yet)
- 401 error: BLOCKED: key_missing, key_invalid. (not captured yet)
- 404 error: EMPTY: not_found. (not captured yet)
- 409 error: BLOCKED: not_delivered, not_waiting, nothing_to_redo, key_reused.
- 500 error: BLOCKED: api_error. (not captured yet)

### CLI

```
$ npx services.dev send-back job_7Hq2 "Keep the defined terms in English."
job_7Hq2 · working · $49.00 charged
```

### API

```
curl -X POST http://localhost:8787/jobs/job_7Hq2/send_back \
  -H 'content-type: application/json' \
  -d '{"note":"Keep the defined terms in English."}'
```

### MCP

```
→ tools/call send_back_job {"id":"job_7Hq2","note":"Keep the defined terms in English."}
← job_7Hq2 · working · $49.00 charged
```

### SDK

```
await job.sendBack('Keep the defined terms in English.')
```

### 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": "working",
      "hash": "sha256:21255a755ba4991ffd2799e8fdf39d0997678ced5a36fea9d9c8c10e8154bf7f"
    },
    {
      "id": "stp_2",
      "object": "step",
      "step": "review",
      "by": "ai",
      "review": "adversarial",
      "status": "pending",
      "hash": "sha256:95851b48d6d0adf87f5c3d1210a3157976f66081111d2367176e5f8c92508cb2"
    }
  ],
  "next": [
    {
      "do": "get",
      "arguments": {
        "id": "job_7Hq2"
      },
      "tool": "get_job",
      "http": "GET http://localhost:8787/jobs/job_7Hq2?wait=50"
    },
    {
      "do": "cancel",
      "arguments": {
        "id": "job_7Hq2"
      },
      "tool": "cancel_job",
      "http": "POST http://localhost:8787/jobs/job_7Hq2/cancel"
    }
  ],
  "status": "working"
}
```

### 409 not_delivered

```json
{
  "type": "BLOCKED",
  "category": "conflict",
  "code": "not_delivered",
  "reason": "Only a delivered job can be accepted or sent back.",
  "next": {
    "do": "get",
    "arguments": {
      "id": "job_7Hq8"
    },
    "tool": "get_job",
    "http": "GET http://localhost:8787/jobs/job_7Hq8?wait=50"
  },
  "doc_url": "http://localhost:8787/docs/errors/not_delivered",
  "request_id": "req_lgAu1u",
  "simulated": true
}
```
