---
id: service-read-download-my-data-status
title: "Read the open data download request of the individual"
description: "Tells if the individual has an open request (state `1` or `2`) to download its data in your organisation, and gives its ID, state and date. Use it, for example, to show a cancel button. This route takes an API key or a token of the identity provider of the organisation, not an individual token or a token of the privacy dashboard login."
sidebar_label: "Read the open data download request of the individual"
hide_title: true
hide_table_of_contents: true
api: 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
sidebar_class_name: "get api-method"
info_path: docs/consent-management-individual-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 the open data download request of the individual</h1>

<MethodEndpoint method={"get"} path={"/v4/service/consent/organisation/data-download/status"}></MethodEndpoint>



Tells if the individual has an open request (state `1` or `2`) to download its data in your organisation, and gives its ID, state and date. Use it, for example, to show a cancel button. This route takes an API key or a token of the identity provider of the organisation, not an individual token or a token of the privacy dashboard login.

## Request

<details style={{"marginBottom":"1rem"}} className={"openapi-markdown__details"} data-collapsed={false} open={true}><summary style={{}}><h3 className={"openapi-markdown__details-summary-header-params"}>Header Parameters</h3></summary><div><ul><ParamsItem className={"paramsItem"} param={{"in":"header","name":"X-ConsentBB-IndividualId","required":false,"schema":{"type":"string"},"example":"6af081b138e8f33dcf799628","description":"ID of the individual, or its `externalId`. Mandatory with an API key: without it the answer is `400` (\"IndividualId is not present in request header\"), and an unknown individual gets `400` too. With an individual token, leave it out: the server takes the individual from the token. Send it only on the routes that list it: with an API key that has resource scopes (for example `consent-records:read`), another route answers `400` to a request with this header."}}></ParamsItem></ul></div></details><div><div><ApiTabs label={undefined} id={undefined}><TabItem label={"200"} value={"200"}><div>

The open download request, or `requestOngoing` `false`.

</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={false} name={"requestOngoing"} required={true} schemaName={"boolean"} qualifierMessage={undefined} schema={{"type":"boolean","example":true,"description":"`true` when the individual has an open request of this type."}}></SchemaItem><SchemaItem collapsible={false} name={"id"} required={true} schemaName={"string"} qualifierMessage={undefined} schema={{"type":"string","example":"6af19d442d6fb7b6ac6efd11","description":"ID of the open request, or `\"\"`."}}></SchemaItem><SchemaItem collapsible={false} name={"state"} required={true} schemaName={"integer"} qualifierMessage={"**Possible values:** [`0`, `1`, `2`]"} schema={{"type":"integer","enum":[0,1,2],"example":2,"description":"State of the open request: `1` initiated, `2` acknowledged. `0` when there is no open request."}}></SchemaItem><SchemaItem collapsible={false} name={"stateStr"} required={true} schemaName={"string"} qualifierMessage={"**Possible values:** [``, `Request initiated`, `Request acknowledged`]"} schema={{"type":"string","enum":["","Request initiated","Request acknowledged"],"example":"Request acknowledged","description":"Name of the state, or `\"\"`."}}></SchemaItem><SchemaItem collapsible={false} name={"requestedDate"} required={true} schemaName={"string"} qualifierMessage={undefined} schema={{"type":"string","example":"2026-11-09 10:15:32 +0000 UTC","description":"Date and time of the open request in UTC, in the text form `YYYY-MM-DD hh:mm:ss +0000 UTC` (not RFC 3339), or `\"\"`."}}></SchemaItem></ul></details></TabItem><TabItem label={"Example (from schema)"} value={"Example (from schema)"}><ResponseSamples responseExample={"{\n  \"requestOngoing\": true,\n  \"id\": \"6af19d442d6fb7b6ac6efd11\",\n  \"state\": 2,\n  \"stateStr\": \"Request acknowledged\",\n  \"requestedDate\": \"2026-11-09 10:15:32 +0000 UTC\"\n}"} language={"json"}></ResponseSamples></TabItem><TabItem label={"open"} value={"open"}><Markdown> The individual has an open request</Markdown><ResponseSamples responseExample={"{\n  \"requestOngoing\": true,\n  \"id\": \"6af2d6182d6fb7b6ac6efd19\",\n  \"state\": 1,\n  \"stateStr\": \"Request initiated\",\n  \"requestedDate\": \"2026-11-10 08:30:16 +0000 UTC\"\n}"} language={"json"}></ResponseSamples></TabItem><TabItem label={"none"} value={"none"}><Markdown> The individual has no open request</Markdown><ResponseSamples responseExample={"{\n  \"requestOngoing\": false,\n  \"id\": \"\",\n  \"state\": 0,\n  \"stateStr\": \"\",\n  \"requestedDate\": \"\"\n}"} language={"json"}></ResponseSamples></TabItem></SchemaTabs></TabItem></MimeTabs></div></TabItem><TabItem label={"400"} value={"400"}><div>

The `X-ConsentBB-IndividualId` header is missing, or the individual does not exist.

</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={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 API key or the token is missing or not valid.

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

Internal server error.

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