Skip to main content
Base URL: https://api.chipipay.com/v1

POST /gifts

Create a redeemable gift code. Credits are held from your org balance. Auth: Authorization: Bearer sk_... or x-api-key: pk_... Cost: No per-call fee. Credits held = amount × maxRedeems + gas estimate.
cctpFast (fast vs standard CCTP for Solana redeems) is not configurable on single-create today. The Gift row defaults to cctpFast: true server-side. To override, use POST /gifts/bulk (which does accept cctpFast in the request body) or the dashboard’s bulk-airdrop flow.

POST /gifts/bulk

Create multiple gift codes + send claim emails. One gift per recipient. Auth: Authorization: Bearer sk_... or x-api-key: pk_... Max: 500 recipients per batch.
Each recipient receives an email with a “Claim Your Gift” button linking to the claim page. Codes are auto-generated (8-char uppercase) unless you provide a custom code.

GET /gifts/claim/:code

Validate a gift code. No auth required — the code is the credential. Used by the claim page to show “You received $5 USDC from Org Name” before the user enters their wallet.
Response (200)
Invalid codes return:
Returns { "valid": false, "reason": "Gift has expired" } if the code is invalid.

POST /gifts/claim/:code/redeem

Redeem a gift code — sends USDC to the provided wallet address. No auth required.
Starknet response (201):
Solana response (202):

GET /gifts/claim/:code/status/:redeemId

Poll cross-chain redeem status. No auth required.
Status flow: PENDING → BRIDGING → ATTESTED → SUCCESS If FAILED: the Starknet burn tx is in cctpBurnTxHash — the funds may still be recoverable.

GET /gifts

List all gift codes for your org. Auth: Required (sk_/pk_)

PATCH /gifts/:id

Update a gift (toggle active, change name, expiry). Auth: Required (sk_/pk_)

DELETE /gifts/:id

Delete a gift and release held credits. Auth: Required (sk_/pk_)

Error handling