Skip to main content
GET /api/v2/storefront/proposals/{id} Returns a single proposal by its numeric row id, including the snapshot — the frozen products[] and proposals[] the buyer receives when they redeem the code. Use this to confirm exactly what offer is bound to a code before sharing it, or to inspect view and redemption state.

Request

curl "https://api.interchange.io/api/v2/storefront/proposals/318" \
  -H "Authorization: Bearer $SCOPE3_API_KEY"

Parameters

ParamTypeRequiredNotes
idintegerYesProposal row ID (path parameter)

Response

{
  "id": 318,
  "proposalCode": "PRP-XK4A29",
  "operatorId": "acme",
  "label": "Acme Q3 RFP — CTV",
  "notes": "Offline RFP follow-up; honors the upfront rate.",
  "status": "active",
  "expiresAt": "2026-09-30T23:59:59Z",
  "proposalId": "proposal_abc123",
  "discoverySessionId": "disc_a1b2c3",
  "snapshot": {
    "products": [
      { "productId": "prod_123", "name": "Premium CTV — Sports" }
    ],
    "proposals": [
      { "proposalId": "proposal_abc123" }
    ]
  },
  "createdAt": "2026-06-07T15:00:00Z",
  "createdBy": "seller@acme-media.example.com",
  "firstViewedAt": "2026-06-08T09:12:00Z",
  "lastViewedAt": "2026-06-08T09:14:00Z",
  "redeemedAt": null,
  "redeemedInMediaBuyId": null
}
snapshot.products and snapshot.proposals are the frozen offer. firstViewedAt and lastViewedAt track buyer views; redeemedAt and redeemedInMediaBuyId are populated once the buyer applies the code to a media buy.

Errors

  • 404 NOT_FOUND — no proposal with that id is visible to the authenticated seller.
See Errors for the full error contract.

Proposal tasks

All proposal operations

List proposals

Find the proposal ID

Update proposal

Edit label, notes, or expiry

Revoke proposal

Withdraw a code before redemption