> 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/builder-server/curations.md).

# Curations

Collection and item curation workflow

## Get all collection curations

> Returns all collection curations

```json
{"openapi":"3.0.3","info":{"title":"Builder Server API","version":"2.10.0"},"tags":[{"name":"Curations","description":"Collection and item curation workflow"}],"servers":[{"url":"https://builder-api.decentraland.org/v1","description":"Production environment","variables":{}},{"url":"https://builder-api.decentraland.zone/v1","description":"Development environment","variables":{}}],"security":[{"SignedFetch":[]}],"components":{"securitySchemes":{"SignedFetch":{"type":"apiKey","in":"header","name":"X-Identity-Auth-Chain-*","description":"Signed fetch authentication using Decentraland's ADR-44 specification.\nMultiple headers are used to provide the authentication chain.\n"}}},"paths":{"/curations":{"get":{"operationId":"getCollectionCurations","tags":["Curations"],"summary":"Get all collection curations","description":"Returns all collection curations","responses":{"200":{"description":"List of curations","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean"},"data":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"collection_id":{"type":"string","format":"uuid"},"status":{"type":"string","enum":["pending","approved","rejected","to_review","under_review"]},"assignee":{"type":"string","nullable":true},"created_at":{"type":"string","format":"date-time"},"updated_at":{"type":"string","format":"date-time"}}}}}}}}},"401":{"description":"Unauthorized - authentication required or insufficient permissions","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean"},"error":{"type":"string"},"data":{"type":"object"}}}}}}}}}}}
```

## Get collection curation

> Returns the curation for a collection

```json
{"openapi":"3.0.3","info":{"title":"Builder Server API","version":"2.10.0"},"tags":[{"name":"Curations","description":"Collection and item curation workflow"}],"servers":[{"url":"https://builder-api.decentraland.org/v1","description":"Production environment","variables":{}},{"url":"https://builder-api.decentraland.zone/v1","description":"Development environment","variables":{}}],"security":[{"SignedFetch":[]}],"components":{"securitySchemes":{"SignedFetch":{"type":"apiKey","in":"header","name":"X-Identity-Auth-Chain-*","description":"Signed fetch authentication using Decentraland's ADR-44 specification.\nMultiple headers are used to provide the authentication chain.\n"}}},"paths":{"/collections/{id}/curation":{"get":{"operationId":"getCollectionCuration","tags":["Curations"],"summary":"Get collection curation","description":"Returns the curation for a collection","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid"},"description":"Collection UUID"}],"responses":{"200":{"description":"Collection curation","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean"},"data":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"collection_id":{"type":"string","format":"uuid"},"status":{"type":"string","enum":["pending","approved","rejected","to_review","under_review"]},"assignee":{"type":"string","nullable":true},"created_at":{"type":"string","format":"date-time"},"updated_at":{"type":"string","format":"date-time"}}}}}}}},"401":{"description":"Unauthorized - authentication required or insufficient permissions","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean"},"error":{"type":"string"},"data":{"type":"object"}}}}}},"404":{"description":"Resource not found","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean"},"error":{"type":"string"},"data":{"type":"object"}}}}}},"409":{"description":"Conflict - resource already exists or is in an invalid state","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean"},"error":{"type":"string"},"data":{"type":"object"}}}}}}}}}}}
```

## Create collection curation

> Opens a new review request for a published collection: the creator's "publish changes" or "request review\
> again", or a committee member picking a never-requested collection up. Answers 400 while one is pending.\
> A creator's request is announced in the curators' Slack channel.<br>

```json
{"openapi":"3.0.3","info":{"title":"Builder Server API","version":"2.10.0"},"tags":[{"name":"Curations","description":"Collection and item curation workflow"}],"servers":[{"url":"https://builder-api.decentraland.org/v1","description":"Production environment","variables":{}},{"url":"https://builder-api.decentraland.zone/v1","description":"Development environment","variables":{}}],"security":[{"SignedFetch":[]}],"components":{"securitySchemes":{"SignedFetch":{"type":"apiKey","in":"header","name":"X-Identity-Auth-Chain-*","description":"Signed fetch authentication using Decentraland's ADR-44 specification.\nMultiple headers are used to provide the authentication chain.\n"}}},"paths":{"/collections/{id}/curation":{"post":{"operationId":"createCollectionCuration","tags":["Curations"],"summary":"Create collection curation","description":"Opens a new review request for a published collection: the creator's \"publish changes\" or \"request review\nagain\", or a committee member picking a never-requested collection up. Answers 400 while one is pending.\nA creator's request is announced in the curators' Slack channel.\n","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid"},"description":"Collection UUID"}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"assignee":{"type":"string","description":"Committee member to assign. Only committee members may send it."}}}}}},"responses":{"200":{"description":"Curation created successfully"},"400":{"description":"Bad request - invalid input","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean"},"error":{"type":"string"},"data":{"type":"object"}}}}}},"401":{"description":"Unauthorized - authentication required or insufficient permissions","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean"},"error":{"type":"string"},"data":{"type":"object"}}}}}},"404":{"description":"Resource not found","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean"},"error":{"type":"string"},"data":{"type":"object"}}}}}}}}}}}
```

