Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 2 additions & 1 deletion references/api/api_core_concepts/handling-errors.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -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. |
Expand Down
6 changes: 6 additions & 0 deletions references/api/changelog.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -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).
Expand Down