---
id: config-create-organisation-admin
title: "Create organisation admin"
description: "Creates an admin in the organisation. The dashboard uses this operation on the Manage Team page."
sidebar_label: "Create organisation admin"
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"}>Create organisation admin</h1>

<MethodEndpoint method={"post"} path={"/v2/onboard/organisation/admin"}></MethodEndpoint>



Creates an admin in the organisation. The dashboard uses this operation on the Manage Team page.

The new admin gets an invitation. The `pendingInvitation` field of the admin stays `true` until the admin logs in for the first time. Set `passwordlessLoginEnabled` to `true` to let the admin log in with an EUDI Wallet in place of a password.

## Request

<MimeTabs className={"openapi-tabs__mime"}><TabItem label={"application/json"} value={"application/json-schema"}><details style={{}} className={"openapi-markdown__details mime"} data-collapsed={false} open={true}><summary style={{}} className={"openapi-markdown__details-summary-mime"}><h3 className={"openapi-markdown__details-summary-header-body"}>Body</h3><strong className={"openapi-schema__required"}>required</strong></summary><div style={{"textAlign":"left","marginLeft":"1rem"}}><div style={{"marginTop":"1rem","marginBottom":"1rem"}}>

The admin to create.

</div></div><ul style={{"marginLeft":"1rem"}}><SchemaItem collapsible={false} name={"email"} required={true} schemaName={"string"} qualifierMessage={undefined} schema={{"type":"string","description":"The email address of the admin."}}></SchemaItem><SchemaItem collapsible={false} name={"name"} required={true} schemaName={"string"} qualifierMessage={undefined} schema={{"type":"string","description":"The full name of the admin."}}></SchemaItem><SchemaItem collapsible={false} name={"passwordlessLoginEnabled"} required={false} schemaName={"boolean"} qualifierMessage={undefined} schema={{"type":"boolean","description":"When `true`, the admin can log in with an EUDI Wallet (passwordless login)."}}></SchemaItem></ul></details></TabItem></MimeTabs><div><div><ApiTabs label={undefined} id={undefined}><TabItem label={"201"} value={"201"}><div>

The service created the admin.

</div><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={true} className={"schemaItem"}><details style={{}} className={"openapi-markdown__details"}><summary style={{}}><span className={"openapi-schema__container"}><strong className={"openapi-schema__property"}>admin</strong><span className={"openapi-schema__name"}> object</span></span></summary><div style={{"marginLeft":"1rem"}}><SchemaItem collapsible={false} name={"id"} required={true} schemaName={"string"} qualifierMessage={undefined} schema={{"type":"string","description":"Unique identifier for the admin"}}></SchemaItem><SchemaItem collapsible={false} name={"email"} required={true} schemaName={"email"} qualifierMessage={undefined} schema={{"type":"string","format":"email","description":"Admin's email address"}}></SchemaItem><SchemaItem collapsible={false} name={"name"} required={true} schemaName={"string"} qualifierMessage={undefined} schema={{"type":"string","description":"Full name of the admin"}}></SchemaItem><SchemaItem collapsible={false} name={"phone"} required={true} schemaName={"string"} qualifierMessage={undefined} schema={{"type":"string","description":"Admin's phone number"}}></SchemaItem><SchemaItem collapsible={false} name={"imageId"} required={false} schemaName={"string"} qualifierMessage={undefined} schema={{"type":"string","description":"Unique identifier for the admin's image"}}></SchemaItem><SchemaItem collapsible={false} name={"imageUrl"} required={false} schemaName={"string"} qualifierMessage={undefined} schema={{"type":"string","description":"URL to the admin's image"}}></SchemaItem><SchemaItem collapsible={false} name={"externalId"} required={false} schemaName={"string"} qualifierMessage={undefined} schema={{"type":"string","description":"External identifier for the admin"}}></SchemaItem><SchemaItem collapsible={false} name={"identityProviderId"} required={false} schemaName={"string"} qualifierMessage={undefined} schema={{"type":"string","description":"Identity provider ID"}}></SchemaItem><SchemaItem collapsible={false} name={"roleId"} required={true} schemaName={"integer"} qualifierMessage={undefined} schema={{"type":"integer","description":"Numeric ID of the assigned role"}}></SchemaItem><SchemaItem collapsible={false} name={"roleName"} required={true} schemaName={"string"} qualifierMessage={undefined} schema={{"type":"string","description":"Human-readable name of the role"}}></SchemaItem><SchemaItem collapsible={true} className={"schemaItem"}><details style={{}} className={"openapi-markdown__details"}><summary style={{}}><span className={"openapi-schema__container"}><strong className={"openapi-schema__property"}>authentication</strong><span className={"openapi-schema__name"}> object</span><span className={"openapi-schema__divider"}></span><span className={"openapi-schema__required"}>required</span></span></summary><div style={{"marginLeft":"1rem"}}><div style={{"marginTop":".5rem","marginBottom":".5rem"}}>