## Update collection curation

> Updates the latest curation of a collection. Approving, rejecting and changing the assignee (including\
> clearing it) are committee-only and answer 401 otherwise. A change of assignee or verdict is announced in\
> the curators' Slack channel; repeating the current value is not.<br>

```json
{"openapi":"3.0.3","info":{"title":"Builder Server API","version":"2.10.0"},"tags":[{"name":"Curations","description":"Collection and item curation workflow"}],"servers":[{"url":"https://builder-api.decentraland.org/v1","description":"Production environment","variables":{}},{"url":"https://builder-api.decentraland.zone/v1","description":"Development environment","variables":{}}],"security":[{"SignedFetch":[]}],"components":{"securitySchemes":{"SignedFetch":{"type":"apiKey","in":"header","name":"X-Identity-Auth-Chain-*","description":"Signed fetch authentication using Decentraland's ADR-44 specification.\nMultiple headers are used to provide the authentication chain.\n"}}},"paths":{"/collections/{id}/curation":{"patch":{"operationId":"updateCollectionCuration","tags":["Curations"],"summary":"Update collection curation","description":"Updates the latest curation of a collection. Approving, rejecting and changing the assignee (including\nclearing it) are committee-only and answer 401 otherwise. A change of assignee or verdict is announced in\nthe curators' Slack channel; repeating the current value is not.\n","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid"},"description":"Collection UUID"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"status":{"type":"string","enum":["pending","approved","rejected","to_review","under_review"]},"assignee":{"type":"string","nullable":true,"description":"Committee member to assign; `null` or an empty string clears the assignment."}}}}}},"responses":{"200":{"description":"Curation updated successfully"},"400":{"description":"Bad request - invalid input","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean"},"error":{"type":"string"},"data":{"type":"object"}}}}}},"401":{"description":"Unauthorized - authentication required or insufficient permissions","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean"},"error":{"type":"string"},"data":{"type":"object"}}}}}},"404":{"description":"Resource not found","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean"},"error":{"type":"string"},"data":{"type":"object"}}}}}}}}}}}
```

## Create curation forum post

> Creates a forum post for curation assignee change

```json
{"openapi":"3.0.3","info":{"title":"Builder Server API","version":"2.10.0"},"tags":[{"name":"Curations","description":"Collection and item curation workflow"}],"servers":[{"url":"https://builder-api.decentraland.org/v1","description":"Production environment","variables":{}},{"url":"https://builder-api.decentraland.zone/v1","description":"Development environment","variables":{}}],"security":[{"SignedFetch":[]}],"components":{"securitySchemes":{"SignedFetch":{"type":"apiKey","in":"header","name":"X-Identity-Auth-Chain-*","description":"Signed fetch authentication using Decentraland's ADR-44 specification.\nMultiple headers are used to provide the authentication chain.\n"}}},"paths":{"/collections/{id}/curation/post":{"post":{"operationId":"createCurationForumPost","tags":["Curations"],"summary":"Create curation forum post","description":"Creates a forum post for curation assignee change","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid"},"description":"Collection UUID"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object"}}}},"responses":{"200":{"description":"Forum post created successfully"},"401":{"description":"Unauthorized - authentication required or insufficient permissions","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean"},"error":{"type":"string"},"data":{"type":"object"}}}}}}}}}}}
```

## Receive a wearable-validator result

