---
id: onboard-operator-send-organisation-invitation
title: "Send organisation invitation again"
description: "Sends the invitation e-mail again: to the super admin `adminId` of the organisation, or, without a body, to each super admin of the organisation with a pending invitation."
sidebar_label: "Send organisation invitation again"
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"}>Send organisation invitation again</h1>

<MethodEndpoint method={"post"} path={"/v4/onboard/platform/operator/organisation/{organisationId}/invitation"}></MethodEndpoint>



Sends the invitation e-mail again: to the super admin `adminId` of the organisation, or, without a body, to each super admin of the organisation with a pending invitation.

## 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":"organisationId","in":"path","required":true,"description":"The ID of the organisation, from [List organisations of the installation](/docs/openid4vc-api/onboard-operator-list-organisations).","schema":{"type":"string","maxLength":256,"example":"6731f0c2a1b2c3d4e5f60789"}}}></ParamsItem></ul></div></details><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></summary><div style={{"textAlign":"left","marginLeft":"1rem"}}></div><ul style={{"marginLeft":"1rem"}}><SchemaItem collapsible={false} name={"adminId"} required={false} schemaName={"string"} qualifierMessage={"**Possible values:** `<= 256 characters`"} schema={{"type":"string","maxLength":256,"description":"The ID of one super admin of the organisation. Without it, each super admin with a pending invitation.","example":"6731f1d8a1b2c3d4e5f6078a"}}></SchemaItem></ul></details></TabItem></MimeTabs><div><div><ApiTabs label={undefined} id={undefined}><TabItem label={"204"} value={"204"}><div>

The invitation is sent.

</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></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 organisation has the ID (`errorKey` `organisation_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\": \"organisation_not_found\",\n  \"errorDescription\": \"The organisation does not exist\"\n}"} language={"json"}></ResponseSamples></TabItem></SchemaTabs></TabItem></MimeTabs></div></TabItem><TabItem label={"409"} value={"409"}><div>

No invitation can be sent. `errorKey`: `email_not_configured` (the installation has no e-mail service) or `account_not_invited` (no such super admin has a pending invitation).

</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\": 409,\n  \"errorKey\": \"account_not_invited\",\n  \"errorDescription\": \"No super admin of the organisation has a pending invitation\"\n}"} language={"json"}></ResponseSamples></TabItem></SchemaTabs></TabItem></MimeTabs></div></TabItem></ApiTabs></div></div>
      