Skip to main content
GET
/
travel_rule
/
signature_challenge
import cobo_waas2
from cobo_waas2.models.signature_challenge import SignatureChallenge
from cobo_waas2.rest import ApiException
from pprint import pprint

# See configuration.py for a list of all supported configurations.
configuration = cobo_waas2.Configuration(
    # Replace `<YOUR_PRIVATE_KEY>` with your private key
    api_private_key="<YOUR_PRIVATE_KEY>",
    # Select the development environment. To use the production environment, change the URL to https://api.cobo.com/v2.
    host="https://api.dev.cobo.com/v2",
)
# Enter a context with an instance of the API client
with cobo_waas2.ApiClient(configuration) as api_client:
    # Create an instance of the API class
    api_instance = cobo_waas2.TravelRuleApi(api_client)
    transaction_type = "DEPOSIT"
    transaction_id = "123e4567-e89b-12d3-a456-426614174000"

    try:
        # Get self-custody signature challenge
        api_response = api_instance.get_signature_challenge(
            transaction_type, transaction_id
        )
        print("The response of TravelRuleApi->get_signature_challenge:\n")
        pprint(api_response)
    except Exception as e:
        print("Exception when calling TravelRuleApi->get_signature_challenge: %s\n" % e)

{
  "address": "0x1234567890abcdef1234567890abcdef12345678",
  "challenge": "Hi, please sign this message to confirm that you are the owner of this wallet address.\nThe transfer can only proceed after signing.\n- Address: 0x1234567890abcdef1234567890abcdef12345678\n- Nonce: b2860f5c9f201a81bc76f33e991c1f24\n- Timestamp: 1732523887\n",
  "expires_in": 30
}

Documentation Index

Fetch the complete documentation index at: https://cobo.com/developers/llms.txt

Use this file to discover all available pages before exploring further.

Try Cobo WaaS Skill in your AI coding assistant (Claude Code, Cursor, etc.). Describe your needs in natural language to auto-generate production-ready SDK code and debug faster 🚀
import cobo_waas2
from cobo_waas2.models.signature_challenge import SignatureChallenge
from cobo_waas2.rest import ApiException
from pprint import pprint

# See configuration.py for a list of all supported configurations.
configuration = cobo_waas2.Configuration(
    # Replace `<YOUR_PRIVATE_KEY>` with your private key
    api_private_key="<YOUR_PRIVATE_KEY>",
    # Select the development environment. To use the production environment, change the URL to https://api.cobo.com/v2.
    host="https://api.dev.cobo.com/v2",
)
# Enter a context with an instance of the API client
with cobo_waas2.ApiClient(configuration) as api_client:
    # Create an instance of the API class
    api_instance = cobo_waas2.TravelRuleApi(api_client)
    transaction_type = "DEPOSIT"
    transaction_id = "123e4567-e89b-12d3-a456-426614174000"

    try:
        # Get self-custody signature challenge
        api_response = api_instance.get_signature_challenge(
            transaction_type, transaction_id
        )
        print("The response of TravelRuleApi->get_signature_challenge:\n")
        pprint(api_response)
    except Exception as e:
        print("Exception when calling TravelRuleApi->get_signature_challenge: %s\n" % e)

Authorizations

BIZ-API-KEY
string
header
required

The API key. For more details, refer to API key.

In the API playground, enter your API secret, and your API key will be accordingly calculated.

Query Parameters

transaction_type
enum<string>
required

The transaction type. Possible values include:

  • DEPOSIT: A deposit transaction.
  • WITHDRAW: A withdrawal transaction.
Available options:
DEPOSIT,
WITHDRAW
transaction_id
string<uuid>
required

The transaction ID.

Example:

"123e4567-e89b-12d3-a456-426614174000"

Response

The signature challenge was issued successfully.

A signature challenge for self-custody wallet verification. The wallet owner must sign the challenge string with the wallet associated with address and submit the signature via Submit Travel Rule information for deposits or withdrawals. The challenge is time-bounded — each call rotates the challenge and only the most recently-issued value will verify.

address
string
required

The self-custody wallet address that must sign this challenge. This is the counterparty address for the transaction: for deposits it is the sender's wallet, and for withdrawals it is the recipient's wallet.

Example:

"0x1234567890abcdef1234567890abcdef12345678"

challenge
string
required

The human-readable, time-sensitive message to sign. Contains the wallet address, a unique nonce, and a timestamp.

Example:

"Hi, please sign this message to confirm that you are the owner of this wallet address.\nThe transfer can only proceed after signing.\n- Address: 0x1234567890abcdef1234567890abcdef12345678\n- Nonce: b2860f5c9f201a81bc76f33e991c1f24\n- Timestamp: 1732523887\n"

expires_in
integer<int32>
required

Number of seconds before the challenge expires. The signature must be submitted within this window.

Example:

30