> ## Documentation Index
> Fetch the complete documentation index at: https://docs.encorekit.com/llms.txt
> Use this file to discover all available pages before exploring further.

# POST /offers/impressions/{impressionUid}/delivered

> Endpoint contract for POST /offers/impressions/{impressionUid}/delivered: confirm that a fetched offer was actually shown to the user.

Records that a previously fetched offer was actually shown to the end user, confirming its impression. The delivered confirmation is what records an offer as seen; fetching the feed is only the served baseline.

```http theme={null}
POST https://api.encorekit.com/encore/publisher/sdk/v1/offers/impressions/{impressionUid}/delivered
```

<Note>
  Call this once per offer, at the moment it becomes visible. The impression model (served vs delivered) is explained in the [overview](/publishers/offers-api/overview#the-impression-model); the render-then-confirm discipline is walked through in the [Rewarded Actions guide](/publishers/offers-api/guides/rewarded-actions).
</Note>

## Authentication

Pass your publishable key in the `X-API-Key` header (`pk_live_*` for production, `pk_test_*` for development). Multi-app projects also send `X-Platform: api`. A `delivered` call against a test key is accepted but not tracked. Full model: [overview's Authentication section](/publishers/offers-api/overview#authentication).

## Request

### Path parameters

| Parameter       | Type | Description                                                                                                                                                |
| --------------- | ---- | ---------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `impressionUid` | UUID | The per-offer `impressionUid` returned by [`POST /offers/feed`](/publishers/offers-api/reference/feed#response). Must be a UUID; anything else is a `400`. |

### Structure

```typescript theme={null}
interface DeliveredRequest {
  deliveredTimestamp: number;  // required: Unix SECONDS when the offer was shown
  readTimestamp?: number;      // Unix seconds; messaging surfaces with read receipts only
}
```

### Field Reference

| Field                | Type    | Required | Description                                                                                                                                                                  |
| -------------------- | ------- | -------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `deliveredTimestamp` | integer | Yes      | Unix time in **seconds** at the moment the offer was shown to the user. Positive integer.                                                                                    |
| `readTimestamp`      | integer | No       | Unix time in seconds when the message carrying the offer was read. Exists for messaging-surface integrations that receive a separate read receipt; feed integrators omit it. |

## Response

Success is a `202` with:

```json theme={null}
{ "success": true }
```

Repeated confirmations for the same `impressionUid` are accepted (each returns `202`) but are not guaranteed to be deduplicated. Send one `delivered` call per offer per render, retrying only calls that clearly failed (network error, non-2xx).

## Example

```bash theme={null}
curl --location --request POST \
  'https://api.encorekit.com/encore/publisher/sdk/v1/offers/impressions/550e8400-e29b-41d4-a716-446655440000/delivered' \
  --header 'X-API-Key: YOUR_API_KEY' \
  --header 'Content-Type: application/json' \
  --data "{ \"deliveredTimestamp\": $(date +%s) }"
# 202 { "success": true }
```

## Status codes

| Code  | Meaning                                                                                                                                            |
| ----- | -------------------------------------------------------------------------------------------------------------------------------------------------- |
| `202` | Accepted. The impression is recorded.                                                                                                              |
| `400` | Missing or malformed body (`deliveredTimestamp` absent or not a positive integer), or `impressionUid` is not a UUID. Don't retry; fix the request. |
| `401` | Missing or invalid `X-API-Key`.                                                                                                                    |
| `5xx` | Encore-side failure. Retry with backoff.                                                                                                           |

## Related

* [`POST /offers/feed`](/publishers/offers-api/reference/feed): where each offer's `impressionUid` comes from.
* [Rewarded Actions guide](/publishers/offers-api/guides/rewarded-actions): when and how to fire the confirmation.
* [API Reference overview](/publishers/offers-api/overview#the-impression-model): the served vs delivered split.
