Cancel a reward
Cancel a reward before your operator approves it, without erasing its history.
Cancellation stops a reward before your operator approves it. It restores authorized issuance capacity once and preserves the original reward and event history.
Endpoint#
rewardId is the existing Slices reward ID. reason is required and must be 1–256 characters. Use a useful operational explanation without personal information. The idempotency key follows the same format as issuance keys and is supplied in the header.
TypeScript#
Response#
A successful cancellation returns 200 OK and the current reward:
All addresses, IDs, amounts, and timestamps in this example are synthetic. TST on chain 31337 is a local test profile, not an available production asset.
A repeated successful cancellation is harmless; capacity is not restored twice. Reuse the original cancellation key and reason when recovering an uncertain response. Reusing that key for different content can produce IDEMPOTENCY_CONFLICT.
The cancellation boundary#
Only an accepted or queued reward is eligible. Cancellation and the operator's approval use a single transactional decision: either cancellation wins and the grant leaves the draft campaign, or the approval wins and cancellation is rejected.
A reward already approved, sent, delivered, or failed returns 409 INVALID_STATE. A declined wallet request or a reverted transfer does not make an approved reward cancellable again: the operator can retry it, or close the draft campaign, which cancels its unsent transfers from their side.
The API does not implement refunds, clawbacks, edits, or a “force cancel” override.
Replacing a cancelled allocation#
The cancelled event remains deduplicated. Do not expect a new idempotency key to revive it. If your business policy authorizes a corrected allocation, create a deliberate new event identity and persist the connection to the original in your own audit records.
Do not issue the replacement until cancellation of the original is confirmed. A timeout is not a confirmed cancellation.
Pausing is different#
Pausing a campaign blocks new issuance. It does not cancel existing rewards, withdraw an approval, or recall tokens. Handle each eligible cancellation explicitly, then coordinate any sending hold with the operator.
Related: Reward states, Idempotency, and Funding and budgets.