Configuration for authentication methods

</div><SchemaItem collapsible={true} className={"schemaItem"}><details style={{}} className={"openapi-markdown__details"}><summary style={{}}><span className={"openapi-schema__container"}><strong className={"openapi-schema__property"}>password</strong><span className={"openapi-schema__name"}> object</span></span></summary><div style={{"marginLeft":"1rem"}}><div style={{"marginTop":".5rem","marginBottom":".5rem"}}>

Configuration for password authentication

</div><SchemaItem collapsible={false} name={"enabled"} required={false} schemaName={"boolean"} qualifierMessage={undefined} schema={{"type":"boolean"}}></SchemaItem></div></details></SchemaItem><SchemaItem collapsible={true} className={"schemaItem"}><details style={{}} className={"openapi-markdown__details"}><summary style={{}}><span className={"openapi-schema__container"}><strong className={"openapi-schema__property"}>oidcPasswordless</strong><span className={"openapi-schema__name"}> object</span></span></summary><div style={{"marginLeft":"1rem"}}><div style={{"marginTop":".5rem","marginBottom":".5rem"}}>

Configuration for Passwordless Login with EUDI Wallet

</div><SchemaItem collapsible={false} name={"enabled"} required={false} schemaName={"boolean"} qualifierMessage={undefined} schema={{"type":"boolean","description":"Whether Passwordless Login is enabled for the user"}}></SchemaItem><SchemaItem collapsible={false} name={"linked"} required={false} schemaName={"boolean"} qualifierMessage={undefined} schema={{"type":"boolean","description":"Whether the user has linked their EUDI Wallet for Passwordless Login"}}></SchemaItem><SchemaItem collapsible={false} name={"authenticatorCredentialExchangeId"} required={false} schemaName={"string"} qualifierMessage={undefined} schema={{"type":"string","description":"Credential Exchange ID of the issued iGrant.io Authenticator credential"}}></SchemaItem></div></details></SchemaItem></div></details></SchemaItem><SchemaItem collapsible={false} name={"pendingInvitation"} required={true} schemaName={"boolean"} qualifierMessage={undefined} schema={{"type":"boolean","description":"Indicates if the admin account has a pending invitation"}}></SchemaItem><SchemaItem collapsible={false} name={"organizationId"} required={false} schemaName={"string"} qualifierMessage={undefined} schema={{"type":"string","description":"Unique identifier for the organization"}}></SchemaItem><SchemaItem collapsible={false} name={"organizationName"} required={false} schemaName={"string"} qualifierMessage={undefined} schema={{"type":"string","description":"Name of the organization"}}></SchemaItem></div></details></SchemaItem></ul></details></TabItem><TabItem label={"Example (from schema)"} value={"Example (from schema)"}><ResponseSamples responseExample={"{\n  \"admin\": {\n    \"id\": \"string\",\n    \"email\": \"user@example.com\",\n    \"name\": \"string\",\n    \"phone\": \"string\",\n    \"imageId\": \"string\",\n    \"imageUrl\": \"string\",\n    \"externalId\": \"string\",\n    \"identityProviderId\": \"string\",\n    \"roleId\": 0,\n    \"roleName\": \"string\",\n    \"authentication\": {\n      \"password\": {\n        \"enabled\": true\n      },\n      \"oidcPasswordless\": {\n        \"enabled\": true,\n        \"linked\": true,\n        \"authenticatorCredentialExchangeId\": \"string\"\n      }\n    },\n    \"pendingInvitation\": true,\n    \"organizationId\": \"string\",\n    \"organizationName\": \"string\"\n  }\n}"} language={"json"}></ResponseSamples></TabItem></SchemaTabs></TabItem></MimeTabs></div></TabItem><TabItem label={"401"} value={"401"}><div>

Unauthorized

</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></ul></details></TabItem><TabItem label={"Example (from schema)"} value={"Example (from schema)"}><ResponseSamples responseExample={"{\n  \"errorCode\": 400,\n  \"errorDescription\": \"Bad input parameter\"\n}"} language={"json"}></ResponseSamples></TabItem></SchemaTabs></TabItem></MimeTabs></div></TabItem><TabItem label={"500"} value={"500"}><div>

Internal server error

</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></ul></details></TabItem><TabItem label={"Example (from schema)"} value={"Example (from schema)"}><ResponseSamples responseExample={"{\n  \"errorCode\": 400,\n  \"errorDescription\": \"Bad input parameter\"\n}"} language={"json"}></ResponseSamples></TabItem></SchemaTabs></TabItem></MimeTabs></div></TabItem></ApiTabs></div></div>
      