> ## Documentation Index
> Fetch the complete documentation index at: https://traddal.dev/llms.txt
> Use this file to discover all available pages before exploring further.

# Check restricted goods

> Check items against import/export prohibitions and restrictions for a shipping lane.

Requires the `restrict:read` scope.

Checks each item against the **import** rules of the destination country
and — when `origin_country` is given — the **export** rules of the origin,
plus any [custom rules](/api-reference/restrict/rules-list) your
organization has defined. Every request is logged for compliance evidence
(see [Restrict history](/api-reference/restrict/history)).

Returns `403` when restricted-goods checks are not enabled for the
destination country.

<ParamField body="destination_country" type="string" required>
  Ship-to country (ISO alpha-2) — its import rules are checked.
</ParamField>

<ParamField body="origin_country" type="string">
  Ship-from country (ISO alpha-2) — its export rules are checked when
  given.
</ParamField>

<ParamField body="items" type="array" required>
  1–100 items. All item fields are optional, but prefix rules need an
  `hs_code` and keyword rules need text (`title` / `description` /
  `materials` / `category` / `brand`):

  * `sku` — your line reference (up to 100 chars), echoed back
  * `title` — up to 500 chars
  * `description` — up to 2000 chars
  * `hs_code` — 4–10 digits, dots allowed (e.g. `0805.50.40.00`)
  * `country_of_origin` — ISO alpha-2 country of manufacture; drives
    origin-scoped rules
  * `materials` — up to 500 chars
  * `category` — up to 200 chars
  * `brand` — up to 200 chars
</ParamField>

## Response

Your reference for this call is the **`X-Request-Id` response header** (a
UUIDv7) — quote it to support or look it up via
[`GET /api/requests`](/api-reference/api-requests/list) to retrieve the
archived original payload.

<ResponseField name="items" type="array">
  One entry per item, echoing `sku`, `title`, `description`, `hs_code`,
  and `country_of_origin` (each `null` when not sent), plus
  `restrictions` — `null` for a clean item, otherwise an array of matches:

  * `id` — `restriction_<n>` (platform rule) or `org_rule_<n>` (your rule)
  * `source` — `platform` or `org`
  * `hs_code` — the rule's HS prefix (`null` for keyword/origin rules)
  * `imposing_country_code` — the country whose rule matched
  * `measure_direction` — `IMPORT` or `EXPORT`
  * `rule_type` — `prohibition`, `restriction`, or `observation`
  * `title`, `summary`
  * `agency` — the regulating agency (e.g. `FDA`), `null` for org rules
  * `agency_flag` — the agency's flag code (e.g. an HTS PGA flag), when
    the source dataset carries one
  * `requirement` — `required`, `may_be_required`, or `null`
  * `source_url`, `source_ref` — where the rule comes from
  * `confidence` — `HIGH` (exact/under-prefix HS match, origin rule) or
    `MEDIUM` (item code shallower than the rule's, or keyword match)
</ResponseField>

<ResponseField name="match_count" type="number">
  Total restrictions matched across all items.
</ResponseField>

<ResponseField name="has_prohibitions" type="boolean">
  `true` when any match is a `prohibition`.
</ResponseField>

<ResponseField name="has_restrictions" type="boolean">
  `true` when any match is a `restriction`.
</ResponseField>

<ResponseField name="duration_ms" type="number">
  Processing time in milliseconds.
</ResponseField>

<RequestExample>
  ```bash cURL theme={null}
  curl -X POST https://{partner}.mytraddal.com/admin/api/v1/restrict \
    -H 'Content-Type: application/json' \
    -H 'Authorization: Bearer {access_token}' \
    -d '{
      "destination_country": "US",
      "origin_country": "IR",
      "items": [
        {
          "sku": "LIME-5KG",
          "title": "Fresh limes",
          "hs_code": "0805.50.40.00",
          "country_of_origin": "MX"
        },
        {
          "sku": "WATCH-01",
          "title": "Mechanical wristwatch",
          "hs_code": "9102.12",
          "country_of_origin": "IR"
        }
      ]
    }'
  ```
</RequestExample>

<ResponseExample>
  ```json 200 theme={null}
  {
    "success": true,
    "message": "",
    "created_at": "2026-07-30T10:15:02.000Z",
    "destination_country": "US",
    "origin_country": "IR",
    "items": [
      {
        "sku": "LIME-5KG",
        "title": "Fresh limes",
        "description": null,
        "hs_code": "0805.50.40.00",
        "country_of_origin": "MX",
        "restrictions": [
          {
            "id": "restriction_18342",
            "source": "platform",
            "hs_code": "080550",
            "imposing_country_code": "US",
            "measure_direction": "IMPORT",
            "rule_type": "restriction",
            "title": "APHIS Core import requirements",
            "summary": "Fresh fruit is subject to USDA APHIS phytosanitary import requirements.",
            "agency": "APHIS",
            "agency_flag": "AQ1",
            "requirement": "may_be_required",
            "source_url": "https://www.aphis.usda.gov/",
            "source_ref": "HTS flag AQ1",
            "confidence": "HIGH"
          }
        ]
      },
      {
        "sku": "WATCH-01",
        "title": "Mechanical wristwatch",
        "description": null,
        "hs_code": "9102.12",
        "country_of_origin": "IR",
        "restrictions": [
          {
            "id": "restriction_20917",
            "source": "platform",
            "hs_code": null,
            "imposing_country_code": "US",
            "measure_direction": "IMPORT",
            "rule_type": "prohibition",
            "title": "Goods of Iranian origin",
            "summary": "Importation of goods of Iranian origin is generally prohibited under the Iranian Transactions and Sanctions Regulations.",
            "agency": "OFAC",
            "agency_flag": null,
            "requirement": null,
            "source_url": "https://ofac.treasury.gov/",
            "source_ref": "31 CFR Part 560",
            "confidence": "HIGH"
          }
        ]
      }
    ],
    "match_count": 2,
    "has_prohibitions": true,
    "has_restrictions": true,
    "duration_ms": 84
  }
  ```

  ```json 403 theme={null}
  {
    "success": false,
    "message": "Restricted-goods checks are not enabled for XX"
  }
  ```
</ResponseExample>
