> For the complete documentation index, see [llms.txt](https://docs.decentraland.org/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.decentraland.org/apis/apis/asset-bundle-registry/denylist.md).

# Denylist

Denylist management endpoints — block specific entity IDs from being served

## Get all denylist entries

> Returns all entity IDs currently in the denylist. This endpoint is public and requires no authentication.<br>

```json
{"openapi":"3.1.0","info":{"title":"Asset Bundle Registry API","version":"1.0.0"},"tags":[{"name":"Denylist","description":"Denylist management endpoints — block specific entity IDs from being served"}],"servers":[{"url":"https://asset-bundle-registry.decentraland.org","description":"Production server"},{"url":"/","description":"Local/relative path"}],"security":[],"paths":{"/denylist":{"get":{"tags":["Denylist"],"summary":"Get all denylist entries","description":"Returns all entity IDs currently in the denylist. This endpoint is public and requires no authentication.\n","operationId":"getDenylist","responses":{"200":{"description":"List of denylist entries","content":{"application/json":{"schema":{"type":"array","items":{"type":"object","description":"A single entry in the denylist, representing a blocked entity","properties":{"entity_id":{"type":"string","description":"Lowercase entity ID (Catalyst CID) that is blocked"},"reason":{"type":["string","null"],"description":"Optional human-readable reason why this entity was denylisted"},"created_by":{"type":"string","description":"Lowercase Ethereum address of the moderator who first added the entry"},"created_at":{"type":"number","description":"Unix timestamp in milliseconds when the entry was created"},"updated_at":{"type":"number","description":"Unix timestamp in milliseconds when the entry was last updated"}},"required":["entity_id","created_by","created_at","updated_at"]}}}}}}}}}}
```

## Add or update a denylist entry

> Adds an entity ID to the denylist or updates an existing entry. Requires a valid signed fetch\
> from an address listed in the \`dapps-platform\_user\_moderators\` feature flag.\
> \
> If the entity is already in the denylist, its \`reason\` and \`updated\_at\` fields are updated\
> but \`created\_by\` is preserved from the original entry.<br>

```json
{"openapi":"3.1.0","info":{"title":"Asset Bundle Registry API","version":"1.0.0"},"tags":[{"name":"Denylist","description":"Denylist management endpoints — block specific entity IDs from being served"}],"servers":[{"url":"https://asset-bundle-registry.decentraland.org","description":"Production server"},{"url":"/","description":"Local/relative path"}],"security":[{"SignedFetch":[]}],"components":{"securitySchemes":{"SignedFetch":{"type":"http","scheme":"bearer","description":"Signed fetch authentication using @dcl/platform-crypto-middleware (ADR-44).\nRequires auth chain headers (x-identity, x-signature, x-timestamp) for signature validation.\nSee http://adr.decentraland.org/adr/ADR-44 for details.\n"}}},"paths":{"/denylist/{entityId}":{"post":{"tags":["Denylist"],"summary":"Add or update a denylist entry","description":"Adds an entity ID to the denylist or updates an existing entry. Requires a valid signed fetch\nfrom an address listed in the `dapps-platform_user_moderators` feature flag.\n\nIf the entity is already in the denylist, its `reason` and `updated_at` fields are updated\nbut `created_by` is preserved from the original entry.\n","operationId":"addDenylistEntry","parameters":[{"name":"entityId","in":"path","required":true,"schema":{"type":"string"},"description":"Entity ID (e.g. a Catalyst CID) to add to the denylist"}],"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"reason":{"type":["string","null"],"description":"Optional human-readable reason for denylisting this entity"}}}}}},"responses":{"201":{"description":"Entry created or updated","content":{"application/json":{"schema":{"type":"object","description":"A single entry in the denylist, representing a blocked entity","properties":{"entity_id":{"type":"string","description":"Lowercase entity ID (Catalyst CID) that is blocked"},"reason":{"type":["string","null"],"description":"Optional human-readable reason why this entity was denylisted"},"created_by":{"type":"string","description":"Lowercase Ethereum address of the moderator who first added the entry"},"created_at":{"type":"number","description":"Unix timestamp in milliseconds when the entry was created"},"updated_at":{"type":"number","description":"Unix timestamp in milliseconds when the entry was last updated"}},"required":["entity_id","created_by","created_at","updated_at"]}}}},"400":{"description":"Bad request — entity ID is missing","content":{"application/json":{"schema":{"type":"object","description":"Generic result for mutating operations","properties":{"ok":{"type":"boolean","description":"Whether the operation succeeded"},"message":{"type":"string","description":"Optional human-readable message"}},"required":["ok"]}}}},"401":{"description":"Unauthorized — invalid or missing signed fetch","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Error message"},"code":{"type":"string","description":"Error code"}},"required":["error"]}}}},"403":{"description":"Forbidden — signer is not an authorized moderator","content":{"application/json":{"schema":{"type":"object","description":"Generic result for mutating operations","properties":{"ok":{"type":"boolean","description":"Whether the operation succeeded"},"message":{"type":"string","description":"Optional human-readable message"}},"required":["ok"]}}}}}}}}}
```

## Remove a denylist entry

> Removes an entity ID from the denylist. Requires a valid signed fetch from an address\
> listed in the \`dapps-platform\_user\_moderators\` feature flag.<br>

```json
{"openapi":"3.1.0","info":{"title":"Asset Bundle Registry API","version":"1.0.0"},"tags":[{"name":"Denylist","description":"Denylist management endpoints — block specific entity IDs from being served"}],"servers":[{"url":"https://asset-bundle-registry.decentraland.org","description":"Production server"},{"url":"/","description":"Local/relative path"}],"security":[{"SignedFetch":[]}],"components":{"securitySchemes":{"SignedFetch":{"type":"http","scheme":"bearer","description":"Signed fetch authentication using @dcl/platform-crypto-middleware (ADR-44).\nRequires auth chain headers (x-identity, x-signature, x-timestamp) for signature validation.\nSee http://adr.decentraland.org/adr/ADR-44 for details.\n"}}},"paths":{"/denylist/{entityId}":{"delete":{"tags":["Denylist"],"summary":"Remove a denylist entry","description":"Removes an entity ID from the denylist. Requires a valid signed fetch from an address\nlisted in the `dapps-platform_user_moderators` feature flag.\n","operationId":"removeDenylistEntry","parameters":[{"name":"entityId","in":"path","required":true,"schema":{"type":"string"},"description":"Entity ID to remove from the denylist"}],"responses":{"200":{"description":"Entry successfully removed","content":{"application/json":{"schema":{"type":"object","description":"Generic result for mutating operations","properties":{"ok":{"type":"boolean","description":"Whether the operation succeeded"},"message":{"type":"string","description":"Optional human-readable message"}},"required":["ok"]}}}},"400":{"description":"Bad request — entity ID is missing","content":{"application/json":{"schema":{"type":"object","description":"Generic result for mutating operations","properties":{"ok":{"type":"boolean","description":"Whether the operation succeeded"},"message":{"type":"string","description":"Optional human-readable message"}},"required":["ok"]}}}},"401":{"description":"Unauthorized — invalid or missing signed fetch","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Error message"},"code":{"type":"string","description":"Error code"}},"required":["error"]}}}},"403":{"description":"Forbidden — signer is not an authorized moderator","content":{"application/json":{"schema":{"type":"object","description":"Generic result for mutating operations","properties":{"ok":{"type":"boolean","description":"Whether the operation succeeded"},"message":{"type":"string","description":"Optional human-readable message"}},"required":["ok"]}}}},"404":{"description":"Entity ID not found in the denylist","content":{"application/json":{"schema":{"type":"object","description":"Generic result for mutating operations","properties":{"ok":{"type":"boolean","description":"Whether the operation succeeded"},"message":{"type":"string","description":"Optional human-readable message"}},"required":["ok"]}}}}}}}}}
```


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## 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, and the optional `goal` query parameter:

```
GET https://docs.decentraland.org/apis/apis/asset-bundle-registry/denylist.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

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.
