Skip to main content
GET /api/v2/storefront/proposals Returns the proposals the seller has created, as compact summary rows. Filter by lifecycle status or by buyer operatorId, and page with limit and offset. Summary rows omit the frozen snapshot — call Get proposal when you need the saved products and proposals.

Request

curl "https://api.interchange.io/api/v2/storefront/proposals?status=active&limit=20" \
  -H "Authorization: Bearer $SCOPE3_API_KEY"

Parameters

ParamTypeRequiredNotes
statusenumNoFilter by lifecycle status: active, redeemed, expired, or revoked
operatorIdstringNoFilter by buyer operator (1..255 chars)
limitintegerNoPage size (default 20, max 100)
offsetintegerNoRows to skip (default 0)

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",
    "createdAt": "2026-06-07T15:00:00Z",
    "createdBy": "seller@acme-media.example.com",
    "firstViewedAt": null,
    "lastViewedAt": null,
    "redeemedAt": null,
    "redeemedInMediaBuyId": null
  }
]
The endpoint returns a JSON array of summary rows (offset-paginated via limit/offset). Each row omits the snapshot field; fetch one proposal by id to read the frozen offer. See Pagination for the full meta block.

Errors

  • 400 VALIDATION_ERROR — invalid status value or out-of-range limit/offset.
See Errors for the full error contract.

Proposal tasks

All proposal operations

Get proposal

Read one proposal with its snapshot

Create proposal

Freeze a discovery offer and mint a code

Proposals overview

Lifecycle and concepts