---
id: onboard-operator-set-super-admin-one-time-password
title: "Set super admin one-time password"
description: "Sets a one-time password for a super admin. The old password stops working, and all sessions of the admin end. The super admin sets a new password at the first login with the one-time password. The body is empty. The answer has `Cache-Control: no-store`."
sidebar_label: "Set super admin one-time password"
hide_title: true
hide_table_of_contents: true
api: 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
sidebar_class_name: "post api-method"
info_path: docs/openid4vc-api/igrant-io-api-documentation
custom_edit_url: null
---

> **Build this with an AI coding agent.** Install the iGrant.io Agent Skills, then ask your agent to build the integration:
>
> ```bash
> npx skills add L3-iGrant/skills
> ```


import ApiTabs from "@theme/ApiTabs";
import DiscriminatorTabs from "@theme/DiscriminatorTabs";
import MethodEndpoint from "@theme/ApiExplorer/MethodEndpoint";
import SecuritySchemes from "@theme/ApiExplorer/SecuritySchemes";
import MimeTabs from "@theme/MimeTabs";
import ParamsItem from "@theme/ParamsItem";
import ResponseSamples from "@theme/ResponseSamples";
import SchemaItem from "@theme/SchemaItem";
import SchemaTabs from "@theme/SchemaTabs";
import Markdown from "@theme/Markdown";
import OperationTabs from "@theme/OperationTabs";
import TabItem from "@theme/TabItem";

<h1 className={"openapi__heading"}>Set super admin one-time password</h1>

<MethodEndpoint method={"post"} path={"/v4/onboard/platform/operator/super-admin/{adminId}/one-time-password"}></MethodEndpoint>



Sets a one-time password for a super admin. The old password stops working, and all sessions of the admin end. The super admin sets a new password at the first login with the one-time password. The body is empty. The answer has `Cache-Control: no-store`.

## Request

<details style={{"marginBottom":"1rem"}} className={"openapi-markdown__details"} data-collapsed={false} open={true}><summary style={{}}><h3 className={"openapi-markdown__details-summary-header-params"}>Path Parameters</h3></summary><div><ul><ParamsItem className={"paramsItem"} param={{"name":"adminId","in":"path","required":true,"description":"The ID of a super admin of an organisation, from [List super admins](/docs/openid4vc-api/onboard-operator-list-super-admins).","schema":{"type":"string","maxLength":256,"example":"6731f1d8a1b2c3d4e5f6078a"}}}></ParamsItem></ul></div></details><div><div><ApiTabs label={undefined} id={undefined}><TabItem label={"200"} value={"200"}><div>

The one-time password. It is in this answer only.

</div><details style={{"textAlign":"left","marginBottom":"1rem"}} className={"openapi-markdown__details"} data-collaposed={true} open={false}><summary style={{}}><strong>Response Headers</strong></summary><ul style={{"marginLeft":"1rem"}}></ul></details><div><MimeTabs className={"openapi-tabs__mime"} schemaType={"response"}><TabItem label={"application/json"} value={"application/json"}><SchemaTabs className={"openapi-tabs__schema"}><TabItem label={"Schema"} value={"Schema"}><details style={{}} className={"openapi-markdown__details response"} data-collapsed={false} open={true}><summary style={{}} className={"openapi-markdown__details-summary-response"}><strong>Schema</strong></summary><div style={{"textAlign":"left","marginLeft":"1rem"}}></div><ul style={{"marginLeft":"1rem"}}><SchemaItem collapsible={false} name={"oneTimePassword"} required={true} schemaName={"string"} qualifierMessage={undefined} schema={{"type":"string","description":"The one-time password. The admin sets a new password at the first login with it.","example":"Xq7#mP2v!kR9wT4z"}}></SchemaItem><SchemaItem collapsible={false} name={"expiresAt"} required={true} schemaName={"date-time"} qualifierMessage={undefined} schema={{"type":"string","format":"date-time","description":"When the one-time password expires (RFC 3339, UTC).","example":"2026-11-19T09:00:00Z"}}></SchemaItem></ul></details></TabItem><TabItem label={"Example (from schema)"} value={"Example (from schema)"}><ResponseSamples responseExample={"{\n  \"oneTimePassword\": \"Xq7#mP2v!kR9wT4z\",\n  \"expiresAt\": \"2026-11-19T09:00:00Z\"\n}"} language={"json"}></ResponseSamples></TabItem><TabItem label={"Example"} value={"Example"}><ResponseSamples responseExample={"{\n  \"oneTimePassword\": \"Xq7#mP2v!kR9wT4z\",\n  \"expiresAt\": \"2026-11-19T10:00:00Z\"\n}"} language={"json"}></ResponseSamples></TabItem></SchemaTabs></TabItem></MimeTabs></div></TabItem><TabItem label={"400"} value={"400"}><div>

The request is not valid (`errorKey` `invalid_request`): for example a body that is not JSON, a member that the operation does not know, a missing required member, or a query value that is not allowed. `errorDescription` names the member.

