# Check swap approvals (POST /check_approval)

Operation `check_approval` of the Uniswap API. Base URL: `https://trade-api.gateway.uniswap.org/v1`.

Allows the requestor to check if the `walletAddress` has the required approval to transact the `token` up to the `amount` specified. If the `walletAddress` does not have the required approval, the response will include a transaction to approve the token spend. If the `walletAddress` has the required approval, the response will return the approval with a `null` value. If the parameter `includeGasInfo` is set to `true` and an approval is needed, then the response will include both the transaction and the gas fee for the approval transaction.

Certain tokens may require that approval be reset before approving a new spend amount. If this condition is detected for the `walletAddress` and `token`, the response will include the necessary approval cancellation in the `cancel` paragraph. When `cancel` is not applicable, the paragraph will have a `null` value.

Parameters: 2 header, 8 body · Request: `application/json` · Auth: apiKey · Responses: 200, 400, 401, 404, 429, 500, 504

## Headers

| Name | Type | Required | Description |
| --- | --- | --- | --- |
| `x-api-key` | string | yes | Your API key for authentication. |
| `x-permit2-disabled` | boolean | no | Disables the Permit2 approval flow. When set to `true`, `permitData` is returned as `null` and the header is forwarded to the routing layer for correct gas simulation against the Proxy Universal Router contract. When `false` or omitted, the standard Permit2 approval flow is used. This header is intended for integrators whose infrastructure uses a direct approval-then-swap pattern without Permit2. |

## Body

| Name | Type | Required | Description |
| --- | --- | --- | --- |
| `walletAddress` | string | yes | The wallet address which will be used to send the token. |
| `token` | string | yes | The token which will be sent, specified by its token address. For a list of supported tokens, see the [FAQ](https://api-docs.uniswap.org/guides/faqs). |
| `amount` | string | yes | The quantity of tokens denominated in the token's base units. (For example, for an ERC20 token one token is 1x10^18 base units. For one USDC token one token is 1x10^6 base units.) This value must be greater than 0. |
| `chainId` | enum | yes | The unique ID of the blockchain. For a list of supported chains see the [FAQ](https://api-docs.uniswap.org/guides/faqs). |
| `urgency` | enum | UrgencyWithOverrides | no | The urgency impacts the estimated gas price of the transaction. The higher the urgency, the higher the gas price, and the faster the transaction is likely to be selected from the mempool. Send the bare string form (e.g. `"normal"`) for the common case, or the object form `{ level, overrides }` to supply caller caps for `maxPriorityFeePerGas`, `maxFeePerGas`, and `gasLimit`. |
| `includeGasInfo` | boolean | no | If set to `true`, the response will include the estimated gas fee for the proposed transaction. |
| `tokenOut` | string | no | The token which will be received, specified by its token address. For a list of supported tokens, see the [FAQ](https://api-docs.uniswap.org/guides/faqs). |
| `tokenOutChainId` | enum | no | The unique ID of the blockchain. For a list of supported chains see the [FAQ](https://api-docs.uniswap.org/guides/faqs). |

## Responses

- `200` — Check approval successful.
- `400` — RequestValidationError, Bad Input
- `401` — UnauthorizedError eg. Account is blocked.
- `404` — ResourceNotFound eg. Token allowance not found or Gas info not found.
- `429` — Ratelimited
- `500` — Unexpected error
- `504` — Request duration limit reached.

Interactive playground: https://developers.uniswap.org/docs/api-reference/check_approval
All endpoints: https://developers.uniswap.org/docs/api-reference