> Callback of the wearable-validator job with the result of an automatic review. Authenticated by the HMAC\
> of the raw body (\`x-wearable-validator-signature\`, \`sha256=\<hex>\` over \`\<timestamp>.\<body>\` with the shared\
> secret) and \`x-wearable-validator-timestamp\` (epoch milliseconds, at most 5 minutes off). The result is\
> logged only; the job posts its findings to the curators' Slack channel. Unknown fields are dropped.<br>

```json
{"openapi":"3.0.3","info":{"title":"Builder Server API","version":"2.10.0"},"tags":[{"name":"Curations","description":"Collection and item curation workflow"}],"servers":[{"url":"https://builder-api.decentraland.org/v1","description":"Production environment","variables":{}},{"url":"https://builder-api.decentraland.zone/v1","description":"Development environment","variables":{}}],"security":[],"paths":{"/collections/{id}/validation-result":{"post":{"operationId":"receiveValidationResult","tags":["Curations"],"summary":"Receive a wearable-validator result","description":"Callback of the wearable-validator job with the result of an automatic review. Authenticated by the HMAC\nof the raw body (`x-wearable-validator-signature`, `sha256=<hex>` over `<timestamp>.<body>` with the shared\nsecret) and `x-wearable-validator-timestamp` (epoch milliseconds, at most 5 minutes off). The result is\nlogged only; the job posts its findings to the curators' Slack channel. Unknown fields are dropped.\n","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid"},"description":"Collection UUID"},{"name":"x-wearable-validator-signature","in":"header","required":true,"schema":{"type":"string","pattern":"^sha256=[0-9a-f]{64}$"},"description":"HMAC-SHA256 of `<timestamp>.<raw body>` with the shared secret"},{"name":"x-wearable-validator-timestamp","in":"header","required":true,"schema":{"type":"string"},"description":"Epoch milliseconds when the request was signed, at most 5 minutes off the server clock"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["validationId","collectionId","verdict","rulesVersion","items"],"properties":{"validationId":{"type":"string"},"collectionId":{"type":"string","description":"Must match the path id"},"verdict":{"type":"string","enum":["passed","rejected","error"]},"reason":{"type":"string","description":"Only with verdict `error`"},"retryable":{"type":"boolean","description":"Only with verdict `error`"},"rulesVersion":{"type":"string"},"items":{"type":"array","maxItems":50,"items":{"type":"object","required":["itemId","contentHash","passed","findings"],"properties":{"itemId":{"type":"string"},"contentHash":{"type":"string"},"passed":{"type":"boolean","nullable":true},"findings":{"type":"array","items":{"type":"object","required":["rule","check","severity","message"],"properties":{"rule":{"type":"string"},"check":{"type":"string"},"severity":{"type":"string","enum":["error","warning"]},"message":{"type":"string"},"where":{"type":"string"},"bodyShape":{"type":"string","enum":["male","female"]},"measured":{"type":"number"},"limit":{"type":"number"},"fix":{"type":"string"},"docs":{"type":"string"}}}},"visualSummary":{"type":"string"},"unsupported":{"type":"boolean"},"error":{"type":"string"}}}}}}}}},"responses":{"204":{"description":"Result received"},"400":{"description":"Invalid body, or the result belongs to another collection","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean"},"error":{"type":"string"},"data":{"type":"object"}}}}}},"401":{"description":"Missing, stale or invalid signature","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean"},"error":{"type":"string"},"data":{"type":"object"}}}}}}}}}}}
```

## Get collection item curations

> Returns item curations for a collection

```json
{"openapi":"3.0.3","info":{"title":"Builder Server API","version":"2.10.0"},"tags":[{"name":"Curations","description":"Collection and item curation workflow"}],"servers":[{"url":"https://builder-api.decentraland.org/v1","description":"Production environment","variables":{}},{"url":"https://builder-api.decentraland.zone/v1","description":"Development environment","variables":{}}],"security":[{"SignedFetch":[]}],"components":{"securitySchemes":{"SignedFetch":{"type":"apiKey","in":"header","name":"X-Identity-Auth-Chain-*","description":"Signed fetch authentication using Decentraland's ADR-44 specification.\nMultiple headers are used to provide the authentication chain.\n"}}},"paths":{"/collections/{id}/itemCurations":{"get":{"operationId":"getCollectionItemCurations","tags":["Curations"],"summary":"Get collection item curations","description":"Returns item curations for a collection","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid"},"description":"Collection UUID"},{"name":"itemIds","in":"query","schema":{"type":"array","items":{"type":"string"}}}],"responses":{"200":{"description":"List of item curations"},"400":{"description":"Bad request - invalid input","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean"},"error":{"type":"string"},"data":{"type":"object"}}}}}},"401":{"description":"Unauthorized - authentication required or insufficient permissions","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean"},"error":{"type":"string"},"data":{"type":"object"}}}}}},"404":{"description":"Resource not found","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean"},"error":{"type":"string"},"data":{"type":"object"}}}}}}}}}}}
```

## Get item curation

> Returns the curation for an item

```json
{"openapi":"3.0.3","info":{"title":"Builder Server API","version":"2.10.0"},"tags":[{"name":"Curations","description":"Collection and item curation workflow"}],"servers":[{"url":"https://builder-api.decentraland.org/v1","description":"Production environment","variables":{}},{"url":"https://builder-api.decentraland.zone/v1","description":"Development environment","variables":{}}],"security":[{"SignedFetch":[]}],"components":{"securitySchemes":{"SignedFetch":{"type":"apiKey","in":"header","name":"X-Identity-Auth-Chain-*","description":"Signed fetch authentication using Decentraland's ADR-44 specification.\nMultiple headers are used to provide the authentication chain.\n"}}},"paths":{"/items/{id}/curation":{"get":{"operationId":"getItemCuration","tags":["Curations"],"summary":"Get item curation","description":"Returns the curation for an item","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid"},"description":"Item UUID"}],"responses":{"200":{"description":"Item curation"},"401":{"description":"Unauthorized - authentication required or insufficient permissions","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean"},"error":{"type":"string"},"data":{"type":"object"}}}}}},"404":{"description":"Resource not found","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean"},"error":{"type":"string"},"data":{"type":"object"}}}}}}}}}}}
```

## Create item curation

> Creates a new curation for an item

```json
{"openapi":"3.0.3","info":{"title":"Builder Server API","version":"2.10.0"},"tags":[{"name":"Curations","description":"Collection and item curation workflow"}],"servers":[{"url":"https://builder-api.decentraland.org/v1","description":"Production environment","variables":{}},{"url":"https://builder-api.decentraland.zone/v1","description":"Development environment","variables":{}}],"security":[{"SignedFetch":[]}],"components":{"securitySchemes":{"SignedFetch":{"type":"apiKey","in":"header","name":"X-Identity-Auth-Chain-*","description":"Signed fetch authentication using Decentraland's ADR-44 specification.\nMultiple headers are used to provide the authentication chain.\n"}}},"paths":{"/items/{id}/curation":{"post":{"operationId":"createItemCuration","tags":["Curations"],"summary":"Create item curation","description":"Creates a new curation for an item","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid"},"description":"Item UUID"}],"responses":{"200":{"description":"Curation created successfully"},"400":{"description":"Bad request - invalid input","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean"},"error":{"type":"string"},"data":{"type":"object"}}}}}},"401":{"description":"Unauthorized - authentication required or insufficient permissions","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean"},"error":{"type":"string"},"data":{"type":"object"}}}}}},"404":{"description":"Resource not found","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean"},"error":{"type":"string"},"data":{"type":"object"}}}}}},"409":{"description":"Conflict - resource already exists or is in an invalid state","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean"},"error":{"type":"string"},"data":{"type":"object"}}}}}}}}}}}
```

## Update item curation

> Updates an item curation

```json
{"openapi":"3.0.3","info":{"title":"Builder Server API","version":"2.10.0"},"tags":[{"name":"Curations","description":"Collection and item curation workflow"}],"servers":[{"url":"https://builder-api.decentraland.org/v1","description":"Production environment","variables":{}},{"url":"https://builder-api.decentraland.zone/v1","description":"Development environment","variables":{}}],"security":[{"SignedFetch":[]}],"components":{"securitySchemes":{"SignedFetch":{"type":"apiKey","in":"header","name":"X-Identity-Auth-Chain-*","description":"Signed fetch authentication using Decentraland's ADR-44 specification.\nMultiple headers are used to provide the authentication chain.\n"}}},"paths":{"/items/{id}/curation":{"patch":{"operationId":"updateItemCuration","tags":["Curations"],"summary":"Update item curation","description":"Updates an item curation","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid"},"description":"Item UUID"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"status":{"type":"string","enum":["pending","approved","rejected","to_review","under_review"]}}}}}},"responses":{"200":{"description":"Curation updated successfully"},"400":{"description":"Bad request - invalid input","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean"},"error":{"type":"string"},"data":{"type":"object"}}}}}},"401":{"description":"Unauthorized - authentication required or insufficient permissions","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean"},"error":{"type":"string"},"data":{"type":"object"}}}}}},"404":{"description":"Resource not found","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean"},"error":{"type":"string"},"data":{"type":"object"}}}}}}}}}}}
```


---

# 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 by asking a question.

Perform an HTTP GET request on the following URL with the `ask` and `goal` query parameters:

```
GET https://docs.decentraland.org/apis/apis/builder-server/curations.md?ask=<question>&goal=<user_goal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is what the user is ultimately trying to achieve, the reason they need the answer. Sharing it helps GitBook give you a better, more relevant answer. A goal is most helpful when it describes the outcome the user wants rather than restating the question. For example, with `ask=how do I create an API token`, a goal like `automate deployments from our CI pipeline` lets GitBook tailor the answer to that use case.

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.
