Skip to main content
A storefront proposal captures a discover-products response, binds it to a buyer (operator), and mints a short, shareable proposalCode. The seller runs discovery, picks the proposal they want to extend, and saves it; the buyer later redeems the code on discover_products to receive the exact frozen offer. The saved snapshot — products and proposals — does not change after creation, so the offer the buyer sees is the offer the seller approved. Proposals move through a lifecycle: active (available to redeem), redeemed (the buyer applied it to a media buy), expired (past its TTL), and revoked (the seller withdrew it). You set an expiresAt on creation; you can edit the label, notes, or expiry while it is open, and revoke it to pull it back. All examples use the storefront base URL:
https://api.interchange.io/api/v2/storefront
Authenticate every request with Authorization: Bearer $SCOPE3_API_KEY.

Task reference

Create proposal

POST /proposals — freeze a discovery offer and mint a code

List proposals

GET /proposals — all proposals, filterable by status and operator

Get proposal

GET /proposals/{id} — one proposal with its saved snapshot

Update proposal

PATCH /proposals/{id} — edit label, notes, or expiry

Revoke proposal

POST /proposals/{id}/revoke — withdraw a code so it can’t be redeemed