---
title: "A tool run completed and the result file is ready"
method: POST
path: "file.processed"
tags: ["Webhooks"]
---

# A tool run completed and the result file is ready

`POST file.processed` (webhook)

Fires when any tool-run job finishes successfully. The `data`
block carries the output file ID + download URL. Retries: 3
attempts with exponential backoff (1m, 5m, 25m). Treat 2xx as
success; any other status triggers retry.

## Payload

- object: Common envelope every webhook delivery uses. `data` is the per-event payload — branch on `type` to know its shape. Signature header: `X-JE-Signature: t=<unix>,v1=<hex>` computed as HMAC-SHA256 over `t + "." + raw_body`. Reject deliveries whose `t` is more than 5 minutes from your server clock.
  - `api_version` string
  - `created` integer, required: Unix seconds.
  - `data` object, required: Event-specific payload (see schemas below).
    - `duration_ms` integer
    - `file_id` string
    - `result_url` string, uri
    - `size_bytes` integer
    - `tool` string
  - `id` string, uuid, required
  - `type` 'file.processed', required

## Acknowledgement `200`

Acknowledged. We will not retry.

## Other responses

- `4XX`: Permanent failure on your side. We will not retry.
- `5XX`: Transient failure. We will retry per the backoff schedule.

---

[API](https://skmtc.dev/johnsessentials/apis/john-s-essentials-api.md) · [All operations](https://skmtc.dev/johnsessentials/apis/john-s-essentials-api/llms.txt) · [OpenAPI document](https://skmtc.dev/johnsessentials/apis/john-s-essentials-api/revisions/56586ff78e6d?raw)