</div><details style={{"textAlign":"left","marginBottom":"1rem"}} className={"openapi-markdown__details"} data-collaposed={true} open={false}><summary style={{}}><strong>Response Headers</strong></summary><ul style={{"marginLeft":"1rem"}}></ul></details><div><MimeTabs className={"openapi-tabs__mime"} schemaType={"response"}><TabItem label={"application/json"} value={"application/json"}><SchemaTabs className={"openapi-tabs__schema"}><TabItem label={"Schema"} value={"Schema"}><details style={{}} className={"openapi-markdown__details response"} data-collapsed={false} open={true}><summary style={{}} className={"openapi-markdown__details-summary-response"}><strong>Schema</strong></summary><div style={{"textAlign":"left","marginLeft":"1rem"}}></div><ul style={{"marginLeft":"1rem"}}><SchemaItem collapsible={false} name={"errorCode"} required={true} schemaName={"integer"} qualifierMessage={undefined} schema={{"type":"integer","example":400}}></SchemaItem><SchemaItem collapsible={false} name={"errorDescription"} required={true} schemaName={"string"} qualifierMessage={undefined} schema={{"type":"string","example":"Bad input parameter"}}></SchemaItem><SchemaItem collapsible={false} name={"errorKey"} required={false} schemaName={"string"} qualifierMessage={undefined} schema={{"type":"string","description":"A text code of the refusal that does not change when the text changes. Only some refusals have it, for example `organisation_suspended`, `feature_disabled` or `purpose_exists`."}}></SchemaItem></ul></details></TabItem><TabItem label={"Example (from schema)"} value={"Example (from schema)"}><ResponseSamples responseExample={"{\n  \"errorCode\": 400,\n  \"errorDescription\": \"Bad input parameter\",\n  \"errorKey\": \"string\"\n}"} language={"json"}></ResponseSamples></TabItem><TabItem label={"Example"} value={"Example"}><ResponseSamples responseExample={"{\n  \"errorCode\": 400,\n  \"errorKey\": \"invalid_request\",\n  \"errorDescription\": \"field status must be \\\"suspended\\\" or \\\"active\\\"\"\n}"} language={"json"}></ResponseSamples></TabItem></SchemaTabs></TabItem></MimeTabs></div></TabItem><TabItem label={"401"} value={"401"}><div>

The `Authorization` header is missing, or the access token is not valid or has expired.

</div><details style={{"textAlign":"left","marginBottom":"1rem"}} className={"openapi-markdown__details"} data-collaposed={true} open={false}><summary style={{}}><strong>Response Headers</strong></summary><ul style={{"marginLeft":"1rem"}}></ul></details><div><MimeTabs className={"openapi-tabs__mime"} schemaType={"response"}><TabItem label={"application/json"} value={"application/json"}><SchemaTabs className={"openapi-tabs__schema"}><TabItem label={"Schema"} value={"Schema"}><details style={{}} className={"openapi-markdown__details response"} data-collapsed={false} open={true}><summary style={{}} className={"openapi-markdown__details-summary-response"}><strong>Schema</strong></summary><div style={{"textAlign":"left","marginLeft":"1rem"}}></div><ul style={{"marginLeft":"1rem"}}><SchemaItem collapsible={false} name={"errorCode"} required={true} schemaName={"integer"} qualifierMessage={undefined} schema={{"type":"integer","example":400}}></SchemaItem><SchemaItem collapsible={false} name={"errorDescription"} required={true} schemaName={"string"} qualifierMessage={undefined} schema={{"type":"string","example":"Bad input parameter"}}></SchemaItem><SchemaItem collapsible={false} name={"errorKey"} required={false} schemaName={"string"} qualifierMessage={undefined} schema={{"type":"string","description":"A text code of the refusal that does not change when the text changes. Only some refusals have it, for example `organisation_suspended`, `feature_disabled` or `purpose_exists`."}}></SchemaItem></ul></details></TabItem><TabItem label={"Example (from schema)"} value={"Example (from schema)"}><ResponseSamples responseExample={"{\n  \"errorCode\": 400,\n  \"errorDescription\": \"Bad input parameter\",\n  \"errorKey\": \"string\"\n}"} language={"json"}></ResponseSamples></TabItem></SchemaTabs></TabItem></MimeTabs></div></TabItem><TabItem label={"403"} value={"403"}><div>

The caller cannot call the operations of a platform admin. A login of an admin who is not a platform admin (an admin of another organisation, or an admin of the platform operator organisation without the platform admin right) gets `errorKey` `not_platform_admin`. An API key gets the older body `{"Code", "Message"}`: no API key can call these operations.

