# Blacklist

The blacklist feature allows token issuers to **block specific addresses** from holding or transferring tokens. This feature is **only available for public tokens** (tokens created with `is_private = false`).

### How It Works

* **Default State**: All addresses can freely use the token
* **After Blacklisting**: Blocked addresses cannot receive or send the token
* **Authority**: Only the token's master authority can manage the blacklist

### Use Cases

* **Compliance**: Block sanctioned addresses (OFAC, EU sanctions)
* **Security**: Block compromised or malicious addresses
* **Risk Management**: Prevent known bad actors from using the token
* **Regulatory**: Meet jurisdictional requirements for token operations

### Key Points

* Blacklist is **permanent** until explicitly removed
* Blacklisted addresses **cannot**:
  * Receive tokens (transfers will fail)
  * Send tokens (transfers will be blocked)
  * Participate in token-related activities
* Adding/removing addresses requires gas fees
* All blacklist changes emit on-chain events for transparency

### Common Scenarios

#### Regulatory Compliance

Financial institutions use blacklists to comply with anti-money laundering (AML) regulations by blocking addresses associated with illegal activities.

#### Emergency Response

When a security breach occurs, quickly blacklist compromised addresses to prevent further damage.

#### Exchange Integration

Exchanges can blacklist addresses involved in hacks or scams to protect their users.

### Important Notes

* **Public Tokens Only**: Cannot use blacklist on private tokens
* **No Retroactive Effect**: Existing balances remain, but become frozen
* **Careful Management**: Incorrectly blacklisting addresses can lock user funds
* **Legal Considerations**: Ensure blacklisting policies comply with local laws

## POST /v1/tokens/manage\_blacklist

>

```json
{"openapi":"3.1.0","info":{"title":"om-api-rest","version":"0.1.0"},"tags":[{"name":"tokens","description":"Tokens API"}],"servers":[{"url":"https://api.testnet.1money.network","description":"Testnet API server"},{"url":"https://api.1money.network","description":"Mainnet API server"},{"url":"http://localhost:18555","description":"Local API server"}],"paths":{"/v1/tokens/manage_blacklist":{"post":{"tags":["tokens"],"operationId":"manage_blacklist","requestBody":{"description":"token blacklist management request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BlacklistRequest"}}},"required":true},"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Hash"}}}},"400":{"description":"Client error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RESTErrorData"}}}},"404":{"description":"Resource not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RESTErrorData"}}}},"408":{"description":"Request timeout","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RESTErrorData"}}}},"422":{"description":"Business logic error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RESTErrorData"}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RESTErrorData"}}}}}}}},"components":{"schemas":{"BlacklistRequest":{"allOf":[{"$ref":"#/components/schemas/BlacklistPayload"},{"type":"object","required":["signature"],"properties":{"signature":{"$ref":"#/components/schemas/RestSignature"}}}],"description":"Blacklist request for managing token blacklists"},"BlacklistPayload":{"type":"object","description":"Payload for blacklist operations","required":["chain_id","nonce","action","address","token"],"properties":{"action":{"$ref":"#/components/schemas/BlacklistAction","description":"The action of the transaction: Add or Remove from blacklist."},"address":{"$ref":"#/components/schemas/AddressSchema","description":"The address to be added to or removed from blacklist."},"chain_id":{"type":"integer","format":"int64","description":"The chain id of the transaction.","minimum":0},"nonce":{"type":"integer","format":"int64","description":"The nonce of the transaction.","minimum":0},"token":{"$ref":"#/components/schemas/TokenAddressSchema","description":"The token address of the transaction."}}},"BlacklistAction":{"type":"string","description":"Action types for blacklist operations","enum":["Add","Remove"]},"AddressSchema":{"type":"string","title":"string"},"TokenAddressSchema":{"type":"string","title":"string"},"RestSignature":{"type":"object","description":"Signature type for REST requests.\n\nWe use this type to avoid the ambiguity of the signature type in the core\nprimitives.\n\nThis type is referred to `https://github.com/alloy-rs/alloy/blob/b2278c40b2693908e4e5108d65ade26e8d716765/crates/rpc-types-eth/src/transaction/signature.rs#L9`.","required":["r","s","v"],"properties":{"r":{"$ref":"#/components/schemas/SignatureRSchema","description":"The R field of the signature; the point on the curve."},"s":{"$ref":"#/components/schemas/SignatureSSchema","description":"The S field of the signature; the point on the curve."},"v":{"type":"integer","format":"int64","description":"For EIP-155, EIP-2930 and Blob transactions this is set to the parity (0\nfor even, 1 for odd) of the y-value of the secp256k1 signature.\n\nFor legacy transactions, this is the recovery id\n\nSee also <https://ethereum.github.io/execution-apis/api-documentation/> and <https://ethereum.org/en/developers/docs/apis/json-rpc/#eth_gettransactionbyhash>","minimum":0}}},"SignatureRSchema":{"type":"string","title":"string","description":"Signature R schema"},"SignatureSSchema":{"type":"string","title":"string","description":"Signature S schema"},"Hash":{"type":"object","description":"Represents a transaction hash returned by the API.","required":["hash"],"properties":{"hash":{"$ref":"#/components/schemas/B256Schema"}}},"B256Schema":{"type":"string","title":"string"},"RESTErrorData":{"type":"object","required":["error_code","message"],"properties":{"error_code":{"type":"string","description":"Structured error code for programmatic handling"},"message":{"type":"string","description":"Human-readable error message"}}}}}}
```


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://developer.1moneynetwork.com/integrations/rest-apis/tokens/blacklist.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
