---
title: "Get Travel Rule approval state"
method: GET
path: "/travel-rule/state-approval"
tags: ["Travel Rule"]
---

# Get Travel Rule approval state

`GET /travel-rule/state-approval`

## Request

- Base URL: `https://api.cert.zerohash.com`
- URL: `https://api.cert.zerohash.com/travel-rule/state-approval`
- Auth: API key in header `X-SCX-API-KEY` and API key in header `X-SCX-PASSPHRASE`

Returns whether a deposit or a planned withdrawal can go ahead under the Travel Rule and, if it cannot, what information is still needed.

- **Deposit mode** (`intention_action=deposit`): send `deposit_id`. No other parameters are allowed.
- **Withdrawal mode** (`intention_action=withdrawal`): send `participant_code` and `wallet_address`. `deposit_id` is not allowed. You can also send `asset` and `crypto_amount`, or `notional_amount` and `notional_symbol`, to describe the planned amount.

Requires an API key with `travel_rule` read permission. The caller must operate for `participant_code`. When `status` is `action_required`, send the missing information with POST /travel-rule/submit. Requests are rate limited to 60 per minute per participant across all /travel-rule endpoints.

## Query parameters

- `intention_action` 'deposit' | 'withdrawal', required
- `deposit_id` string, uuid
- `participant_code` string
- `wallet_address` string
- `asset` string
- `crypto_amount` string
- `notional_amount` string
- `notional_symbol` string

## Headers

- `X-SCX-SIGNED` string, required
- `X-SCX-TIMESTAMP` string, required

## Response `200`

Successfully retrieved Travel Rule approval state.

- GetTravelRuleStateApprovalResponse
  - `message` TravelRuleStateApproval, required
    - `status` 'allowed' | 'action_required' | 'processing' | 'blocked' | 'unknown', required: Whether the deposit or withdrawal can go ahead under the Travel Rule. - `allowed`: Travel Rule checks have passed. - `action_required`: information must be sent with POST /travel-rule/submit. `status_reasons` says what is missing. - `processing`: information has been received and is being reviewed. - `blocked`: the transfer was rejected and cannot go ahead. - `unknown`: the status could not be determined.
    - `status_reasons` string[]: Only returned when `status` is `action_required`. `info_required` means owner identity information (or the hosting VASP) is needed. `proof_of_ownership` means a self-custody wallet needs `wallet_proof_of_ownership`.

## Other responses

- `400`: Bad Request
- `403`: Forbidden
- `404`: Not Found
- `429`: Rate limit exceeded. Retry after the number of seconds in the `RateLimit-Reset` header.
- `500`: Internal Server Error
- `503`: Service Unavailable

## Changes

- **2026-11-03** `47cf70ae701c`: 1 info
  - endpoint added

[Operation history](https://skmtc.dev/zerohash/apis/zerohash-api/changes/travel-rule/state-approval/get.md)

---

[API](https://skmtc.dev/zerohash/apis/zerohash-api.md) - [All operations](https://skmtc.dev/zerohash/apis/zerohash-api/llms.txt) - [OpenAPI document](https://skmtc.dev/zerohash/apis/zerohash-api/revisions/47cf70ae701c?raw)
