---
id: config-delete-digital-wallet-open-id-api-key
title: "Delete API key"
description: "Deletes an API key. The service marks the key as deleted and stops accepting it. The key no longer shows in the list of API keys."
sidebar_label: "Delete API key"
hide_title: true
hide_table_of_contents: true
api: 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
sidebar_class_name: "delete 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"}>Delete API key</h1>

<MethodEndpoint method={"delete"} path={"/v2/config/admin/apikey/{apiKeyId}"}></MethodEndpoint>



Deletes an API key. The service marks the key as deleted and stops accepting it. The key no longer shows in the list of API keys.

The token itself stays valid in form until its expiry, but the service refuses it, so every client that uses it must move to another key.

## 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={{"description":"Unique ID of an object","in":"path","name":"apiKeyId","required":true,"schema":{"type":"string"}}}></ParamsItem></ul></div></details><div><div><ApiTabs label={undefined} id={undefined}><TabItem label={"200"} value={"200"}><div>

The service deleted the API key and returns the key as it was at the moment of the delete.

</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={true} className={"schemaItem"}><details style={{}} className={"openapi-markdown__details"}><summary style={{}}><span className={"openapi-schema__container"}><strong className={"openapi-schema__property"}>apiKey</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"}}>

The API key that the service deleted.

</div><SchemaItem collapsible={false} name={"id"} required={true} schemaName={"string"} qualifierMessage={undefined} schema={{"type":"string","description":"Unique identifier of the API key.","example":"6889e1a4c5b2f30001a3d720"}}></SchemaItem><SchemaItem collapsible={false} name={"name"} required={true} schemaName={"string"} qualifierMessage={undefined} schema={{"type":"string","description":"Name of the API key. The service does not check this value for uniqueness.","example":"Production issuance key"}}></SchemaItem><SchemaItem collapsible={false} name={"scopes"} required={true} schemaName={"string[]"} qualifierMessage={"**Possible values:** [`config`, `audit`, `service`, `onboard`]"} schema={{"type":"array","description":"Scopes of the API key. Each scope opens a group of endpoints. The service refuses any other value with HTTP 400.","items":{"type":"string","enum":["config","audit","service","onboard"]},"example":["config","service"]}}></SchemaItem><SchemaItem collapsible={false} name={"apiKey"} required={true} schemaName={"string"} qualifierMessage={undefined} schema={{"type":"string","description":"The signed JSON Web Token. Send it as `Authorization: ApiKey <apiKey>`. The token holds the scopes, the organisation, the organisation administrator and, when the key is bound to a sandbox organisation, the sandbox organisation.","example":"eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJTY29wZXMiOlsiY29uZmlnIl0..."}}></SchemaItem><SchemaItem collapsible={false} name={"expiryInDays"} required={true} schemaName={"integer"} qualifierMessage={undefined} schema={{"type":"integer","description":"Lifetime of the API key in days, counted from the moment the service created or last updated the key. The service uses 30 days when you send `0` or a negative value.","default":30,"example":30}}></SchemaItem><SchemaItem collapsible={false} name={"timestamp"} required={true} schemaName={"date-time"} qualifierMessage={undefined} schema={{"type":"string","format":"date-time","description":"Moment when the service last wrote the API key, in UTC. The service sets this value on create and on every update, including the delete operation.","example":"2026-08-09T10:15:30Z"}}></SchemaItem><SchemaItem collapsible={false} name={"expiryTimestamp"} required={true} schemaName={"date-time"} qualifierMessage={undefined} schema={{"type":"string","format":"date-time","description":"Moment when the API key expires, in UTC.","example":"2026-09-08T10:15:30Z"}}></SchemaItem><SchemaItem collapsible={false} name={"type"} required={true} schemaName={"string"} qualifierMessage={"**Possible values:** [`igrantio`, `aip10`]"} schema={{"type":"string","description":"Type of the API key. The list operation returns only keys of type `igrantio`; these are the keys that you create with this group of operations.","enum":["igrantio","aip10"],"example":"igrantio"}}></SchemaItem><SchemaItem collapsible={false} name={"sandboxOrgId"} required={false} schemaName={"string"} qualifierMessage={undefined} schema={{"type":"string","description":"Identifier of the sandbox organisation that the API key is bound to. The field is absent when the key belongs to the main wallet of the organisation.","example":"6889e1a4c5b2f30001a3d710"}}></SchemaItem><SchemaItem collapsible={true} className={"schemaItem"}><details style={{}} className={"openapi-markdown__details"}><summary style={{}}><span className={"openapi-schema__container"}><strong className={"openapi-schema__property"}>createdBy</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"}}>

