---
id: config-list-issued-credentials
title: "List issued credentials"
description: "Lists the credentials that the issuer signed for an issuance history: the first issue, each re-issuance (a new version) and each copy of a batch. The order is newest first (the highest `version`, then the highest `copy`). Use `event` to get only the first issue or only the re-issuances. The items have no token: read the token of one credential with [Read issued credential](/docs/openid4vc-api/config-read-issued-credential). To read the next page, send the `nextCursor` of the answer as `cursor`."
sidebar_label: "List issued credentials"
hide_title: true
hide_table_of_contents: true
api: eJztW+1zG7fR/1d27kvFmSN1lGhbvrSZR5WUWLYbuxEVt1E0PuhuSSI6AlcAJ4nV8H/vLIB7I0+yraYzT1N/iSkcXnYX+/LbxeY+yFCniheGSxHEwVuujQazQEgVZigMZzn9zYwd5FqXqEDzucAMZlIBE3aQiRRhwbWRahXbqTOutHELQkCWLkDhsJ66w0DgLdyg0lyKATCRuUmpLFYgZ8Dgipl0MYLpAkGqDBVwTWtQG7/3Dh2z4PMFDSV+qySk0wV0vtGmyWAE5xohwRsUJgEjYY4GpMhXm/SCVM14i2rtqOEGlxoW7AZBSDDyGkUMCllm59u/iQMp2kKEW24WcPEjTbOHZK2Plzu7mUz1rixQ8Gxykw5ZwXdTKWZ8PqSdh27JsFkyGMFUNqcKvDNQsDmGoFG4sYQGj0qlpUqIIBpjQt+iAqYhSd2XURAGskDFSANOsyAO3LmkCaf21KNGE4IwKJhiSzSodBBf3G+oz7SjOIB36YKJOQLPKgI2lSWEmZJLSKrxV2744nLU7HPitznNLB8XlqzPFV/G59ywfHjL8hzNkOYMuRdoW56ekAvie4vKR0/IuTYPHdMcMPRbDUJSL3uWtx1UYHWSboKTFAtmFkEYCLZEuo4eOQRhoPAfJVeYBbFRJYaBThe4ZEF8H5hVQeu0UVzMg/U67LulpSQ2rSZzZy2kPTGMyTDGURRChjNW5gb2ohEcCmkWqOCG5SXCnN+ghlfT6XuYRFFN9j9KVKuG7pwvuekQOmO57qOUC4NzVEEYLLngy3IZxOMwWLI7/zuKwsBTE8R70QMc9ak78QRXOJMKQ2Js215G8BbJkrkBWRrr0hpv4CaQ1+CGbIaTZsTAwN1DBs6GNgUCxxKENM4SuXGmn8jZTKNJYKeaN3hIcm7XzxLdw5f8St7CkomVv+RULitJtG478rdNRHs2neOT8Gu5LOhf5oRoXTL9Ut7BplIYLkp03D3ubx6QiPdAbYk8SdOcZJ+qalFX1aI+/UrIxpK440JzLWFBjtRIw/LEhjD3+4gVBWYuEoEol1eoSB7uIrxgZjw3qDAD8h4jOPOCkWJD/ex9hC7UOvmP4NhbZmK5TJ4mNC7SvMxwSgR/luiupMyRiaBli3Zqn7hcuEriJoy24UQtgjrijiBRuL2oG3s/cLMgG+UmBJbnT2PbetovMa0wQEGqcRE4+uxa//Nyvb6kP3UhhUZNi/eiiP7pyuOdwNqKahjVBgCayCWLIuLi+4AVRc5TG5J3f9W0x/02gfLqV0y7vFwEVsmI3doWg8swKBSFeMMdjW5OsxFTipGINsfrA7a5aQX5fxscskeRoVX8XlRI5FoLbFDYb4iv7M7cBuWOfEkBPHH2zgqSXKVVbptD+nnDcp59p+Sy+n0uDCdLW8g8Q/UGV9NFubwqFLcr69EjF1qCMLA8fa+Y/S6k4TOvEpakG3ltT9q+3axPibfjZReTdeRFTOMdWxa5DUcRO8D92Xj4PNu7Gk7YCxwezMYvh/tXz7IX6Uscs71JsG6k0udtt4/3sysamsMJg3TDsNeTIi+1/7aZT3QInuyv/cV8HiWF1Ny0SSFl46JStkaFd6INwmhmaB2/888bcJ+cld9k0KEwWlcq82XuZpP6xs8+6k9ZV1Trlp72nD+TaslMEAcZMzg0fImkfmWesyui3aHNLh0fqoyr6wK69wo7P353BPv7+y9DOJ8edSUS7EV7z4fj8TB6Nh2P4yiKo+hnq1S1Gf02pNKFa8OUqW7bYLoQPGU52KO4WcFOIq5micXpNOMvZ+8gqemw0IYJWGYy/Qa6LIWgZCkyYl26DFSWalSz4TzAb8cHYYbHuMC7oo8LS8aXswGnxqXgN6ggZwZpX+bunWUEp7ShLPIGAe8Krla1PeWME/BxdLSIJjXhYg4pOS/r3Jx29nnIHql9WkCvP7wBU+/hFPDF8/2DQUWBOwmucdWEsZbGcg1XJAkw0soxoSOTx4y92bDLSeXV++HUNtSE27qI0ZBI0peOSPrT81A5Ug/ubVXEZaFQaszAxVNaUDmvljcYWDJbkeZJcnY1j1qC7dOrM1vSonCK2sSQsDRFrT/a5YmjvOXEbOxPFM4U6kU9iW2Q33YinbnEWCdq9gCbT7OWM22gvU0lds+k44/rjqN7V6A4PZ78dHQK41EEGlO7cjwetNWovmK/lUZBRwncxBwVumA90f7BMNKTIPvKl2egzVQMSUP/R7qWwtgMpj2cYY40allojc8Yz0uFyQZq2N6PboT9p2KOwhT5jY86nQvbijvr9bqNoP5T9Nj9PxEEW/owgkO7yFPNNcy4ICy2tvS2AP2TbNSXKqrLb+qFjUL65NOqvC19ON9ACeKXZdB9539OHhwCM64y5WsS7ygTdMWCdr76J+sjR1DLnBZbwL4kF2gPcNm3Sw25dhtu5+j0yXncjvaO919UrLuJT3DcHc4a4mzMdNRYOuO6gGDLKnohb/Xnsd8m2Gfi69ZQnedduJwgQDx4fsD2nw9nLxgOJ9GLl8ODyYtseICTvXRvPI7GL5+1khuqwTkUHdVotQGlDYJsoNvBdDyJJ3vxOPq5kwBtTvHorouKaM6L4Tga7r2cRvvNnF4wEKQym3784ej8zau91z/9oA9/Lt/+bSYmSpR7+uzgr+fLHxevfn2lzp+9/3tfclUl/e3AF7Sj0WbGFZOFdJwGDVD237ZLO0aXsECW2Qr5Pf01cTWBz87vO75fKamOZEYOyP4+bindZbgV0TaiQ726z4CbjCmyGcnm9n3JSe3f/0yJtihKchX+RSCoNnmDq0+HpEMw5IRSmdV1EYWzUlclhUyiwzv+DaE2LLfMDmpvI5qqm361f5qhKpFNFR3FkEg1Z4JrK/SPutQFEsSlGDdDZkqFHzOuyYf6CFeUqpAaP+IdvYklzg+vt7ko2JxALBX1rcU3PoeItyoeQ2Kr4Uk12lTZ67Kw/9JUZEMvEguWrP+4ku06svVlvoTq5noX3z457HqO+hjvrIhPV0R0ccAjhGqSzyA9DvN/jeCQSp/1dbTlSitLcS3kraBF3OjuZ490/P4ZFrlcYUaebNNixl8t5ndqMRaKHpZmIRX/p907AXf7pBdLrjUX8zptPXx/6pId5bOMtnb3Kc7+dvl12rdPLSyW5/LWY3hfVq5nV4mdzVZTWdRyr19M6RHZPZi7PO1KZitI7n8JSId+CUL4JfgLas3m+EuwtqV6SP42PGMiu5J379Sc3jQ99/YOqUytgfnKtnbzukZUZ930wuzpqQi21NDxtR47GjY11RFj8RODImeGEK9L462rMaWiCo6ceZTm7nub+yq9axMYtp9J7AtJpeJJn+Yw/1y9RAsQqxk+HyR51FjRfRl8UbGcidW7mQVBT3cS9MKx6TYMN9aq39lrt3vYy+9NvZrP9cOYBRuQLjC9rscK7qqJcubtU5YGdeszpFJtpYeeDa9mweX6sgsDnTebRPvNnDg4F8ybIJUILDHfnGtU1i7EH4xzCShkOV9AgcrapRT6m6AX4Ey+uuvfqbv+QW694dRuoO2VrNfYKIS0+j+2XfWzr6j4d6s05wLvCkwNZqBR3VQOclMJ1mGgMS0VNyvroQ8LboXkHj/ss29Mz3Pk08LAsDlls8Gxa7WBDw5MNtW2QRAGp1tPq6QPSzQLSTnw3PYJ2AabONi9mfhHwF15q3dd4Wa3Orpq2Nm97+vAWe+mnbYox2ZfT9QxLqWXQhAGpaJcd2FMoePd3QyXkt4iR3xOSeiIy2D7Nf29klnpKogPbPOpHc6My1EeWK7d501CLpvbOSMrdMZT3VHzeuwG/HO7u97mvb0D9La0/azqVavwi+9FegAf1q0mhcIZv4PEEQMJ7NhPDHTBUhzEGxvE4Cf+kRV8eI2rb5MRHClkBoG1z82YXlxJpjKg9w8Fh2kqS2HgWzjGG8zJiRCpmmp1tMy+JOmqwedWX39Mvunu6FDh6w9TsAhrJ8HV69FolAw8VJtE42QEJ/Se2aAqBwIb0FlX1mljgZjZJqQ2QOWm3m8/qaizZLVAoqPFbkn9f1bznVVLYblOIGXComDqSFMrB0C8LJLGXNwi+rtaWB8p1bV2DRy8Jz2UD0Na47qr6geXGLJWz9AWZra8cQM7j0LlRiZVv2SRs9RfekhewqkAvZBIgSG9WVgfaWtxruBdiY4mEGTmOfZj5tp7bvO9Y7uF2IzKA5QU252tQZMCYTYIvcCt7D1vuoXoSU28mrXA9APO27VH+Fy71ioNO0nX4yUD11Px8JXcMk8rgUQH6JPJOKpI6ZyfIUsNv2H0REBhgRzCTFYhnqU2xOOS2WKfLotCKvN/jbtpGpO+b4a6fqrt4voaGqqF1pv0ZSZeJrFv8233JFmGuu82IT2t8ZltRVp2J7x336mu2NmFdx505AxWslQbyREBfJbafkJWzSyUvOEZukdWLxsNpyfT7+DseEje46ejEE7P3u2enhzB+CAa7w+f2bdb2Fkev3X90x/2j+CnI9h5/WE6aFPl8rGT8+PTKmTS7JOSMBET8OdSc0G5yIealhnPUYd1ZlYF3FYjMImYonnOUxTaAqnK4RcsXSDsjaKt+7u9vR0x+3kk1XzXr9W7b0+PTn44OxnSmnWTWXXvM5NpuURhqkBSl6mpcDwZ7Y/GtLaQ2iyZaNFT9/NuoIINDWoB0a9N8P+TTfAezhCO3i1yxu0DslXgew8YL4KbiSs9zDghd3mrq5cQ5X+0gWMQBvEDzdsb8HQhtaHt7++vmMZzla/XNOxaFy2i9Bi8frh4UHd/+97uXrlcEwSsW7zt0iAOHPT8Ilr/O7u2H5FJ3bz9RKH8Tvu2H5FY3b79RIn9lzdnPyKZjR7tp8rn/0c39iN8Vg0uDYOX9IfirqXhixzgzo++TjSAr/830r/5fyP1XlmV9otV+8Zq99cX8GxF2lcG6Dbd1EPbFtTaZKv+t26Xbr4/mVIPVEmRuF18uLbFB/+Ddu8lcLMO4Uig/7aK+90lfyTY+QZX39bT3ZcHF9S1j8p6ifH1+l+4Me2O
sidebar_class_name: "get 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"}>List issued credentials</h1>

