Campaign object
The approved configuration and quantity-accounting representation of a campaign.
A Campaign identifies the approved reward asset and the controls applied to new instructions. The public API exposes the resource for reading; campaign creation and configuration are operator-managed.
Fields#
Every field below is required in a campaign response.
| Field | Type | Description |
|---|---|---|
id | String | Opaque campaign ID. |
name | String | Display name, 1–100 characters. |
asset | Object | Approved chainId, tokenAddress, symbol, and decimals. |
status | Enum | active or paused. |
issuanceMode | Enum | disabled, canary, or live. |
budget | Object | Net authorization and obligation quantities. |
maximumGrantBaseUnits | Positive integer string | Largest permitted individual net allocation. |
verification | Enum | off or required: whether a recipient must verify the wallet before a reward is queued. off is the v1 default. |
rules | Array | The campaign's event-type rules, possibly empty. Each has eventType, amountBaseUnits and perWalletCapBaseUnits (an integer string or null). |
createdAt | Date-time string | Campaign creation time. |
A rule prices one event type: a grant for that type may omit amountBaseUnits and take the rule's amount, and the per-wallet cap bounds what one wallet can earn from that type in this campaign. Rules are set in the dashboard. The schema does not contain price feeds, the operator's wallet balance, or a mutable asset selection.
Budget fields#
| Field | Type | Meaning |
|---|---|---|
authorizedBaseUnits | Integer string | Total approved net issuance authorization. |
availableBaseUnits | Integer string | Remaining authorization for new grants. |
queuedBaseUnits | Integer string | Accepted and queued quantities the operator has not yet approved. |
approvedBaseUnits | Integer string | Approved quantities without a verified delivery: approved, sent, or failed and awaiting a retry. |
deliveredBaseUnits | Integer string | Net quantities whose transfer receipt was verified. |
All values are nonnegative integer strings in the same approved asset. The accounting invariant is:
Used authorization can be derived as authorizedBaseUnits - availableBaseUnits, using integer arithmetic. It is not a separate field in this API.
What changes the accounts?#
Acceptance decreases available capacity and increases queued obligations. The operator's approval moves the corresponding amount from queued to approved obligations. A verified transfer receipt moves it from approved obligations to delivered quantity.
A cancellation before approval returns its quantity to available capacity once, and so does a draft campaign closed with the transfer unsent. Delivery does not replenish capacity. The Slices fee is accounted for outside these recipient-net obligation fields.
A reviewed additional authorization, where supported by the operator workflow, changes the approved total with an audit record. It is not triggered by a wallet deposit or an ordinary partner API call.
Status is not a single launch switch#
active means the campaign is not paused for new issuance. issuanceMode determines the approved stage. A campaign in canary mode can distribute real tokens within the canary controls; it is not a harmless demo flag.
A paused campaign remains readable and reconcilable. Its historical rewards are not erased or cancelled by changing campaign status.
A campaign versus a draft campaign#
This object represents the continuing program. Underneath it, Slices keeps at most one open draft campaign at a time: accepted grants queue into it, the operator approves it and sends its transfers, and the next grant opens the next draft. A reward's payoutCampaignId names the draft it was queued into; draft campaigns have no resource of their own in this API.
Related: Campaigns, Funding and budgets, and Get a campaign.