The user who created the API key, and the moment of creation. The service keeps this as log metadata.

</div><SchemaItem collapsible={false} name={"id"} required={true} schemaName={"string"} qualifierMessage={undefined} schema={{"type":"string","description":"Identifier of the user who created the API key. The value is an empty string for a key created with an API key.","example":"6889e1a4c5b2f30001a3d6e0"}}></SchemaItem><SchemaItem collapsible={false} name={"email"} required={true} schemaName={"string"} qualifierMessage={undefined} schema={{"type":"string","description":"Email address of the user who created the API key.","example":"admin@example.com"}}></SchemaItem><SchemaItem collapsible={false} name={"at"} required={true} schemaName={"date-time"} qualifierMessage={undefined} schema={{"type":"string","format":"date-time","description":"Moment of creation, in UTC.","example":"2026-08-09T10:15:30Z"}}></SchemaItem></div></details></SchemaItem></div></details></SchemaItem></ul></details></TabItem><TabItem label={"Example (from schema)"} value={"Example (from schema)"}><ResponseSamples responseExample={"{\n  \"apiKey\": {\n    \"id\": \"6889e1a4c5b2f30001a3d720\",\n    \"name\": \"Production issuance key\",\n    \"scopes\": [\n      \"config\",\n      \"service\"\n    ],\n    \"apiKey\": \"eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJTY29wZXMiOlsiY29uZmlnIl0...\",\n    \"expiryInDays\": 30,\n    \"timestamp\": \"2026-08-09T10:15:30Z\",\n    \"expiryTimestamp\": \"2026-09-08T10:15:30Z\",\n    \"type\": \"igrantio\",\n    \"sandboxOrgId\": \"6889e1a4c5b2f30001a3d710\",\n    \"createdBy\": {\n      \"id\": \"6889e1a4c5b2f30001a3d6e0\",\n      \"email\": \"admin@example.com\",\n      \"at\": \"2026-08-09T10:15:30Z\"\n    }\n  }\n}"} language={"json"}></ResponseSamples></TabItem><TabItem label={"Example"} value={"Example"}><ResponseSamples responseExample={"{\n  \"apiKey\": {\n    \"id\": \"6889e1a4c5b2f30001a3d720\",\n    \"name\": \"Production issuance key\",\n    \"scopes\": [\n      \"config\"\n    ],\n    \"apiKey\": \"eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJTY29wZXMiOlsiY29uZmlnIl0...\",\n    \"expiryInDays\": 30,\n    \"timestamp\": \"2026-08-09T12:40:05Z\",\n    \"expiryTimestamp\": \"2026-09-08T10:15:30Z\",\n    \"type\": \"igrantio\",\n    \"createdBy\": {\n      \"id\": \"6889e1a4c5b2f30001a3d6e0\",\n      \"email\": \"admin@example.com\",\n      \"at\": \"2026-08-09T10:15:30Z\"\n    }\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={"403"} value={"403"}><div>

The caller has no permission for this operation. Only an organisation administrator can manage API keys.

</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. The service also returns this status when the API key of `apiKeyId` does not exist, or when it is already deleted.

</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>
      