---
id: onboard-update-organisation-cover-image
title: "Update organisation cover image"
description: "Replaces the cover image of the organisation of the API key or token. Send the image as `multipart/form-data` in the `orgimage` field: a PNG, JPEG, GIF or WebP image (the service reads the type from the bytes) of at most 5 MiB and 4096 x 4096 pixels (the defaults of the installation)."
sidebar_label: "Update organisation cover image"
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"}>Update organisation cover image</h1>

<MethodEndpoint method={"post"} path={"/v4/onboard/platform/organisation/coverimage"}></MethodEndpoint>



Replaces the cover image of the organisation of the API key or token. Send the image as `multipart/form-data` in the `orgimage` field: a PNG, JPEG, GIF or WebP image (the service reads the type from the bytes) of at most 5 MiB and 4096 x 4096 pixels (the defaults of the installation).

The service stores the image and sets a new `coverImageId`; the `coverImageUrl` of [Read organisation](/docs/openid4vc-api/onboard-read-organisation) then points to it. The organisation wallet gets the new image a moment after the response.

## Request

<MimeTabs className={"openapi-tabs__mime"}><TabItem label={"multipart/form-data"} value={"multipart/form-data-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><strong className={"openapi-schema__required"}>required</strong></summary><div style={{"textAlign":"left","marginLeft":"1rem"}}><div style={{"marginTop":"1rem","marginBottom":"1rem"}}>

The new cover image.

</div></div><ul style={{"marginLeft":"1rem"}}><SchemaItem collapsible={false} name={"orgimage"} required={true} schemaName={"binary"} qualifierMessage={undefined} schema={{"type":"string","format":"binary","description":"The image file (PNG, JPEG, GIF or WebP)."}}></SchemaItem></ul></details></TabItem></MimeTabs><div><div><ApiTabs label={undefined} id={undefined}><TabItem label={"200"} value={"200"}><div>

The image is stored. The response body is empty.

</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 file is not a PNG, JPEG, GIF or WebP image (`Image type is not supported: use PNG, JPEG, GIF or WebP`), it cannot be read (`Image is not readable`), or it is larger than 4096 x 4096 pixels (`Image is too large: the limit is 4096 x 4096 pixels`).

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

The image is larger than 5 MiB: `Image is too large: the limit is 5 MiB`.

</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, also when the body is not `multipart/form-data` or has no `orgimage` field (`Failed to extract image organization: <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></ApiTabs></div></div>
      