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

# Stack configuration

> Stack fields, allocation validation, schedules, and response types.

A stack is a reusable strategy configuration.
Creation publishes it immediately.
Each saved revision contains its complete name, allocation, and schedule.

## Request fields

| Field                        | Type         | Create             | Update                             | Rules                                                                     |
| ---------------------------- | ------------ | ------------------ | ---------------------------------- | ------------------------------------------------------------------------- |
| `name`                       | string       | Required           | Optional                           | Must contain non-whitespace text. Must not contain U+0000.                |
| `allocation`                 | object array | Required           | Optional                           | At least one supported token. Replaces the full allocation when supplied. |
| `allocation[].token_address` | string       | Required per entry | Required per entry                 | Supported 20-byte EVM token address.                                      |
| `allocation[].weight_bps`    | integer      | Required per entry | Required per entry                 | From `0` through `10000`, inclusive.                                      |
| `schedule`                   | object       | Required           | Optional                           | Contains only `preset`.                                                   |
| `schedule.preset`            | string       | Required           | Required if `schedule` is supplied | `hourly`, `daily`, `weekly`, or `monthly`.                                |

An update must include at least one of `name`, `allocation`, or `schedule`.
Omitted fields retain their saved values.
`null` is not an accepted value for these fields.
Unknown fields are rejected at every level.
Do not send `id`, `current_revision_id`, `manager_id`, `manager_name`, token symbols, or market data in a write body.

Accepted names are preserved exactly.
This includes leading and trailing whitespace.
There is no separate name-length limit within the request body size limit.

## Allocations

Use addresses from the [supported asset list](/api-reference/assets).
Send lowercase addresses or correctly checksummed EVM addresses.
Responses normalize addresses to lowercase and sort entries by token address.

All weights must sum to exactly `10000`.
For example, `6000` and `4000` represent 60% and 40%.
Weights must be JSON integers, not strings or fractions.
Zero-weight entries are allowed.
Duplicate token addresses are rejected after lowercase normalization.

```json theme={null}
{
  "name": "Example stack",
  "allocation": [
    {
      "token_address": "0x117cc2133c37b721f49de2a7a74833232b3b4c0c",
      "weight_bps": 6000
    },
    {
      "token_address": "0xd0601ce157db5bdc3162bbac2a2c8af5320d9eec",
      "weight_bps": 4000
    }
  ],
  "schedule": {
    "preset": "daily"
  }
}
```

This example illustrates the request format.

## Schedules

The API validates and saves one of the four presets below.
The UTC boundaries describe the planned execution contract.
Automated scheduled trading is still being built.

| Preset    | UTC due boundary                               |
| --------- | ---------------------------------------------- |
| `hourly`  | Minute zero of each hour.                      |
| `daily`   | 00:00 each day.                                |
| `weekly`  | 00:00 each Monday.                             |
| `monthly` | 00:00 on the first day of each calendar month. |

Custom times, cron expressions, and timezone fields are not accepted.
In the planned workflow, a schedule change selects the first future boundary of the new preset.
It creates no catch-up run.
An allocation-only update preserves the saved schedule.

<Note>
  The Manager API saves schedule configuration. It does not execute trades. A
  saved configuration or due boundary does not confirm that subscriber trades
  have settled.
</Note>

## Stack response

Create, single-stack read, and update return this object directly.
Each item in a list response has the same shape.

| Field                 | Type         | Meaning                                                           |
| --------------------- | ------------ | ----------------------------------------------------------------- |
| `id`                  | UUID string  | Stable stack identifier.                                          |
| `current_revision_id` | UUID string  | Identifier of the returned configuration revision.                |
| `name`                | string       | Exact saved name.                                                 |
| `allocation`          | object array | Full normalized allocation with `token_address` and `weight_bps`. |
| `schedule`            | object       | Saved `preset`.                                                   |

```json theme={null}
{
  "id": "bf4bc5e9-0d9e-454c-bc1c-30abc120b074",
  "current_revision_id": "e137435f-83ce-4b3c-86ae-75d6462487b6",
  "name": "Example stack",
  "allocation": [
    {
      "token_address": "0x117cc2133c37b721f49de2a7a74833232b3b4c0c",
      "weight_bps": 6000
    },
    {
      "token_address": "0xd0601ce157db5bdc3162bbac2a2c8af5320d9eec",
      "weight_bps": 4000
    }
  ],
  "schedule": {
    "preset": "daily"
  }
}
```

Single-stack responses also include:

```http theme={null}
ETag: "e137435f-83ce-4b3c-86ae-75d6462487b6"
```

The object contains configuration only.
It does not include subscriber identities, balances, performance, or trade status.