</div><details style={{"textAlign":"left","marginBottom":"1rem"}} className={"openapi-markdown__details"} data-collaposed={true} open={false}><summary style={{}}><strong>Response Headers</strong></summary><ul style={{"marginLeft":"1rem"}}></ul></details><div><MimeTabs className={"openapi-tabs__mime"} schemaType={"response"}><TabItem label={"application/json"} value={"application/json"}><SchemaTabs className={"openapi-tabs__schema"}><TabItem label={"Schema"} value={"Schema"}><details style={{}} className={"openapi-markdown__details response"} data-collapsed={false} open={true}><summary style={{}} className={"openapi-markdown__details-summary-response"}><strong>Schema</strong></summary><div style={{"textAlign":"left","marginLeft":"1rem"}}></div><ul style={{"marginLeft":"1rem"}}><div><span className={"badge badge--info"}>anyOf</span><SchemaTabs><TabItem label={"MOD1"} value={"0-item-properties"}><SchemaItem collapsible={false} name={"errorCode"} required={true} schemaName={"integer"} qualifierMessage={undefined} schema={{"type":"integer","example":400}}></SchemaItem><SchemaItem collapsible={false} name={"errorDescription"} required={true} schemaName={"string"} qualifierMessage={undefined} schema={{"type":"string","example":"Bad input parameter"}}></SchemaItem><SchemaItem collapsible={false} name={"errorKey"} required={false} schemaName={"string"} qualifierMessage={undefined} schema={{"type":"string","description":"A text code of the refusal that does not change when the text changes. Only some refusals have it, for example `organisation_suspended`, `feature_disabled` or `purpose_exists`."}}></SchemaItem></TabItem><TabItem label={"Older error body"} value={"1-item-properties"}><SchemaItem collapsible={false} name={"Code"} required={true} schemaName={"integer"} qualifierMessage={undefined} schema={{"type":"integer","description":"The HTTP status.","example":403}}></SchemaItem><SchemaItem collapsible={false} name={"Message"} required={true} schemaName={"string"} qualifierMessage={undefined} schema={{"type":"string","description":"What went wrong.","example":"Unauthorized access;User doesn't have enough permissions;"}}></SchemaItem></TabItem></SchemaTabs></div></ul></details></TabItem><TabItem label={"Example (from schema)"} value={"Example (from schema)"}><ResponseSamples responseExample={"{}"} language={"json"}></ResponseSamples></TabItem><TabItem label={"Example"} value={"Example"}><ResponseSamples responseExample={"{\n  \"errorCode\": 403,\n  \"errorKey\": \"not_platform_admin\",\n  \"errorDescription\": \"Access denied: only a platform admin of the platform operator organisation can call this route\"\n}"} language={"json"}></ResponseSamples></TabItem></SchemaTabs></TabItem></MimeTabs></div></TabItem><TabItem label={"404"} value={"404"}><div>

No account of the operation has the ID (`errorKey` `account_not_found`).

</div><details style={{"textAlign":"left","marginBottom":"1rem"}} className={"openapi-markdown__details"} data-collaposed={true} open={false}><summary style={{}}><strong>Response Headers</strong></summary><ul style={{"marginLeft":"1rem"}}></ul></details><div><MimeTabs className={"openapi-tabs__mime"} schemaType={"response"}><TabItem label={"application/json"} value={"application/json"}><SchemaTabs className={"openapi-tabs__schema"}><TabItem label={"Schema"} value={"Schema"}><details style={{}} className={"openapi-markdown__details response"} data-collapsed={false} open={true}><summary style={{}} className={"openapi-markdown__details-summary-response"}><strong>Schema</strong></summary><div style={{"textAlign":"left","marginLeft":"1rem"}}></div><ul style={{"marginLeft":"1rem"}}><SchemaItem collapsible={false} name={"errorCode"} required={true} schemaName={"integer"} qualifierMessage={undefined} schema={{"type":"integer","example":400}}></SchemaItem><SchemaItem collapsible={false} name={"errorDescription"} required={true} schemaName={"string"} qualifierMessage={undefined} schema={{"type":"string","example":"Bad input parameter"}}></SchemaItem><SchemaItem collapsible={false} name={"errorKey"} required={false} schemaName={"string"} qualifierMessage={undefined} schema={{"type":"string","description":"A text code of the refusal that does not change when the text changes. Only some refusals have it, for example `organisation_suspended`, `feature_disabled` or `purpose_exists`."}}></SchemaItem></ul></details></TabItem><TabItem label={"Example (from schema)"} value={"Example (from schema)"}><ResponseSamples responseExample={"{\n  \"errorCode\": 400,\n  \"errorDescription\": \"Bad input parameter\",\n  \"errorKey\": \"string\"\n}"} language={"json"}></ResponseSamples></TabItem><TabItem label={"Example"} value={"Example"}><ResponseSamples responseExample={"{\n  \"errorCode\": 404,\n  \"errorKey\": \"account_not_found\",\n  \"errorDescription\": \"The account does not exist\"\n}"} language={"json"}></ResponseSamples></TabItem></SchemaTabs></TabItem></MimeTabs></div></TabItem></ApiTabs></div></div>
      