# Submit a deferred report

> Attach the signals an SDK collects after its initial budget to an identification that has already been answered.

Last updated: 2026-09-17

```http
POST /api/v1/events/{request_id}/supplement
```

Authentication: Public key (`x-api-key: fly_pk_…`)

Some signals take longer to read than the initial collection budget allows. The browser SDK sends them afterwards with this endpoint. A deferred report is archived with the event and returned as `deferred_signals` by [Get an event](https://docs.fingerly.io/reference/get-event). It never changes the visitor ID, the score, billing or webhooks.

> **Note:** The JavaScript SDK sends deferred reports automatically. You do not need to call this endpoint.

**Path parameters**

- `request_id` (string, required): The `request_id` from the identify response.

**Body**

- `token` (string, required): The `deferred_token` from the identify response. Valid for 24 hours, for the same key and origin.
- `sdk` (object, required): The SDK's `platform` and `version`.
- `signals` (object, required): The deferred-tier report. Produced by the SDK.

## Response

`202 Accepted`:

- `request_id` (string): The request the report was attached to.
- `duplicate` (boolean): `true` when this exact report was already accepted. Omitted otherwise.

Deferred reports are free.

## Errors

| Status | Code | When |
| --- | --- | --- |
| `409` | `supplement_conflict` | A different report was already accepted for this request. |
| `422` | `invalid_supplement` | The token is invalid, expired or for another request, or the report is not a deferred report. |
| `422` | `invalid_request_id` | The path is not a Fingerly request ID. |
| `503` | `service_unavailable` | The report could not be accepted just now. |

## Example request

```bash cURL
curl -X POST "https://us.api.fingerly.io/api/v1/events/01a0a84b-e6a2-7c09-9f51-0b3d7a26c8e4/supplement" \
  -H "Content-Type: application/json" \
  -H "x-api-key: fly_pk_us_production_…" \
  -H "Origin: https://shop.example.com" \
  -d '{
    "token": "v1.eyJyZXF1ZXN0X2lkIjoi….…",
    "sdk": { "platform": "web", "version": "0.1.0" },
    "signals": { "tiers": ["deferred"], "…": "…" }
  }'
```

## Example response

```json 202
{
  "request_id": "01a0a84b-e6a2-7c09-9f51-0b3d7a26c8e4"
}
```

```json 409
{
  "error": {
    "code": "supplement_conflict",
    "message": "a different deferred report was already accepted",
    "status": 409
  },
  "request_id": "01a0a84c-0f11-7a3e-9c2d-4b5e6f708192"
}
```
