# Play Mix

URL: /business/nouns/play-mix · Id: `noun:play-mix`

> A Play Mix is the set of Plays a Startup runs this week, each with its state, budget and stop rule, compiled weekly and versioned.

A Play Mix is the set of [Plays](/business/nouns/play) a [Startup](/business/nouns/startup) runs this week, each with its state, budget and stop rule, compiled weekly and versioned.

## Properties
| Property | Type | Required | Description |
| --- | --- | --- | --- |
| `version` | `integer` | Yes | The version number; each weekly compile that changes a Play’s state or budget adds one. |
| `plays` | `json` | Yes | Each Play with its state (`gated`, `running` or `paused`), its monthly budget, its stop rule and its payback last week. |
| `gates` | `json` | No | Each gate: the Metric and threshold that opens it, and the Plays it opens. |
| `crossover` | `string` | No | The reading that ends seed mode, such as compounding share at 50 percent for 4 weeks. |
| `diff` | `text` | No | What changed from the previous version, one line per Play, with the reading that moved it. |
| `from` | `string` | No | Lineage: the slot it compiles from, as `Hypothesis#<slot>@v<version>`. |
| `compiledAt` | `datetime` | Yes | When the compile ran. |

## Object
```json
{
  "$id": "https://api.sb/routewise.dev/play-mixes/play_mix_1",
  "$type": "PlayMix",
  "version": 1,
  "plays": {},
  "gates": {},
  "crossover": "Example crossover",
  "diff": "Example diff",
  "from": "Hypothesis#approach@v1",
  "compiledAt": "2026-10-22T12:00:00Z"
}
```

## Relationships
- <a id="rel-allocates"></a>A Play Mix **allocates** one [Demand Budget](/business/nouns/demand-budget): each Play Mix version splits one [Demand Budget](/business/nouns/demand-budget) across its paid [Plays](/business/nouns/play). `allocates`, inverse [`allocatedBy`](/business/nouns/demand-budget#rel-allocated-by).
- <a id="rel-runs"></a>A Play Mix **runs** many [Plays](/business/nouns/play): a Play Mix names each [Play](/business/nouns/play) the [Startup](/business/nouns/startup) runs this week, with its state, budget and stop rule. `runs`, inverse [`includedIn`](/business/nouns/play#rel-included-in).
- <a id="rel-startup"></a>A Play Mix **has** one [Startup](/business/nouns/startup): a [Startup](/business/nouns/startup) compiles one Play Mix version a week and keeps every earlier version for the diff. `startup`, inverse [`compiles`](/business/nouns/startup#rel-compiles).

## Verbs
| Verb | Description | Subject | Event | Class |
| --- | --- | --- | --- | --- |
| [PlayMix.compile](/business/nouns/play-mix/compile) | Compile builds the next Play Mix from the Demand Budget, each Play’s ledger and last week’s Acquisitions, and records the diff. | [Marketing Lead](/agents/marketing/marketing-lead) | [`PlayMix.compiled`](/business/events/PlayMix.compiled) | Two-way: `try`, `send`, `do` |
| <a id="get"></a>[PlayMix.get](/business/nouns/play-mix/get) | Returns one Play Mix by id. Inherited from [Noun](/business/nouns/noun). | None. | None. | Read: `try`, `do` |
| <a id="list"></a>[PlayMix.list](/business/nouns/play-mix/list) | Returns Play Mixes, newest first, one page at a time. Inherited from [Noun](/business/nouns/noun). | None. | None. | Read: `try`, `do` |

A Play Mix 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` |
| --- | --- | --- | --- | --- |
| `PlayMix.get` | Yes | Yes | Yes | Yes |
| `PlayMix.list` | Yes | Yes | Yes | Yes |
| `PlayMix.compile` | Yes | Yes | Yes | No |

## Call it

**Ask**

```text
Compile the latest play mix with a startup.
```

**API**

```bash
curl -X POST https://api.sb/routewise.dev/play-mixes/compile \
  -H "Authorization: Bearer $STARTUP_BUILDER_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"startup":"startup_1"}'
```

```json
{
  "api": "https://api.sb/routewise.dev",
  "playMix": {
    "$id": "https://api.sb/routewise.dev/play-mixes/play_mix_1",
    "$type": "PlayMix",
    "version": 1,
    "plays": {},
    "compiledAt": "2026-10-22T12:00:00Z"
  },
  "action": {
    "$id": "https://api.sb/routewise.dev/actions/action_1",
    "operation": "PlayMix.compile",
    "status": "done"
  },
  "links": {
    "self": "https://api.sb/routewise.dev/actions/action_1"
  }
}
```

**SDK**

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

const playMix = await $.PlayMix.compile({ startup: 'startup_1' })
```

**CLI**

```bash
npx startup-builder do PlayMix.compile --json '{"startup":"startup_1"}'
```

**MCP**

```json
{
  "name": "do",
  "arguments": {
    "code": "return await $.PlayMix.compile({ startup: 'startup_1' })"
  }
}
```

## Example
In week six, a bookkeeping-agent Startup compiles Play Mix version 7 against a $1,000 [Demand Budget](/business/nouns/demand-budget). The diff pauses cold email at 0.6 percent positive replies and raises paid search from $850 to $1,000 at a 31-day payback. Answer engine pages and directory listings keep running at $0.