From 552243058637be8e861fcd197f33289ab4ab1080 Mon Sep 17 00:00:00 2001 From: relay-docs-bot Date: Wed, 22 Jul 2026 19:12:15 +0000 Subject: [PATCH] docs(drift): draft from internal source Requested by @matirelay via /publish-docs-pr --- references/api/api_core_concepts/handling-errors.mdx | 3 ++- references/api/changelog.mdx | 6 ++++++ 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/references/api/api_core_concepts/handling-errors.mdx b/references/api/api_core_concepts/handling-errors.mdx index 3be3f4c..9999aa9 100644 --- a/references/api/api_core_concepts/handling-errors.mdx +++ b/references/api/api_core_concepts/handling-errors.mdx @@ -19,11 +19,12 @@ These are known validation and routing issues that developers should gracefully | `FORBIDDEN` | User does not have the required role or permission. | | `INSUFFICIENT_FUNDS` | The user's wallet does not have enough balance to perform the swap. | | `INSUFFICIENT_LIQUIDITY` | There is not enough liquidity available to complete the swap. | -| `INVALID_ADDRESS` | The provided user address is not valid. | +| `INVALID_ADDRESS` | The provided user or recipient address is not valid for the target chain. | | `INVALID_EXTRA_TXS` | The total value of extra transactions exceeds the intended output. | | `INVALID_GAS_LIMIT_FOR_DEPOSIT_SPECIFIED_TXS` | Deposit-specified transactions require a supported trade type and a configured gas limit. See the [call execution guide](/references/api/api_guides/calling-integration-guide). | | `INVALID_INPUT_CURRENCY` | The provided input currency address is invalid or not supported. | | `INVALID_OUTPUT_CURRENCY` | The provided output currency address is invalid or not supported. | +| `INVALID_RECIPIENT` | The provided `recipient` resolves to a supported token contract and cannot receive funds. Use a wallet address. | | `INVALID_SLIPPAGE_TOLERANCE` | `slippageTolerance` (or `latePaymentSlippageTolerance`) is not an integer string in the range `0`–`10000` basis points. | | `NO_INTERNAL_SWAP_ROUTES_FOUND` | No valid swap route exists internally for the selected token pair. | | `NO_QUOTES` | No available quotes for the given parameters. | diff --git a/references/api/changelog.mdx b/references/api/changelog.mdx index fe501e4..882d8e8 100644 --- a/references/api/changelog.mdx +++ b/references/api/changelog.mdx @@ -3,6 +3,12 @@ title: "API Changelog" description: "Record of breaking changes, deprecations, and notable additions to the Relay API" --- +## 2026-07-22 — `recipient` validated at quote time + +**Added** — `POST /quote` and `POST /quote/v2`: an explicitly provided `recipient` is now validated before quoting. Recipients that fail address validation for the destination chain return `400` with `errorCode: "INVALID_ADDRESS"`. Recipients that resolve to a supported token contract (which cannot receive tokens — e.g. passing the destination-chain USDC contract as `recipient`) return `400` with the new `errorCode: "INVALID_RECIPIENT"`. Requests that omit `recipient` are unaffected — the implicit `recipient = user` path is not revalidated. Previously these requests surfaced as `DESTINATION_TX_FAILED` after simulation. See [Handling Quote Errors](/references/api/api_core_concepts/handling-errors). + +**Behavior change** — `POST /quote` and `POST /quote/v2`: when a blocklisted wallet recipient reaches destination simulation and the token contract rejects the transfer, the response `errorCode` is still `DESTINATION_TX_FAILED` but the `message` is now `Recipient cannot receive this token (blocked by the token contract). Try a different recipient address.` instead of the generic `Destination transaction failed`. Error classification is unchanged. + ## 2026-07-22 — `GET /requests/v3` is live; `GET /requests/v2` deprecated & scheduled for sunset **Added** — `GET /requests/v3`: the recommended Requests API. It requires `x-api-key`, adds a broad filter/search/sort surface, and returns a cleaner, consolidated response. See the [migration guide](/references/api/api_guides/migrating-to-requests-v3).