> ## Documentation Index
> Fetch the complete documentation index at: https://docs.interchange.io/llms.txt
> Use this file to discover all available pages before exploring further.

# Request buyer information

> Ask the buyer for information or an external action through your own process, and get a seller-scoped link to hand back to them

`POST /api/v2/storefront/account-mappings/reviews/{intakeId}/request-information`

Sellers already run credit checks, contracts, tax collection, and vendor
onboarding in their own systems — CRM flows, e-signature packets, onboarding
portals. This does not invent a hosted forms product: it hands the buyer into
your existing process and records that the handoff happened.

Calling this keeps the pending buyer intake open and marks it blocked on the
buyer. `list_accounts` and `sync_accounts` continue to report the account as
`pending_approval`, now carrying a `setup` object with your message, an
expiration, and a launch link scoped to your storefront's own agent endpoint —
never a link you supply directly. The buyer's agent presents the message as
untrusted text and may offer the link to an authorized human; it never treats
the message as instructions or opens the link automatically.

A case has at most one pending request. Calling this again while that request
is still live returns `409 CONFLICT` — it does not replace it. Only an
**expired** request is superseded automatically; to replace a live request,
wait for it to be confirmed or for it to expire.

## Request

<CodeGroup>
  ```bash curl theme={null}
  curl -X POST https://api.interchange.io/api/v2/storefront/account-mappings/reviews/4821/request-information \
    -H "Authorization: Bearer $SCOPE3_API_KEY" \
    -H "Content-Type: application/json" \
    -d '{
      "message": "Please send your completed W-9 and a signed insertion order to finish setup.",
      "destinationUrl": "https://forms.example-seller.com/onboarding/w9",
      "expiresAt": "2026-09-15T00:00:00.000Z"
    }'
  ```
</CodeGroup>

## Parameters

| Field            | Type                       | Required | Notes                                                                                                                                                                                                                                                                                                               |
| ---------------- | -------------------------- | -------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `intakeId`       | string (path)              | Yes      | The buyer intake id, from `intakeId` on a `GET /account-mappings/reviews` row (this is the same id the decide-review endpoint calls `grantId`). A case is opened for the intake automatically if one doesn't exist yet.                                                                                             |
| `message`        | string                     | Yes      | Plain text, 1–2,000 Unicode scalar values and at most 8 KiB when UTF-8 encoded. Newline and tab are the only permitted control characters; bidirectional-override characters and markup (`<`) are rejected. Rendered to the buyer as escaped, untrusted text.                                                       |
| `destinationUrl` | string                     | No       | Your own process link (a credit form, a DocuSign envelope, a portal). Must be an absolute `https` URL with no embedded credentials or control characters — `http:`, `javascript:`, `data:`, and every other non-`https` scheme are rejected. Omit this for a message-only ask (for example, "reply to this email"). |
| `expiresAt`      | string (ISO 8601 datetime) | Yes      | Must be in the future and no more than 365 days out. Past this time the case re-blocks on you: resend, replace the link, or drop the ask.                                                                                                                                                                           |

## Response

`200 OK` with the created request:

```json theme={null}
{
  "id": "9931",
  "caseId": "4821",
  "status": "pending",
  "message": "Please send your completed W-9 and a signed insertion order to finish setup.",
  "destinationUrl": "https://forms.example-seller.com/onboarding/w9",
  "url": "https://api.interchange.io/seller/acme-storefront/mcp/handoffs/kx9F2...",
  "expiresAt": "2026-09-15T00:00:00.000Z",
  "createdBy": "ops@example-seller.com",
  "confirmedBy": null,
  "confirmedAt": null,
  "createdAt": "2026-08-25T14:02:11.000Z"
}
```

`url` always follows `{your storefront's MCP endpoint}/handoffs/{token}` — it is
never `destinationUrl` reflected back, and it is bound to this exact case and
expiration. The buyer's agent opens it directly; it does not require a Scope3
session.

## Errors

* `400 VALIDATION_ERROR` — the message or destination URL failed the bounds above, or `expiresAt` is missing, past, or too far out.
* `401 UNAUTHORIZED` — missing or invalid API key.
* `404 NOT_FOUND` — no pending buyer intake with this id under your storefront (or its case exists but isn't open).
* `409 CONFLICT` — this case already has a pending information request. Wait for it to be confirmed or expire, or read the existing request's `pendingRequestMessage`, `pendingRequestExpiresAt`, and `pendingRequestSetupUrl` from its row in the review queue (`GET /account-mappings/reviews`) to see what was already asked, when it expires, and the launch URL to hand back to the buyer — this recovers a POST whose commit succeeded but whose response was lost. The queue row never carries the raw launch token, only the URL built from it.

See [Errors](/v2/reference/errors) for the full error contract.

## Related

<CardGroup cols={2}>
  <Card title="Confirm buyer information" href="/v2/storefront/buyer-account-mapping/tasks/confirm-buyer-information" icon="circle-check">
    Record that the material arrived
  </Card>

  <Card title="Buyer Account Mapping" href="/v2/storefront/buyer-account-mapping" icon="diagram-project">
    The review queue this case comes from
  </Card>
</CardGroup>
