> ## 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.

# List the White-label Provider Overlay

> Returns your organization's overlay on the Yuno provider catalogue: which providers your dashboard offers, and the wording, links and logos you have set for them.

Returns your organization's overlay on the Yuno provider catalogue: which providers your dashboard offers, and the custom wording, links and logos you have set for them.

It is an **overlay, not the catalogue**. Read the provider catalogue separately and join this on top — this response only covers providers you have an opinion about.

<Note>
  This filters a picker. It is **not authorization**: it does not stop a connection being created against a provider you do not offer.
</Note>

### Response

<ResponseField name="filtered" type="boolean">
  Whether your organization has at least one allowlist entry. `false` means a white-label organization currently offers no provider at all (the allowlist is opt-in), not that everything is offered. **Branch on this, never on the length of `providers`** — the list is also non-empty when your only entries are instruction or logo overrides.
</ResponseField>

<ResponseField name="providers" type="object[]">
  The union of your allowlist, your instruction overrides, and your logo overrides. A provider can carry custom wording or a custom logo without being offered, in which case it appears here with `allowed: false`.

  <Expandable title="item">
    <ResponseField name="provider_id" type="string">
      Yuno catalogue provider id, UPPER\_SNAKE\_CASE.
    </ResponseField>

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

    <ResponseField name="has_instruction_override" type="boolean">
      Whether any instruction override exists. A cheap badge flag — redundant with the content fields below, and not authoritative for rendering them.
    </ResponseField>

    <ResponseField name="name" type="string">
      Display name replacing the catalogue's, when overridden. Absent means keep the catalogue's.
    </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 and short-lived. Never store it — read again for a fresh one.
    </ResponseField>
  </Expandable>
</ResponseField>

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

  ```json 200 OK — with an allowlist theme={"theme":{"light":"github-dark","dark":"github-dark-dimmed"}}
  {
    "filtered": true,
    "providers": [
      {
        "provider_id": "ADYEN",
        "allowed": true,
        "has_instruction_override": false
      },
      {
        "provider_id": "STRIPE",
        "allowed": true,
        "has_instruction_override": true,
        "more_info_url": "https://docs.example.com/stripe"
      },
      {
        "provider_id": "YUNO_3DS",
        "allowed": false,
        "has_instruction_override": false,
        "logo_url": "https://s3.amazonaws.com/whitelabel/logo.png?X-Amz-Signature=..."
      }
    ]
  }
  ```

  ```json 200 OK — no allowlist theme={"theme":{"light":"github-dark","dark":"github-dark-dimmed"}}
  {
    "filtered": false,
    "providers": []
  }
  ```

  ```json 401 Unauthorized theme={"theme":{"light":"github-dark","dark":"github-dark-dimmed"}}
  {
    "code": "NOT_AUTHENTICATED",
    "messages": ["Not authenticated"]
  }
  ```
</CodeGroup>

<Note>
  `YUNO_3DS` in the example above is **not offered** (`allowed: false`) and still appears, because it carries a custom logo. This is why `allowed` has to be read per provider rather than inferred from the list's contents.
</Note>

### Errors

<div className="code-nowrap-table dense-table">
  | HTTP  | `code`              | When                         |
  | ----- | ------------------- | ---------------------------- |
  | `401` | `NOT_AUTHENTICATED` | Missing or invalid API keys. |
</div>


## OpenAPI

````yaml openapi/organizations/whitelabel/list-providers.json GET /whitelabel/providers
openapi: 3.1.0
info:
  title: White-label Providers API - List
  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:
    get:
      summary: List the White-label Provider Overlay
      description: >-
        Returns your organization's overlay on the Yuno provider catalogue:
        which providers your dashboard offers, and the custom wording, links and
        logos you have set for them. It is an overlay, not the catalogue — join
        it onto the provider catalogue rather than reading it as the list of
        providers.


        Branch on `filtered`, never on the length of `providers`: a provider
        with custom wording but no allowlist entry appears here with `allowed:
        false`.


        This filters a picker. It is not authorization, and it does not stop a
        connection being created against a provider you do not offer.
      operationId: list-whitelabel-providers
      responses:
        '200':
          description: The organization's provider overlay.
          content:
            application/json:
              schema:
                type: object
                properties:
                  filtered:
                    type: boolean
                    description: >-
                      Whether the organization has at least one allowlist entry.
                      `false` means a white-label organization currently offers
                      no provider at all (the allowlist is opt-in), not that
                      everything is offered. Branch on this, never on the length
                      of `providers` — the list is also non-empty when the only
                      entries are instruction or logo overrides.
                    example: true
                  providers:
                    type: array
                    description: >-
                      The union of the allowlist, the instruction overrides, and
                      the logo overrides. A provider can carry custom wording or
                      a custom logo without being offered, in which case it
                      appears with `allowed: false`.
                    items:
                      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
                        has_instruction_override:
                          type: boolean
                          description: >-
                            Whether any instruction override exists. A cheap
                            badge flag, redundant with the content fields and
                            not authoritative for rendering them.
                          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=...
        '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>

````