---
id: config-read-digital-wallet-open-id-global-configuration-logo-image
title: "Read issuer configuration logo image"
description: "Returns the logo of the issuer configuration as image bytes: the image of [Update issuer configuration logo image](/docs/openid4vc-api/config-update-digital-wallet-open-id-global-configuration-logo-image). After that upload, `definitionDefaults.display.logo.uri` of the issuer configuration is the URL of this call, with the ID of the issuer configuration in the path. The call is public: it needs no `Authorization` header."
sidebar_label: "Read issuer configuration logo image"
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 issuer configuration logo image</h1>

<MethodEndpoint method={"get"} path={"/v4/config/ows/issuer/configurations/{configurationId}/logo"}></MethodEndpoint>



Returns the logo of the issuer configuration as image bytes: the image of [Update issuer configuration logo image](/docs/openid4vc-api/config-update-digital-wallet-open-id-global-configuration-logo-image). After that upload, `definitionDefaults.display.logo.uri` of the issuer configuration is the URL of this call, with the ID of the issuer configuration in the path. The call is public: it needs no `Authorization` header.

## 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 issuer configuration, as in `definitionDefaults.display.logo.uri` and `definitionDefaults.display.backgroundImage.uri` of the issuer configuration after an image upload.","in":"path","name":"configurationId","required":true,"schema":{"type":"string"},"example":"b7d1f4a2-8c3e-4a91-9f52-0d3c6e7a1b45"}}></ParamsItem></ul></div></details><div><div><ApiTabs label={undefined} id={undefined}><TabItem label={"200"} value={"200"}><div>

The image bytes. The `Content-Type` header is always `image/jpeg`, also for a PNG, GIF or WebP image.

</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={"image/jpeg"} value={"image/jpeg"}><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 style={{"marginTop":".5rem","marginBottom":".5rem","marginLeft":"1rem"}}>

string

</div></ul></details></TabItem></SchemaTabs></TabItem></MimeTabs></div></TabItem><TabItem label={"400"} value={"400"}><div>

No issuer configuration has this ID: `Failed to get issuer configuration logo image by id: <configurationId>`.

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

The issuer configuration has no logo image: `Issuer configuration <configurationId> has no logo image`.

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

The server cannot read the stored image.

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