Skip to main content
PATCH /api/v2/storefront/proposals/{id} Updates the editable fields of a proposal — label, notes, or expiresAt. The frozen snapshot, operatorId, and proposalCode are immutable; this operation only changes seller-side metadata and the expiry window. Send only the fields you want to change.

Request

curl -X PATCH https://api.interchange.io/api/v2/storefront/proposals/318 \
  -H "Authorization: Bearer $SCOPE3_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "label": "Acme Q3 RFP — CTV (extended)",
    "expiresAt": "2026-10-31T23:59:59Z"
  }'

Parameters

FieldTypeRequiredNotes
idintegerYesProposal row ID (path parameter)
labelstringNoUpdated label (1..255 chars)
notesstringNoUpdated notes (max 4000 chars)
expiresAtstringNoUpdated expiry (ISO 8601)

Response

{
  "id": 318,
  "proposalCode": "PRP-XK4A29",
  "operatorId": "acme",
  "label": "Acme Q3 RFP — CTV (extended)",
  "notes": "Offline RFP follow-up; honors the upfront rate.",
  "status": "active",
  "expiresAt": "2026-10-31T23:59:59Z",
  "proposalId": "proposal_abc123",
  "discoverySessionId": "disc_a1b2c3",
  "snapshot": { "products": [], "proposals": [] },
  "createdAt": "2026-06-07T15:00:00Z",
  "createdBy": "seller@acme-media.example.com",
  "firstViewedAt": null,
  "lastViewedAt": null,
  "redeemedAt": null,
  "redeemedInMediaBuyId": null
}
The full updated proposal is returned, including its frozen snapshot.

Errors

  • 400 VALIDATION_ERROR — empty label, notes over the length limit, or malformed expiresAt.
  • 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

Get proposal

Read back the current state

Revoke proposal

Withdraw a code before redemption

Proposals overview

Lifecycle and concepts