# Check restricted goods (POST /v1/restrictions)

> POST /v1/restrictions: Check restricted goods. border.bot API reference (Compliance).

Source: https://border.bot/docs/api/check-restricted-goods

> Documentation index: https://border.bot/llms.txt. Every page is Markdown at its URL + `.md`.

`POST https://api.border.bot/v1/restrictions`

Requires an API key (`Authorization: Bearer bb_live_…`).

Check items against the destination’s import prohibitions and restrictions and, when `originCountry` is given, the origin’s export rules (sanctions, agency requirements such as FDA or APHIS), plus your own rules (`/restrictions/rules`). It uses no credits and is limited to 10 checks per minute per workspace (up to 100 items each). Destinations without coverage return 422 `unsupported_country`.

API key scope: `compliance`.

## Request body (JSON)

| Name | Type | Required | Description |
| --- | --- | --- | --- |
| `destinationCountry` | string | yes | Ship-to country — its import rules are checked. ISO 3166-1 alpha-2, case-insensitive. |
| `originCountry` | string | no | Ship-from country — its export rules are checked when given. ISO 3166-1 alpha-2, case-insensitive. |
| `items` | RestrictionItem[] | yes | 1–100 items. |
| `reference` | string | no | Your reference (an order or customer id), kept with the check as evidence. |

## Responses

- `200`: Matches per item (an empty `restrictions` list means nothing matched). (`RestrictionsResponse`)
- `400`: Invalid input (`invalid_input`). (`Error`)
- `401`: Missing, invalid, revoked or expired API key (`unauthorized`). (`Error`)
- `403`: The API key doesn’t have the `compliance` scope (`forbidden`, `details.reason: "missing_scope"`). (`Error`)
- `422`: Restricted-goods checks are not available for this destination (`unsupported_country`). (`Error`)
- `429`: Rate limited (`rate_limited`). Retry after `Retry-After` seconds; `RateLimit` says which limit was hit (`r=0`, `t` seconds until its window ends) and `RateLimit-Policy` its quota. (`Error`)
- `500`: Unexpected error (`internal`). (`Error`)
- `502`: The engine failed (`upstream_error`). (`Error`)
- `504`: The engine timed out (`upstream_timeout`). (`Error`)

## Example

```bash
curl -X POST 'https://api.border.bot/v1/restrictions' \
  -H 'Authorization: Bearer bb_live_...' \
  -H 'Content-Type: application/json' \
  -d '{"destinationCountry":"US","originCountry":"CN","items":[{"sku":"LAMP-01","title":"Lithium battery desk lamp","hsCode":"9405.21"}]}'
```
