> ## Documentation Index
> Fetch the complete documentation index at: https://docs.y.uno/llms.txt
> Use this file to discover all available pages before exploring further.

# Retrieve a Provider Overlay

> Returns your organization's overlay on a single provider: whether you offer it, and any custom name, instructions, documentation link and logo.

Returns your organization's overlay on a single provider: whether you offer it, and any custom name, instructions, documentation link and logo.

<Note>
  **This endpoint never returns `404`.** A provider you have never touched answers `200` with `allowed` and no override fields — exactly what an editor needs to render an empty form. Use [Retrieve a Provider's Instruction Override](/reference/organizations/whitelabel/retrieve-provider-instructions) instead when you specifically need to know whether an override exists.
</Note>

A field that is **absent** means "keep the Yuno catalogue's value for it". An override replaces a field wholesale and never merges into it.

### Path Parameters

<ParamField path="provider_id" type="string" required>
  Yuno catalogue provider id in UPPER\_SNAKE\_CASE (`STRIPE`, `ADYEN`, `YUNO_3DS`, …). Case-insensitive — it is normalized to upper case.
</ParamField>

### Response

<ResponseField name="provider_id" type="string">
  Yuno catalogue provider id, normalized to upper case.
</ResponseField>

<ResponseField name="allowed" type="boolean">
  Whether your organization offers this provider.
</ResponseField>

<ResponseField name="name" type="string">
  Display name replacing the catalogue's, when overridden.
</ResponseField>

<ResponseField name="instructions" type="object[]">
  Connection steps replacing the catalogue's, when overridden.
</ResponseField>

<ResponseField name="setup_instructions" type="object[]">
  Grouped setup steps replacing the catalogue's, when overridden.
</ResponseField>

<ResponseField name="more_info_url" type="string">
  Documentation link replacing the catalogue's, when overridden. Always https.
</ResponseField>

<ResponseField name="logo_url" type="string">
  Presigned on this read, valid only for a short window, and never the same twice.
</ResponseField>

<CodeGroup>
  ```bash cURL theme={"theme":{"light":"github-dark","dark":"github-dark-dimmed"}}
  curl -X GET 'https://api.y.uno/v1/whitelabel/providers/STRIPE' \
    -H 'public-api-key: <YOUR_PUBLIC_KEY>' \
    -H 'private-secret-key: <YOUR_SECRET_KEY>'
  ```

  ```json 200 OK — never touched theme={"theme":{"light":"github-dark","dark":"github-dark-dimmed"}}
  {
    "provider_id": "STRIPE",
    "allowed": false
  }
  ```

  ```json 200 OK — customized theme={"theme":{"light":"github-dark","dark":"github-dark-dimmed"}}
  {
    "provider_id": "YUNO_3DS",
    "allowed": true,
    "name": "Acme Risk",
    "more_info_url": "https://docs.example.com/acme-risk",
    "logo_url": "https://s3.amazonaws.com/whitelabel/logo.png?X-Amz-Signature=..."
  }
  ```

  ```json 400 Bad Request theme={"theme":{"light":"github-dark","dark":"github-dark-dimmed"}}
  {
    "code": "VALIDATION_ERROR",
    "messages": ["provider_id is invalid"]
  }
  ```
</CodeGroup>

<Warning>
  `logo_url` is presigned on every read and expires shortly after. Render it immediately; never persist or cache it.
</Warning>

### Errors

<div className="code-nowrap-table dense-table">
  | HTTP  | `code`              | When                                                                             |
  | ----- | ------------------- | -------------------------------------------------------------------------------- |
  | `400` | `VALIDATION_ERROR`  | `provider_id` is not a valid catalogue id (`[A-Z0-9_]`, at most 100 characters). |
  | `401` | `NOT_AUTHENTICATED` | Missing or invalid API keys.                                                     |
</div>


## OpenAPI

````yaml openapi/organizations/whitelabel/retrieve-provider.json GET /whitelabel/providers/{provider_id}
openapi: 3.1.0
info:
  title: White-label Providers API - Retrieve
  version: 1.0.0
servers:
  - url: https://api-sandbox.y.uno/v1
  - url: https://api.eu.y.uno/v1
security:
  - sec0: []
    sec1: []
paths:
  /whitelabel/providers/{provider_id}:
    get:
      summary: Retrieve a Provider Overlay
      description: >-
        Returns your organization's overlay on a single provider: whether you
        offer it, and any custom name, instructions, documentation link and
        logo.


        Never 404s. A provider you have never touched answers `200` with
        `allowed` and no override fields — exactly what an editor needs to
        render an empty form. A field that is absent means "keep the Yuno
        catalogue's value for it"; an override replaces a field wholesale and
        never merges into it.


        `logo_url` is presigned on this read and short-lived: read the provider
        again for a fresh URL rather than storing this one.
      operationId: retrieve-whitelabel-provider
      parameters:
        - name: provider_id
          in: path
          required: true
          description: >-
            Yuno catalogue provider id in UPPER_SNAKE_CASE. Case-insensitive;
            normalized to upper case.
          schema:
            type: string
            example: STRIPE
      responses:
        '200':
          description: The provider's overlay.
          content:
            application/json:
              schema:
                type: object
                properties:
                  provider_id:
                    type: string
                    description: Yuno catalogue provider id, UPPER_SNAKE_CASE.
                    example: STRIPE
                  allowed:
                    type: boolean
                    description: Whether the organization offers this provider.
                    example: true
                  name:
                    type: string
                    description: >-
                      Display name replacing the catalogue's, when overridden.
                      Only Yuno-owned providers can carry one.
                    example: Acme Risk
                  instructions:
                    type: array
                    description: >-
                      Connection steps replacing the catalogue's, when
                      overridden. Absent means keep the catalogue's.
                    items:
                      type: object
                      additionalProperties: true
                      description: >-
                        One instruction step. Accepts `step`, `text`,
                        `text_link`, `link`, `type`, `has_sub_instructions`,
                        `sub_instructions_type` and `sub_instructions` (nested
                        up to 3 levels). `text` and `text_link` are either a
                        plain string or a language map such as `{"EN": "...",
                        "ES": "..."}`. Every `link` must be https.
                  setup_instructions:
                    type: array
                    description: >-
                      Grouped setup steps replacing the catalogue's, when
                      overridden. Absent means keep the catalogue's.
                    items:
                      type: object
                      additionalProperties: true
                      description: >-
                        One setup group. Accepts `title`, `order`,
                        `instructions_type` and `instructions` (the same step
                        shape).
                  more_info_url:
                    type: string
                    format: uri
                    description: >-
                      Documentation link replacing the catalogue's, when
                      overridden. Always https.
                    example: https://docs.example.com/stripe
                  logo_url:
                    type: string
                    readOnly: true
                    description: >-
                      Read-only and ephemeral: a presigned URL minted on this
                      read and valid only for a short window. Never store it —
                      read the provider again for a fresh one.
                    example: >-
                      https://s3.amazonaws.com/whitelabel/logo.png?X-Amz-Signature=...
        '400':
          description: Invalid provider_id.
          content:
            application/json:
              schema:
                type: object
                properties:
                  code:
                    type: string
                    example: VALIDATION_ERROR
                  messages:
                    type: array
                    items:
                      type: string
                    example:
                      - provider_id is invalid
        '401':
          description: Unauthorized — invalid or missing API keys.
          content:
            application/json:
              schema:
                type: object
                properties:
                  code:
                    type: string
                    example: NOT_AUTHENTICATED
                  messages:
                    type: array
                    items:
                      type: string
                    example:
                      - Not authenticated
components:
  securitySchemes:
    sec0:
      type: apiKey
      in: header
      name: PUBLIC-API-KEY
      x-default: <Your PUBLIC-API-KEY>
    sec1:
      type: apiKey
      in: header
      name: PRIVATE-SECRET-KEY
      x-default: <Your PRIVATE-SECRET-KEY>

````