Pause and unpause assets
Enable or disable all transfers for an asset via API.
Pausing an asset temporarily disables all transfers, minting, and burning operations. This is used for emergency stops, maintenance, or compliance holds.
Pause and unpause operations change the transfer state for one asset while preserving the surrounding DALP platform state.
For the web interface approach, see the user guide.
Prerequisites
- Platform URL (e.g.,
https://your-platform.example.com) - API key from a user with Emergency role on this asset (see Getting Started for API key setup)
- Wallet verification method enabled on your account (e.g., pincode or 2FA)
New assets start paused
Assets are automatically paused upon creation. You must unpause them before any transfers can occur.
Pausing an asset
Prepare pause request
Construct the API request to pause the asset:
curl -X PATCH "https://your-platform.example.com/api/v2/tokens/0x9459D52E60edBD3178f00F9055f6C117a21b4220/pause-state" \
-H "X-Api-Key: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"walletVerification": {
"secretVerificationCode": "123456",
"verificationType": "PINCODE"
}
}'Asset address in path
The asset contract address is part of the URL path: /api/v2/tokens/{tokenAddress}/pause-state.
Execute pause
When you execute the request, the platform:
- Validates your permissions - Confirms you have Emergency role on this asset
- Verifies your wallet - Uses your pincode/2FA to authorize the blockchain transaction
- Pauses the asset - Sets the pause flag on-chain, blocking all transfers
Handle response
A synchronous response wraps the updated asset data in data and includes transaction metadata:
{
"data": {
"id": "0x9459D52E60edBD3178f00F9055f6C117a21b4220",
"name": "ACME Holdings Common Stock",
"symbol": "ACME",
"decimals": 0,
"totalSupply": "1000",
"type": "equity",
"pausable": {
"paused": true
}
},
"meta": {
"txHashes": ["0x..."]
},
"links": {
"self": "/v2/tokens/0x9459D52E60edBD3178f00F9055f6C117a21b4220/pause-state"
}
}The data.pausable.paused field confirms the asset is now paused. The response includes the full asset object with additional fields like accessControl, identity, and userPermissions. If you request asynchronous processing, the API returns a transactionId, status, and statusUrl instead.
Unpausing an asset
Prepare unpause request
Construct the API request to unpause the asset:
curl -X DELETE "https://your-platform.example.com/api/v2/tokens/0x9459D52E60edBD3178f00F9055f6C117a21b4220/pause-state" \
-H "X-Api-Key: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"walletVerification": {
"secretVerificationCode": "123456",
"verificationType": "PINCODE"
}
}'Execute unpause
When you execute the request, the platform:
- Validates your permissions - Confirms you have Emergency role on this asset
- Verifies your wallet - Uses your pincode/2FA to authorize the blockchain transaction
- Unpauses the asset - Clears the pause flag, enabling all transfers
Handle response
A synchronous response wraps the updated asset data in data and includes transaction metadata:
{
"data": {
"id": "0x9459D52E60edBD3178f00F9055f6C117a21b4220",
"name": "ACME Holdings Common Stock",
"symbol": "ACME",
"decimals": 0,
"totalSupply": "1000",
"type": "equity",
"pausable": {
"paused": false
}
},
"meta": {
"txHashes": ["0x..."]
},
"links": {
"self": "/v2/tokens/0x9459D52E60edBD3178f00F9055f6C117a21b4220/pause-state"
}
}The data.pausable.paused field confirms the asset is now active. The response includes the full asset object with additional fields like accessControl, identity, and userPermissions. If you request asynchronous processing, the API returns a transactionId, status, and statusUrl instead.
Request parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
walletVerification | object | Yes | Your wallet verification |
walletVerification.secretVerificationCode | string | Yes | Your 6-digit PINCODE or TOTP code |
walletVerification.verificationType | string | Yes | "PINCODE", "OTP", or "SECRET_CODES" |
What pausing affects
When an asset is paused, the following operations are blocked:
- User transfers - Normal wallet-to-wallet transfers
- Minting - Creating new units
- Burning - Destroying existing units
- Forced transfers - Administrative transfers
These operations continue to work while paused:
- Viewing balances - Read-only operations
- Checking compliance - Identity and claim verification
- Role management - Adding/removing administrators
- Pause/unpause - Can toggle pause state
All transfers stop
Pausing affects ALL asset holders immediately. Use sparingly and communicate with stakeholders.
Check pause status
Query the asset to see current pause state:
curl -X GET "https://your-platform.example.com/api/v2/tokens/0x9459D52E60edBD3178f00F9055f6C117a21b4220" \
-H "X-Api-Key: YOUR_API_KEY"The response wraps pause status in the data.pausable field:
{
"data": {
"id": "0x9459D52E60edBD3178f00F9055f6C117a21b4220",
"name": "ACME Holdings Common Stock",
"symbol": "ACME",
"decimals": 0,
"totalSupply": "1000",
"type": "equity",
"pausable": {
"paused": false
}
},
"links": {
"self": "/v2/tokens/0x9459D52E60edBD3178f00F9055f6C117a21b4220"
}
}Use data.pausable.paused to check whether the asset is paused. The data object includes the full asset object with additional fields.
Troubleshooting
| Issue | Solution |
|---|---|
401 Unauthorized | API key is invalid, expired, or disabled |
403 USER_NOT_AUTHORIZED | Ensure your account has emergency role on this asset |
Asset already paused | Check status first, asset may already be paused |
Asset already unpaused | Check status first, asset may already be unpaused |
Cannot transfer while paused | Unpause the asset before attempting transfers |
Related guides
- Forced Transfer - Administrative transfers
- Mint Assets - Issue assets to investors