place_paid_order
Place an order and pay for it with USDC on Base or Solana, with no GrowVib account and no human in the loop, using the x402 payment protocol. Call it FIRST without the payment argument: it returns the exact payment requirements, one accepts entry per network (amount in atomic units, asset, recipient, network, and for Solana the facilitator's feePayer). Pick the network your wallet is on: sign an EIP-3009 transferWithAuthorization (Base) or build and sign the USDC transfer transaction (Solana) for exactly those requirements, then call it AGAIN with the same arguments plus payment set to the signed x402 payment payload. Anything paid above the order's price stays as spendable balance on the wallet's account, so many small orders can be paid for with one settlement. If a call reports that the payment is still being confirmed, do NOT sign and send a new payment: the first one may already have gone through. Use get_quote first if you only want a price.
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| link | Yes | The target link the order is delivered to. | |
| payment | No | The signed x402 v2 payment payload. Omit on the first call to receive the payment requirements. | |
| quantity | Yes | Quantity to order. | |
| service_id | Yes | The service id from search_catalog. | |
| agent_token | No | The agent_token from a previous order's result. Send it INSTEAD of `payment` to pay out of the balance you already hold, with no new signature and nothing on chain. Requires `idempotency_key`. If your balance does not cover the order you get the payment requirements back as usual. | |
| idempotency_key | No | A value unique to this order attempt (a UUID is fine), required when using `agent_token`. Sending the same key again returns the SAME order instead of buying a second time, so a retry after a timeout is safe. | |
| service_option_id | No | Optional specific service option id; defaults to the service's primary option. |