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

# List BYOK Keys

> List the keys of the selected scope, including disabled keys, sorted by provider. Credentials are masked. A sub-account scope lists only the keys of that sub-account.

List the keys of your workspace.

* Disabled keys are included.
* Credentials are masked as `********`.


## OpenAPI

````yaml api/v2/reference/openapi.yaml GET /providers
openapi: 3.1.0
info:
  title: FullEnrich API Documentation
  version: 2.0.0
  description: >
    FullEnrich API enables you to enrich B2B contacts with emails and phone
    numbers using data from 20+ providers.


    We are GDPR and CCPA compliant.
servers:
  - url: https://app.fullenrich.com/api/v2
security: []
paths:
  /providers:
    get:
      summary: List BYOK keys
      description: >-
        List the keys of the selected scope, including disabled keys, sorted by
        provider. Credentials are masked. A sub-account scope lists only the
        keys of that sub-account.
      operationId: listBYOKKeys
      parameters:
        - $ref: '#/components/parameters/SubAccountIDHeader'
      responses:
        '200':
          description: OK. An empty array when the scope has no key.
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/BYOKKeyWithMaskedCredentials'
              example:
                - id: 9f1c2d3e-4b5a-4c6d-8e7f-0a1b2c3d4e5f
                  workspace_id: 2db5ea61-1752-42cf-8ea1-ab1da060cd0a
                  provider: prospeo
                  zone: front
                  priority: 10
                  data_types:
                    - contact.work_emails
                    - contact.phones
                  verify: true
                  enabled: true
                  created_at: '2026-10-05T09:30:00Z'
                  updated_at: '2026-10-05T09:30:00Z'
                  credentials:
                    api_key: '********'
                - id: c2a7e1f0-6d3b-4a8e-9b21-5f6e7d8c9a0b
                  workspace_id: 2db5ea61-1752-42cf-8ea1-ab1da060cd0a
                  provider: forager_ai
                  zone: back
                  priority: 20
                  data_types:
                    - contact.work_emails
                    - contact.personal_emails
                    - contact.phones
                  verify: true
                  enabled: false
                  created_at: '2026-10-06T14:00:00Z'
                  updated_at: '2026-10-20T08:12:00Z'
                  credentials:
                    api_key: '********'
                    account_id: '********'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/BYOKKeyForbidden'
        '404':
          $ref: '#/components/responses/ScopedSubAccountNotFound'
        '429':
          $ref: '#/components/responses/RateLimitExceeded'
      security:
        - BearerAuth: []
components:
  parameters:
    SubAccountIDHeader:
      name: Sub-Account-ID
      in: header
      required: false
      description: >-
        Manage the keys of one sub-account instead of the workspace keys. See
        the Sub-accounts section of the BYOK overview.
      schema:
        type: string
        format: uuid
      example: 70ff6a88-6291-417d-b6cd-04f1ca123470
  schemas:
    BYOKKeyWithMaskedCredentials:
      allOf:
        - $ref: '#/components/schemas/BYOKKey'
        - type: object
          properties:
            credentials:
              $ref: '#/components/schemas/ProviderMaskedCredentials'
          required:
            - credentials
    BYOKKey:
      type: object
      properties:
        id:
          type: string
          format: uuid
          description: The key ID.
          example: 9f1c2d3e-4b5a-4c6d-8e7f-0a1b2c3d4e5f
        workspace_id:
          type: string
          format: uuid
          description: The workspace that owns the key.
          example: 2db5ea61-1752-42cf-8ea1-ab1da060cd0a
        sub_account_id:
          type: string
          format: uuid
          description: The sub-account that owns the key. Omitted for a workspace key.
          example: 70ff6a88-6291-417d-b6cd-04f1ca123470
        provider:
          $ref: '#/components/schemas/ProviderName'
        zone:
          $ref: '#/components/schemas/ProviderZone'
        priority:
          type: integer
          description: Order of the key in its zone. A lower value runs first.
          example: 10
        data_types:
          type: array
          description: Data types this key supplies.
          items:
            $ref: '#/components/schemas/ProviderDataType'
          example:
            - contact.work_emails
            - contact.phones
        verify:
          type: boolean
          description: Whether FullEnrich verifies the values found with this key.
          example: true
        enabled:
          type: boolean
          description: Whether the key is used in enrichments.
          example: true
        created_at:
          type: string
          format: date-time
          description: When the key was created.
          example: '2026-10-05T09:30:00Z'
        updated_at:
          type: string
          format: date-time
          description: When the key was last updated.
          example: '2026-10-05T09:30:00Z'
      required:
        - id
        - workspace_id
        - provider
        - zone
        - priority
        - data_types
        - verify
        - enabled
        - created_at
        - updated_at
    ProviderMaskedCredentials:
      type: object
      description: >-
        The credential fields of the provider, with every value masked. Saved
        secrets are never returned.
      properties:
        api_key:
          type: string
          example: '********'
        account_id:
          type: string
          example: '********'
        account_email:
          type: string
          example: '********'
        personal_email_api_key:
          type: string
          example: '********'
        client_id:
          type: string
          example: '********'
        client_secret:
          type: string
          example: '********'
    Error:
      type: object
      properties:
        code:
          type: string
        message:
          type: string
      required:
        - code
        - message
    ProviderName:
      type: string
      description: >-
        Provider identifier. Case-insensitive in requests; responses use
        lowercase.
      enum:
        - prospeo
        - enrow
        - cleon1
        - datagma
        - aviato
        - wiza
        - forager_ai
        - icypeas
        - contact_out
        - people_data_labs
        - lusha
        - apollo_io
        - zoominfo
      example: prospeo
    ProviderZone:
      type: string
      description: >-
        Where the key runs in the waterfall. front: before the FullEnrich
        providers. back: after them. auto: at the position of the same provider
        in the FullEnrich waterfall.
      enum:
        - front
        - back
        - auto
      example: front
    ProviderDataType:
      type: string
      description: Data type a key can supply.
      enum:
        - contact.work_emails
        - contact.personal_emails
        - contact.phones
      example: contact.work_emails
  responses:
    Unauthorized:
      description: Unauthorized
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
          examples:
            AuthorizationHeaderNotSet:
              value:
                code: error.authorization.not_set
                message: Authorization headers not set
            AuthorizationHeaderNotBearer:
              value:
                code: error.authorization.not_bearer
                message: Authorization headers do not have prefix 'bearer'
            UnknownApiKey:
              value:
                code: error.api.key
                message: Unknown api key
    BYOKKeyForbidden:
      description: BYOK is not enabled for the workspace
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
          example:
            code: error.forbidden
            message: BYOK provider configuration is not enabled
    ScopedSubAccountNotFound:
      description: >-
        The sub-account named in the header does not exist, or is archived for a
        write request
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
          examples:
            SubAccountNotFound:
              value:
                code: error.sub_account.not_found
                message: Sub-account not found
            SubAccountArchived:
              value:
                code: error.sub_account.archived
                message: Sub-account is archived
    RateLimitExceeded:
      description: Too Many Requests
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
          example:
            code: error.rate.limit
            message: Too many requests. Try again in 1m
  securitySchemes:
    BearerAuth:
      type: http
      scheme: bearer
      bearerFormat: string

````

This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.