<MethodEndpoint method={"get"} path={"/v4/config/ows/issuer/issuance-history/{credentialExchangeId}/credentials"}></MethodEndpoint>



Lists the credentials that the issuer signed for an issuance history: the first issue, each re-issuance (a new version) and each copy of a batch. The order is newest first (the highest `version`, then the highest `copy`). Use `event` to get only the first issue or only the re-issuances. The items have no token: read the token of one credential with [Read issued credential](/docs/openid4vc-api/config-read-issued-credential). To read the next page, send the `nextCursor` of the answer as `cursor`.

## 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":"The credential exchange id of the issuance history, from `issuanceHistory[].credentialExchangeId` of [Issue credential](/docs/openid4vc-api/config-digital-wallet-open-id-issue-credential), from [List issuance history](/docs/openid4vc-api/config-list-digital-wallet-open-id-credential-history), or from an issuer event.","in":"path","name":"credentialExchangeId","required":true,"schema":{"type":"string"}}}></ParamsItem></ul></div></details><details style={{"marginBottom":"1rem"}} className={"openapi-markdown__details"} data-collapsed={false} open={true}><summary style={{}}><h3 className={"openapi-markdown__details-summary-header-params"}>Query Parameters</h3></summary><div><ul><ParamsItem className={"paramsItem"} param={{"description":"The most items in the page: 1 to 100, default 20. Another value gives HTTP 400.","in":"query","name":"limit","required":false,"schema":{"type":"integer","minimum":1,"maximum":100,"default":20}}}></ParamsItem><ParamsItem className={"paramsItem"} param={{"description":"The `nextCursor` of the page before, to read the next page. Leave it out for the first page. Use it as it is: a changed cursor gives HTTP 400. Do not send it with `offset` (HTTP 400).","in":"query","name":"cursor","required":false,"schema":{"type":"string"}}}></ParamsItem><ParamsItem className={"paramsItem"} param={{"description":"How many items come before the page: 0 to 10000. Use it only to jump to a page of a pager, then continue with the `nextCursor` of the answer. Do not send it with `cursor` (HTTP 400). Another value gives HTTP 400.","in":"query","name":"offset","required":false,"schema":{"type":"integer","minimum":0,"maximum":10000}}}></ParamsItem><ParamsItem className={"paramsItem"} param={{"description":"`true`: the answer also has `total` and `totalCapped`, the number of items of the filtered list. Send it on the first page only, for a pager. Default `false`. Another value gives HTTP 400.","in":"query","name":"includeTotal","required":false,"schema":{"type":"boolean","default":false}}}></ParamsItem><ParamsItem className={"paramsItem"} param={{"description":"`issued`: only the credentials of the first issue. `reissued`: only the re-issuances. Without it, all. Another value gives HTTP 400.","in":"query","name":"event","required":false,"schema":{"type":"string","enum":["issued","reissued"]}}}></ParamsItem></ul></div></details><div><div><ApiTabs label={undefined} id={undefined}><TabItem label={"200"} value={"200"}><div>

