# Exposure

URL: /business/nouns/exposure · Id: `noun:exposure`

> An Exposure is the moment one unit meets the Variant its Flag assigned, logged with every option and its propensity.

An Exposure is the moment one unit meets the [Variant](/business/nouns/variant) its [Flag](/business/nouns/flag) assigned, logged with every option and its propensity.

## Properties
| Property | Type | Required | Description |
| --- | --- | --- | --- |
| `unit` | `string` | Yes | What was randomized: a Visitor, a Customer, a request, or an agent choice. |
| `options` | `json` | Yes | Every Variant that was possible at that moment. |
| `propensity` | `number` | Yes | The probability the assigned Variant had, kept for later estimates. |
| `at` | `datetime` | Yes | When the unit met the Variant. |
| `triggered` | `boolean` | No | True when the unit reached the point the Variant changes. |

## Object
```json
{
  "$id": "https://api.sb/patentpad.com/exposures/exposure_1",
  "$type": "Exposure",
  "unit": "Example unit",
  "options": {},
  "propensity": 1,
  "at": "2026-10-22T12:00:00Z",
  "triggered": true
}
```

## Relationships
- <a id="rel-meets"></a>An Exposure **meets** one [Variant](/business/nouns/variant): the [Variant](/business/nouns/variant) the [Flag](/business/nouns/flag) assigned to this unit. `meets`, inverse [`exposures`](/business/nouns/variant#rel-exposures).

## Verbs
| Verb | Description | Subject | Event | Class |
| --- | --- | --- | --- | --- |
| <a id="create"></a>[Exposure.create](/business/nouns/exposure/create) | Creates an Exposure. Inherited from [Noun](/business/nouns/noun). | None. | `Exposure.created` | Two-way: `try`, `send`, `do` |
| <a id="get"></a>[Exposure.get](/business/nouns/exposure/get) | Returns one Exposure by id. Inherited from [Noun](/business/nouns/noun). | None. | None. | Read: `try`, `do` |
| <a id="list"></a>[Exposure.list](/business/nouns/exposure/list) | Returns Exposures, newest first, one page at a time. Inherited from [Noun](/business/nouns/noun). | None. | None. | Read: `try`, `do` |

An Exposure is kept forever and never edited: it has no `update` or `delete`.

## Permissions
Which Access level may call each Verb. One-way Verbs wait their delay window.

| Operation | `owner` | `admin` | `member` | `viewer` |
| --- | --- | --- | --- | --- |
| `Exposure.create` | Yes | Yes | Yes | No |
| `Exposure.get` | Yes | Yes | Yes | Yes |
| `Exposure.list` | Yes | Yes | Yes | Yes |

## Call it

**Ask**

```text
Add an exposure to ShiftNote.
```

**API**

```bash
curl -X POST https://api.sb/shiftnote.app/exposures \
  -H "Authorization: Bearer $STARTUP_BUILDER_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"unit":"Example unit","options":{},"propensity":1,"at":"2026-10-22T12:00:00Z"}'
```

```json
{
  "api": "https://api.sb/shiftnote.app",
  "exposure": {
    "$id": "https://api.sb/shiftnote.app/exposures/exposure_1",
    "$type": "Exposure",
    "unit": "Example unit",
    "options": {},
    "propensity": 1,
    "at": "2026-10-22T12:00:00Z"
  },
  "action": {
    "$id": "https://api.sb/shiftnote.app/actions/action_1",
    "operation": "Exposure.create",
    "status": "done"
  },
  "links": {
    "self": "https://api.sb/shiftnote.app/actions/action_1"
  }
}
```

**SDK**

```ts
import { $ } from 'startup-builder'

const exposure = await $.Exposure.create({ unit: 'Example unit', options: {}, propensity: 1, at: '2026-10-22T12:00:00Z' })
```

**CLI**

```bash
npx startup-builder do Exposure.create --json '{"unit":"Example unit","options":{},"propensity":1,"at":"2026-10-22T12:00:00Z"}'
```

**MCP**

```json
{
  "name": "do",
  "arguments": {
    "code": "return await $.Exposure.create({ unit: 'Example unit', options: {}, propensity: 1, at: '2026-10-22T12:00:00Z' })"
  }
}
```

## Example
A [Visitor](/business/nouns/visitor) who scrolls to a tutoring site's pricing table meets its [Flag](/business/nouns/flag) split. One Exposure records both [Variants](/business/nouns/variant) as options, the challenger assigned at a propensity of 0.5.