> For the complete documentation index, see [llms.txt](https://timechain.gitbook.io/neucron/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://timechain.gitbook.io/neucron/api-references/asset21-security-tokens.md).

# Asset21 (Security Tokens)

Security-token governance — multi-approver mint / redeem / freeze style requests.

* Get request by ID
* Approve / reject (may return MFA intent)

> Requires `X-Neucron-Business-ID`.

## Get Asset21 Request

> Fetch an Asset21 governance request by ID.

```json
{"openapi":"3.0.3","info":{"title":"Neucron API Documentation","version":"1.0.0"},"tags":[{"name":"Asset21 (Security Tokens)","description":"Security-token governance — multi-approver mint / redeem / freeze style requests.\n\n- Get request by ID\n- Approve / reject (may return MFA intent)\n\n> Requires `X-Neucron-Business-ID`."}],"servers":[{"url":"https://dev.neucron.io","description":"Development"},{"url":"https://api.neucron.io","description":"Production"}],"security":[{"BearerAuth":[]}],"components":{"securitySchemes":{"BearerAuth":{"type":"http","scheme":"bearer","bearerFormat":"JWT","description":"Access token from `POST /auth/login` or `POST /auth/signup`. Also send header `X-Identifier: NEUCRON`. For business APIs, include `X-Neucron-Business-ID`."}}},"paths":{"/asset21/request-by-id":{"get":{"tags":["Asset21 (Security Tokens)"],"summary":"Get Asset21 Request","description":"Fetch an Asset21 governance request by ID.","operationId":"asset21_get_asset21_request","responses":{"200":{"description":"200 OK — Request completed successfully.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"400":{"description":"400 Bad Request — Invalid or missing parameters."},"401":{"description":"401 Unauthorized — Missing or invalid authentication."},"403":{"description":"403 Forbidden — Insufficient permissions."},"404":{"description":"404 Not Found — Resource does not exist."},"409":{"description":"409 Conflict — Resource conflict (e.g. duplicate)."},"500":{"description":"500 Internal Server Error — Server-side failure."}},"parameters":[{"name":"requestID","in":"query","required":true,"description":"Request ID.","schema":{"type":"string"}},{"name":"X-Identifier","in":"header","required":true,"description":"Platform identifier. Use `NEUCRON`.","schema":{"type":"string"}},{"name":"X-Neucron-Business-ID","in":"header","required":false,"description":"Active business context. Required for business-scoped operations.","schema":{"type":"string"}}]}}}}
```

## Handle Asset21 Request

> Approve or reject an Asset21 request (may return intent for MFA).

```json
{"openapi":"3.0.3","info":{"title":"Neucron API Documentation","version":"1.0.0"},"tags":[{"name":"Asset21 (Security Tokens)","description":"Security-token governance — multi-approver mint / redeem / freeze style requests.\n\n- Get request by ID\n- Approve / reject (may return MFA intent)\n\n> Requires `X-Neucron-Business-ID`."}],"servers":[{"url":"https://dev.neucron.io","description":"Development"},{"url":"https://api.neucron.io","description":"Production"}],"security":[{"BearerAuth":[]}],"components":{"securitySchemes":{"BearerAuth":{"type":"http","scheme":"bearer","bearerFormat":"JWT","description":"Access token from `POST /auth/login` or `POST /auth/signup`. Also send header `X-Identifier: NEUCRON`. For business APIs, include `X-Neucron-Business-ID`."}}},"paths":{"/asset21/request-handle":{"post":{"tags":["Asset21 (Security Tokens)"],"summary":"Handle Asset21 Request","description":"Approve or reject an Asset21 request (may return intent for MFA).","operationId":"asset21_handle_asset21_request","responses":{"200":{"description":"200 OK — Request completed successfully.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"400":{"description":"400 Bad Request — Invalid or missing parameters."},"401":{"description":"401 Unauthorized — Missing or invalid authentication."},"403":{"description":"403 Forbidden — Insufficient permissions."},"404":{"description":"404 Not Found — Resource does not exist."},"409":{"description":"409 Conflict — Resource conflict (e.g. duplicate)."},"500":{"description":"500 Internal Server Error — Server-side failure."}},"parameters":[{"name":"requestID","in":"query","required":true,"description":"Request ID.","schema":{"type":"string"}},{"name":"approved","in":"query","required":true,"description":"`true` to approve, `false` to reject.","schema":{"type":"boolean"}},{"name":"X-Identifier","in":"header","required":true,"description":"Platform identifier. Use `NEUCRON`.","schema":{"type":"string"}},{"name":"X-Neucron-Business-ID","in":"header","required":false,"description":"Active business context. Required for business-scoped operations.","schema":{"type":"string"}}],"requestBody":{"required":false,"description":"Request body (`application/json`)","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}}}}}}
```

## Update Asset21 Request

> Update an Asset21 request with an explicit APPROVE/REJECT action.

```json
{"openapi":"3.0.3","info":{"title":"Neucron API Documentation","version":"1.0.0"},"tags":[{"name":"Asset21 (Security Tokens)","description":"Security-token governance — multi-approver mint / redeem / freeze style requests.\n\n- Get request by ID\n- Approve / reject (may return MFA intent)\n\n> Requires `X-Neucron-Business-ID`."}],"servers":[{"url":"https://dev.neucron.io","description":"Development"},{"url":"https://api.neucron.io","description":"Production"}],"security":[{"BearerAuth":[]}],"components":{"securitySchemes":{"BearerAuth":{"type":"http","scheme":"bearer","bearerFormat":"JWT","description":"Access token from `POST /auth/login` or `POST /auth/signup`. Also send header `X-Identifier: NEUCRON`. For business APIs, include `X-Neucron-Business-ID`."}}},"paths":{"/asset21/request":{"put":{"tags":["Asset21 (Security Tokens)"],"summary":"Update Asset21 Request","description":"Update an Asset21 request with an explicit APPROVE/REJECT action.","operationId":"asset21_update_asset21_request","responses":{"200":{"description":"200 OK — Request completed successfully.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"400":{"description":"400 Bad Request — Invalid or missing parameters."},"401":{"description":"401 Unauthorized — Missing or invalid authentication."},"403":{"description":"403 Forbidden — Insufficient permissions."},"404":{"description":"404 Not Found — Resource does not exist."},"409":{"description":"409 Conflict — Resource conflict (e.g. duplicate)."},"500":{"description":"500 Internal Server Error — Server-side failure."}},"parameters":[{"name":"X-Identifier","in":"header","required":true,"description":"Platform identifier. Use `NEUCRON`.","schema":{"type":"string"}},{"name":"X-Neucron-Business-ID","in":"header","required":false,"description":"Active business context. Required for business-scoped operations.","schema":{"type":"string"}}],"requestBody":{"required":true,"description":"Request body (`application/json`)","content":{"application/json":{"schema":{"type":"object","properties":{"action":{"type":"string","description":"`APPROVE` or `REJECT`."},"assetId":{"type":"string","description":"Asset ID."},"requestId":{"type":"string","description":"Request ID."}},"required":["action","assetId","requestId"]}}}}}}}}
```
