---
title: "Read an offer and its capture disclosure"
description: "Read a configured welcome offer before an explicit guest submission. Requires a TEST server credential with offers.read and an exact collection-owned STAGING origin registered on the installation. DRAFT offers are available for TEST rehearsal without enabling production. Only immediate lead-capture awards with an email template are supported."
---

`GET /v1/developer/collections/{collection}/offers/{offerId}`

**Operation ID:** `getDeveloperOffer`

Read a configured welcome offer before an explicit guest submission. Requires a TEST server credential with offers.read and an exact collection-owned STAGING origin registered on the installation. DRAFT offers are available for TEST rehearsal without enabling production. Only immediate lead-capture awards with an email template are supported.

## Contract status

| Field | Value |
| --- | --- |
| Maturity | `preview` |
| Required capability | `offers.read` |
| Freshness class | `authenticated-state` |
| Quota cost | `1` |

All operations require a Kismet Developer Bearer credential. Collection and resource authority is resolved from the credential's installation grants; identifiers in the URL never grant access.

## Request parameters

| Name | In | Type | Required | Description |
| --- | --- | --- | --- | --- |
| `collection` | path | string | yes |  |
| `offerId` | path | string | yes |  |
| `origin` | header | string | yes |  |

## Request body

This operation has no JSON request body.

## cURL

Set `KISMET_API_ORIGIN=https://api.ksmt.app` and configure `KISMET_DEVELOPER_API_KEY` in your environment. Run server-credential requests from your backend, not browser code.

```sh
curl --request GET \
  "$KISMET_API_ORIGIN/v1/developer/collections/example-collection/offers/{offerId}" \
  --header "Authorization: Bearer $KISMET_DEVELOPER_API_KEY" \
  --header "Accept: application/json" \
  --header "origin: $KISMET_SITE_ORIGIN"
```

## Responses

| Status | Meaning |
| --- | --- |
| 200 | Success. |
| 400 | Invalid request parameters or body. |
| 401 | Missing, invalid, expired, or inappropriate credential/session. |
| 403 | Credential lacks the required grant/capability, or an origin/CSRF check failed. |
| 404 | The authorized resource was not found. |
| 409 | Request conflicts with the installation environment or current state. |
| 429 | Rate limit or quota exceeded; inspect response metadata before retrying. |
| 503 | A required Kismet dependency is temporarily unavailable. |

### 200 response example

```json
{
  "id": "11111111-1111-4111-8111-111111111111",
  "environment": "TEST",
  "headline": "A welcome offer",
  "promise": "Enjoy an experience during your stay.",
  "terms": null,
  "disclosure": {
    "version": "staging-offer-email-v1",
    "text": "Send me this offer by email. This staging test sends one real email; it does not subscribe me to marketing or enroll me in a membership.",
    "hash": "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
  },
  "delivery": {
    "email": "real",
    "subjectPrefix": "[STAGING]"
  }
}
```

### 200 response schema

Content type: `application/json`. Required fields, nullable values, and nested structures are defined below.

<details>
<summary>View complete response schema</summary>

```json
{
  "type": "object",
  "additionalProperties": false,
  "required": [
    "id",
    "environment",
    "headline",
    "promise",
    "terms",
    "disclosure",
    "delivery"
  ],
  "properties": {
    "id": {
      "type": "string",
      "format": "uuid",
      "description": "Canonical offer identifier. Equals perkId on the authenticated guest account benefit for this offer. Match within the same collection and environment; a catalog offer is not proof of a personal award."
    },
    "environment": {
      "type": "string",
      "enum": [
        "TEST"
      ]
    },
    "headline": {
      "type": "string"
    },
    "promise": {
      "type": "string"
    },
    "terms": {
      "type": [
        "null",
        "string"
      ]
    },
    "disclosure": {
      "type": "object",
      "additionalProperties": false,
      "required": [
        "version",
        "text",
        "hash"
      ],
      "properties": {
        "version": {
          "type": "string"
        },
        "text": {
          "type": "string"
        },
        "hash": {
          "type": "string"
        }
      }
    },
    "delivery": {
      "type": "object",
      "additionalProperties": false,
      "required": [
        "email",
        "subjectPrefix"
      ],
      "properties": {
        "email": {
          "type": "string",
          "enum": [
            "real"
          ]
        },
        "subjectPrefix": {
          "type": "string",
          "enum": [
            "[STAGING]"
          ]
        }
      }
    },
    "deliveryDisclosure": {
      "type": "object",
      "additionalProperties": false,
      "required": [
        "version",
        "text",
        "hash"
      ],
      "properties": {
        "version": {
          "type": "string"
        },
        "text": {
          "type": "string"
        },
        "hash": {
          "type": "string"
        }
      }
    }
  }
}
```

</details>

## Machine-readable sources

- [This page as Markdown](/api/reference/get-developer-offer.md)
- [Developer API OpenAPI v0.7.25](/openapi.json)