One page of the issued credentials.

</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"}>items</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"}}><li><div style={{"fontSize":"var(--ifm-code-font-size)","opacity":"0.6","marginLeft":"-.5rem","paddingBottom":".5rem"}}>Array [</div></li><SchemaItem collapsible={false} name={"id"} required={true} schemaName={"string"} qualifierMessage={undefined} schema={{"type":"string","description":"The id of the issued credential.","example":"c0a8e3f1-6d2b-4a7e-8f19-3b5d7c9e1a24"}}></SchemaItem><SchemaItem collapsible={false} name={"version"} required={true} schemaName={"integer"} qualifierMessage={undefined} schema={{"type":"integer","description":"The version of the credential: 1 for the first issue, plus 1 for each re-issuance.","example":43}}></SchemaItem><SchemaItem collapsible={false} name={"copy"} required={true} schemaName={"integer"} qualifierMessage={undefined} schema={{"type":"integer","description":"The position of the copy in a batch issuance (0 for the first copy, and for a credential without a batch).","example":0}}></SchemaItem><SchemaItem collapsible={false} name={"event"} required={true} schemaName={"string"} qualifierMessage={"**Possible values:** [`issued`, `reissued`]"} schema={{"type":"string","enum":["issued","reissued"],"description":"`issued`: the first issue. `reissued`: a re-issuance."}}></SchemaItem><SchemaItem collapsible={false} name={"issuedAt"} required={true} schemaName={"date-time"} qualifierMessage={undefined} schema={{"type":"string","format":"date-time","nullable":true,"description":"When the issuer signed the credential (RFC 3339, UTC).","example":"2026-11-05T11:00:00Z"}}></SchemaItem><SchemaItem collapsible={false} name={"validFrom"} required={true} schemaName={"date-time"} qualifierMessage={undefined} schema={{"type":"string","format":"date-time","nullable":true,"description":"The start of the technical validity (`nbf`, or the MSO `validFrom` of an mdoc; RFC 3339, UTC), rounded to the hour."}}></SchemaItem><SchemaItem collapsible={false} name={"validUntil"} required={true} schemaName={"date-time"} qualifierMessage={undefined} schema={{"type":"string","format":"date-time","nullable":true,"description":"The end of the technical validity (`exp`, or the MSO `validUntil` of an mdoc; RFC 3339, UTC), rounded to the hour. It is never later than the administrative expiry of the claims or the end of the signing certificate."}}></SchemaItem><SchemaItem collapsible={false} name={"holderKeyThumbprint"} required={true} schemaName={"string"} qualifierMessage={undefined} schema={{"type":"string","nullable":true,"description":"The JWK thumbprint (RFC 7638) of the holder key that the credential is bound to, or `null` for a credential without a holder key."}}></SchemaItem><SchemaItem collapsible={false} name={"holderKeyChanged"} required={true} schemaName={"boolean"} qualifierMessage={undefined} schema={{"type":"boolean","description":"`true` when the holder key is not the key of the version before (the wallet used a new key for the re-issuance)."}}></SchemaItem><SchemaItem collapsible={false} name={"tokenGrant"} required={true} schemaName={"string"} qualifierMessage={undefined} schema={{"type":"string","nullable":true,"description":"The token that the wallet used for the credential request: `access_token` (the first issue) or `refresh_token` (a re-issuance).","example":"refresh_token"}}></SchemaItem><SchemaItem collapsible={true} className={"schemaItem"}><details style={{}} className={"openapi-markdown__details"}><summary style={{}}><span className={"openapi-schema__container"}><strong className={"openapi-schema__property"}>notification</strong><span className={"openapi-schema__name"}> object</span><span className={"openapi-schema__divider"}></span><span className={"openapi-schema__nullable"}>nullable</span><span className={"openapi-schema__required"}>required</span></span></summary><div style={{"marginLeft":"1rem"}}><div style={{"marginTop":".5rem","marginBottom":".5rem"}}>

The last notification of the wallet for this credential (OpenID4VCI 1.0 section 11), or `null` when the wallet sent none.

</div><SchemaItem collapsible={false} name={"event"} required={true} schemaName={"string"} qualifierMessage={undefined} schema={{"type":"string","description":"The `event` of the notification: `credential_accepted`, `credential_deleted` or `credential_failure`.","example":"credential_accepted"}}></SchemaItem><SchemaItem collapsible={false} name={"at"} required={true} schemaName={"date-time"} qualifierMessage={undefined} schema={{"type":"string","format":"date-time","nullable":true,"description":"When the issuer received the notification (RFC 3339, UTC)."}}></SchemaItem></div></details></SchemaItem><SchemaItem collapsible={false} name={"revokedAt"} required={true} schemaName={"date-time"} qualifierMessage={undefined} schema={{"type":"string","format":"date-time","nullable":true,"description":"When the issuer revoked the credential (RFC 3339, UTC), or `null`. A revocation is final."}}></SchemaItem><li><div style={{"fontSize":"var(--ifm-code-font-size)","opacity":"0.6","marginLeft":"-.5rem"}}>]</div></li></div></details></SchemaItem><SchemaItem collapsible={false} name={"nextCursor"} required={true} schemaName={"string"} qualifierMessage={undefined} schema={{"type":"string","nullable":true,"description":"The cursor of the next page, or `null` on the last page."}}></SchemaItem><SchemaItem collapsible={false} name={"total"} required={false} schemaName={"integer"} qualifierMessage={"**Possible values:** `<= 10000`"} schema={{"type":"integer","minimum":0,"maximum":10000,"description":"The number of items of the filtered list, at most 10000. Only with `includeTotal=true`. When the list has more items, the value is 10000 and `totalCapped` is `true`.","example":137}}></SchemaItem><SchemaItem collapsible={false} name={"totalCapped"} required={false} schemaName={"boolean"} qualifierMessage={undefined} schema={{"type":"boolean","description":"`true` when the filtered list has more than 10000 items: `total` then shows 10000. Only with `includeTotal=true`.","example":false}}></SchemaItem></ul></details></TabItem><TabItem label={"Example (from schema)"} value={"Example (from schema)"}><ResponseSamples responseExample={"{\n  \"items\": [\n    {\n      \"id\": \"c0a8e3f1-6d2b-4a7e-8f19-3b5d7c9e1a24\",\n      \"version\": 43,\n      \"copy\": 0,\n      \"event\": \"issued\",\n      \"issuedAt\": \"2026-11-05T11:00:00Z\",\n      \"validFrom\": \"2026-11-11T17:37:52.401Z\",\n      \"validUntil\": \"2026-11-11T17:37:52.401Z\",\n      \"holderKeyThumbprint\": \"string\",\n      \"holderKeyChanged\": true,\n      \"tokenGrant\": \"refresh_token\",\n      \"notification\": {\n        \"event\": \"credential_accepted\",\n        \"at\": \"2026-11-11T17:37:52.401Z\"\n      },\n      \"revokedAt\": \"2026-11-11T17:37:52.401Z\"\n    }\n  ],\n  \"nextCursor\": \"string\",\n  \"total\": 137,\n  \"totalCapped\": false\n}"} language={"json"}></ResponseSamples></TabItem><TabItem label={"Example"} value={"Example"}><ResponseSamples responseExample={"{\n  \"items\": [\n    {\n      \"id\": \"ee868a36-f7ae-4079-847d-8e42c2110195\",\n      \"version\": 1,\n      \"copy\": 0,\n      \"event\": \"issued\",\n      \"issuedAt\": \"2026-11-08T14:42:10Z\",\n      \"validFrom\": \"2026-11-08T14:00:00Z\",\n      \"validUntil\": \"2027-10-29T03:00:00Z\",\n      \"holderKeyThumbprint\": \"codT_NCUKH2JVNsAZuLXfn4rnu2sS8QUmRhHjHrU5PY\",\n      \"holderKeyChanged\": false,\n      \"tokenGrant\": \"access_token\",\n      \"notification\": null,\n      \"revokedAt\": null\n    }\n  ],\n  \"nextCursor\": null\n}"} language={"json"}></ResponseSamples></TabItem></SchemaTabs></TabItem></MimeTabs></div></TabItem><TabItem label={"400"} value={"400"}><div>

A paging or filter value is not valid: `limit` is not 1 to 100, `offset` is not 0 to 10000, the request has both `offset` and `cursor`, the cursor is not valid, `includeTotal` is not `true` or `false`, or `event` is not `issued` or `reissued`. Also when the organisation is unknown or its organisation wallet is not deployed.

</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={"401"} value={"401"}><div>

The `Authorization` header is missing, or the API key or token is not valid.

</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 API key or token does not allow this call. An API key without the scope of the operation gets the older body `{"Code", "Message"}`. An `X-SandboxOrgId` header that names another sandbox organisation than the one of the API key gets `{"errorCode", "errorDescription"}`. When a platform admin has turned off the feature of the operation for the organisation, the answer has `errorKey` `feature_disabled` and the member `feature` (the name of the feature).

</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  \"Code\": 403,\n  \"Message\": \"Unauthorized access;User doesn't have enough permissions;\"\n}"} language={"json"}></ResponseSamples></TabItem></SchemaTabs></TabItem></MimeTabs></div></TabItem><TabItem label={"404"} value={"404"}><div>

No issuance history of the organisation has this credential exchange id.

</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={"500"} value={"500"}><div>

Unexpected 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><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></ApiTabs></div></div>
      