Menu
Documentation
API reference Campaign object

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.

FieldTypeDescription
idStringOpaque campaign ID.
nameStringDisplay name, 1–100 characters.
assetObjectApproved chainId, tokenAddress, symbol, and decimals.
statusEnumactive or paused.
issuanceModeEnumdisabled, canary, or live.
budgetObjectNet authorization and obligation quantities.
maximumGrantBaseUnitsPositive integer stringLargest permitted individual net allocation.
verificationEnumoff or required: whether a recipient must verify the wallet before a reward is queued. off is the v1 default.
rulesArrayThe campaign's event-type rules, possibly empty. Each has eventType, amountBaseUnits and perWalletCapBaseUnits (an integer string or null).
createdAtDate-time stringCampaign 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#

FieldTypeMeaning
authorizedBaseUnitsInteger stringTotal approved net issuance authorization.
availableBaseUnitsInteger stringRemaining authorization for new grants.
queuedBaseUnitsInteger stringAccepted and queued quantities the operator has not yet approved.
approvedBaseUnitsInteger stringApproved quantities without a verified delivery: approved, sent, or failed and awaiting a retry.
deliveredBaseUnitsInteger stringNet quantities whose transfer receipt was verified.

All values are nonnegative integer strings in the same approved asset. The accounting invariant is:

text
availableBaseUnits
+ queuedBaseUnits
+ approvedBaseUnits
+ deliveredBaseUnits
= authorizedBaseUnits

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.