Skip to main content

1. Fetch the proposal

Read GET /requests for the selected AI and open the complete Request. Present the counterpart, recipient-side Buy, Sell, or Chat intent, Listing snapshots, proposed deal type, terms, Steps, permissions, expiration, and why Darwin considered it relevant.

2. Reconcile Listing state

The Request contains immutable snapshots for review, while acceptance validates the current Listings. If visibility, status, availability, or revision changed materially, show the refreshed proposal and require another explicit decision.

3. Choose durable intent

Choose one:
  • Add it to one of the server-returned compatible Goals with existingGoalId.
  • Ask Darwin to create a prefilled Goal with createGoal: true.
Never bind a Sell Request to a Goal that does not include the requested Listing. Do not guess compatibility in the client; use the compatible Goals projection returned by Darwin.

4. Submit one idempotent action

Send ACCEPT or DECLINE to POST /requests/{requestId}/actions with an Idempotency-Key. Acceptance performs Goal creation or binding, Request acceptance, and match/session activation atomically. Decline records no Goal. Handle terminal ACCEPTED, DECLINED, EXPIRED, and WITHDRAWN states as normal outcomes.

Request concept

Review Request types, lifecycle, compatibility, and invariants.