Menu
Documentation
Getting started Overview

Overview

Issue exact token rewards for activity your application already qualifies.

Your app decides who earned what. Slices records the reward, queues it for your operator to approve, and reports each transfer.

Slices is a server API for issuing exact amounts of an approved ERC-20 token to existing wallets. Use it for rewards your application already qualifies: a completed referral, an eligible card purchase, a qualifying swap, or a calculated vault reward.

You send the recipient, the token amount, and a reference to the activity. Slices gives you a durable reward record and one consistent way to follow that instruction through your operator's approval, the transfer from their wallet, and the verified receipt.

These docs describe the v1 partner payout contract. Use the API endpoint, SDK build, campaign, and approved asset configuration supplied for your integration. Examples do not establish that a public endpoint, npm release, or production asset is available.

One integration, different reward programs#

Your backend supplies four things:

InputWhat it means
campaignIdThe approved campaign that fixes the network, token, and issuance limits.
recipient.walletAddressThe existing wallet authorized to receive this reward.
amountBaseUnitsThe exact net token quantity, expressed as an integer string.
eventYour stable, opaque reference to the qualifying activity.

Every write also uses an explicit idempotency key. Retrying an accepted instruction does not create another reward.

How it works#

text
Your backend qualifies an activity and calculates a reward
                         ↓
Slices accepts the exact allocation and returns a reward ID
                         ↓
The verified recipient's grant is queued into your open draft campaign
                         ↓
Your operator reviews the draft in the dashboard and signs one approval
                         ↓
Your operator's wallet sends each transfer, one exact transfer per reward
                         ↓
Slices verifies the receipt and marks the reward delivered

A successful issuance request is an acknowledgment, not a token transfer. Nothing moves until your operator approves the draft campaign and their wallet sends the transfer. A campaign's issuance cap is an authorization limit, not a balance in that wallet.

Who does what?#

Your applicationYour operatorSlices
Verifies activity and determines eligibility.Holds the reward tokens in their own wallet.Validates and durably records the instruction.
Identifies the authorized destination wallet.Reviews each draft campaign: recipients, exact amounts, the fee.Prevents duplicate economic issuance and enforces campaign limits.
Calculates the exact reward amount.Signs the approval and sends each transfer from that wallet.Verifies recipients, prepares each transfer, and verifies each receipt.
Defines refund, dispute, and abuse policies.Reports every reward's status and transfer evidence.

Slices holds no signing key. It never sends a token on anyone's behalf, and it does not independently verify an event because it has a particular label: referral.qualified and swap.qualified are references, not commands to run an attribution engine or blockchain indexer.

The first integration#

Start with one approved campaign, one token on one EVM chain, and existing recipient wallets. Use the TypeScript server SDK or call the HTTP API directly. Poll reward resources for status changes.

Email recipients, automatic token purchasing, dollar-to-token calculations, outgoing webhooks, and a browser-authorized payout SDK are outside this version.

Start here: Quickstart. For the exact request format, see Grant a reward. For the path from acceptance to a verified transfer, see Approval and sending. For the complete boundary, see Capabilities and limitations.