---
id: onboard-read-data-verifier-user
title: "Read data verifier user"
description: "Returns a data verifier user of the organisation. The `apiKey` is an empty string."
sidebar_label: "Read data verifier user"
hide_title: true
hide_table_of_contents: true
api: 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
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"}>Read data verifier user</h1>

<MethodEndpoint method={"get"} path={"/v4/onboard/platform/organisation/data-verifier-user/{dataVerifierUserId}"}></MethodEndpoint>



Returns a data verifier user of the organisation. The `apiKey` is an empty string.

## 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 ID of the data verifier user.","in":"path","name":"dataVerifierUserId","required":true,"schema":{"type":"string","example":"6af1c3d2e4b5a69788990a1b"}}}></ParamsItem></ul></div></details><div><div><ApiTabs label={undefined} id={undefined}><TabItem label={"200"} value={"200"}><div>

The data verifier user.

</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"}>dataVerifierUser</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"}}>

A person who verifies credentials for the organisation with the Data Verifier mobile app.

</div><SchemaItem collapsible={false} name={"id"} required={true} schemaName={"string"} qualifierMessage={undefined} schema={{"type":"string","description":"The ID of the data verifier user.","example":"6af1c3d2e4b5a69788990a1b"}}></SchemaItem><SchemaItem collapsible={false} name={"organisationId"} required={true} schemaName={"string"} qualifierMessage={undefined} schema={{"type":"string","description":"The ID of the organisation of the user.","example":"6ae2bf741c3dadfeb27982ec"}}></SchemaItem><SchemaItem collapsible={false} name={"name"} required={true} schemaName={"string"} qualifierMessage={undefined} schema={{"type":"string","description":"The name of the user.","example":"Front desk verifier"}}></SchemaItem><SchemaItem collapsible={false} name={"email"} required={true} schemaName={"string"} qualifierMessage={undefined} schema={{"type":"string","description":"The e-mail address of the user that gets the magic link. Can be empty when `phone` is set.","example":"verifier@acme-bank.example.com"}}></SchemaItem><SchemaItem collapsible={false} name={"phone"} required={true} schemaName={"string"} qualifierMessage={undefined} schema={{"type":"string","description":"The phone number of the user that gets the magic link by SMS. Can be empty.","example":""}}></SchemaItem><SchemaItem collapsible={false} name={"disabled"} required={true} schemaName={"boolean"} qualifierMessage={undefined} schema={{"type":"boolean","description":"Whether the user is disabled. A disabled user cannot use the Data Verifier app.","example":false}}></SchemaItem><SchemaItem collapsible={false} name={"timeStamp"} required={true} schemaName={"string"} qualifierMessage={undefined} schema={{"type":"string","description":"The time when the user was created, in UTC (`YYYY-MM-DDTHH:MM:SSZ`).","example":"2026-10-28T09:14:03Z"}}></SchemaItem><SchemaItem collapsible={false} name={"apiKey"} required={true} schemaName={"string"} qualifierMessage={undefined} schema={{"type":"string","description":"The API key of the user for the Data Verifier app (`owsk_...`), valid for 90 days. Only the response of the create has it, once; every other response has an empty string. A new magic link revokes the key, and the app gets a new key when it opens the link.","example":""}}></SchemaItem></div></details></SchemaItem></ul></details></TabItem><TabItem label={"Example (from schema)"} value={"Example (from schema)"}><ResponseSamples responseExample={"{\n  \"dataVerifierUser\": {\n    \"id\": \"6af1c3d2e4b5a69788990a1b\",\n    \"organisationId\": \"6ae2bf741c3dadfeb27982ec\",\n    \"name\": \"Front desk verifier\",\n    \"email\": \"verifier@acme-bank.example.com\",\n    \"phone\": \"\",\n    \"disabled\": false,\n    \"timeStamp\": \"2026-10-28T09:14:03Z\",\n    \"apiKey\": \"\"\n  }\n}"} language={"json"}></ResponseSamples></TabItem><TabItem label={"Example"} value={"Example"}><ResponseSamples responseExample={"{\n  \"dataVerifierUser\": {\n    \"id\": \"6af1c3d2e4b5a69788990a1b\",\n    \"organisationId\": \"6ae2bf741c3dadfeb27982ec\",\n    \"name\": \"Front desk verifier\",\n    \"email\": \"verifier@acme-bank.example.com\",\n    \"phone\": \"\",\n    \"disabled\": false,\n    \"timeStamp\": \"2026-10-28T09:14:03Z\",\n    \"apiKey\": \"\"\n  }\n}"} language={"json"}></ResponseSamples></TabItem></SchemaTabs></TabItem></MimeTabs></div></TabItem><TabItem label={"400"} value={"400"}><div>

No data verifier user of the organisation has the ID, or the user is deleted: `Failed to get data verifier user: <dataVerifierUserId> for org: <organisationId>`.

</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 the feature `account` of the organisation is off (see [Read organisation features](/docs/openid4vc-api/onboard-read-organisation-features)), the body has the `errorKey` `feature_disabled` and the member `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={"missingScope"} value={"missingScope"}><Markdown> The API key does not have the scope</Markdown><ResponseSamples responseExample={"{\n  \"Code\": 403,\n  \"Message\": \"Unauthorized access;User doesn't have enough permissions;\"\n}"} language={"json"}></ResponseSamples></TabItem><TabItem label={"featureDisabled"} value={"featureDisabled"}><Markdown> The feature account is off</Markdown><ResponseSamples responseExample={"{\n  \"errorCode\": 403,\n  \"errorDescription\": \"The feature account is not enabled for this organisation\",\n  \"errorKey\": \"feature_disabled\",\n  \"feature\": \"account\"\n}"} language={"json"}></ResponseSamples></TabItem></SchemaTabs></TabItem></MimeTabs></div></TabItem></ApiTabs></div></div>
      