---
title: "Retrieve one"
method: GET
path: "/v1/banking/bank_keys/{bank_key_id}"
tags: ["Bank key"]
---

# Retrieve one

`GET /v1/banking/bank_keys/{bank_key_id}`

## Request

- Base URL: `https://api.cardda.com`
- URL: `https://api.cardda.com/v1/banking/bank_keys/{bank_key_id}`
- Auth: HTTP bearer

Returns a bank key given it's id

## Path parameters

- `bank_key_id` string, required

## Parameters

- `#/paths/~1v1~1banking~1bank_keys/get/parameters/0` (unresolved $ref)

## Response `200`

Body of the searched bank key.

- object: Filtered view of a bank key returned by list/show endpoints. Sensitive fields (`password`, `secrets`, `auth_seed`, `card`) are stripped — they are only available through a separate, internal-by-default reveal flow that requires a dedicated permission plus a fresh second-factor confirmation. Contact your Cardda account manager if your integration needs that flow.
  - `id` string, uuid, required
  - `user_id` string, required: Firebase user id of the person who provided the credentials.
  - `source_key_id` string, uuid, nullable: If this key was cloned from a parent key (multi-account banks), the parent's id.
  - `status` 'pending' | 'approved' | 'declined' | 'preauthorized'
  - `rut` string
  - `email` string, email, nullable
  - `authorization_method` 'coordinate_card' | 'digipass' | 'sms' | 'mobile_app' | 'signature' | 'none', nullable
  - `priority` integer: Sort order when several keys exist for the same company+bank. Defaults to 0.
  - `type` string
  - `aux_type` string, nullable: Auxiliary classification used by some banks (e.g. business, personal, corporate).
  - `kyc_completed` boolean: Whether KYC was completed for the user that owns the key.
  - `bank_errors` Items[] (unresolved $ref)
  - `accounts` BankAccount[]
    - `id` string, uuid, required
    - `balance` integer, nullable
    - `holder_id` string, uuid, nullable: UUID of the Person (company or counterpart) that owns the account.
    - `bank_id` string: Bank identifier, e.g. `cl_banco_de_chile`, `mx_stp`, `us_mercury`.
    - `type` string: STI subclass, bank-specific (e.g. `Banking::Cl::BancoDeChile::Account`).
    - `number` string, required
    - `rut` string, required
    - `email` string
    - `name` string
    - `account_type` 'corriente' | 'vista' | 'ahorro' | 'clabe', nullable: Chilean account types are the following: > * 'corriente' > * 'vista' > * 'ahorro' Mexican account types are the following: > * 'clabe' For more details check the [guide](https://docs.cardda.com/docs).
    - `bank_errors` object[]
      - `id` string, uuid
      - `banking_entity_id` string, uuid
      - `banking_entity_type` string
      - `error_code` 'auth/wrong-credentials' | 'auth/invalid-body' | 'recipient/create/invalid-body' | 'recipient/create/unknown-bank-name' | 'recipient/create/unknown-account-type' | 'recipient/get/unknown-bank-name' | 'recipient/get/unknown-account-type' | 'recipient/authorization/not-found' | 'recipient/authorization/invalid-data' | 'transaction/enqueue/invalid-body' | 'transaction/enqueue/first-transaction-max-amount' | 'transaction/enqueue/transaction-daily-max-amount' | 'transaction/enqueue/recipient-not-registered' | 'transaction/enqueue/sender-account-not-fund' | 'transaction/enqueue/recipient-collision' | 'transaction/enqueue/sender-collision' | 'transaction/dequeue/invalid-body' | 'transaction/dequeue/not-found' | 'transaction/dequeue/dequeue-all-unsuccessful' | 'transaction/dequeue/no-queued-transactions' | 'transaction/get/unknown-status' | 'transaction/get/unknown-date-format' | 'transaction/get/invalid-body' | 'transaction/authorization/invalid-body' | 'transaction/authorization/wrong-token' | 'transaction/authorization/invalid-method' | 'transaction/authorization/no-queued-transactions' | 'transaction/authorization/insufficient-funds' | 'transaction/authorization/account-token-blocked' | 'account/get/not-found' | 'account/common/blocked-auth-devices' | 'account/common/temporary-blocked' | 'page/failed-to-load-components' | 'page/recipient-save-unsuccessful' | 'page/transaction-enqueue-unsuccessful' | 'page/transaction-authorization-unsuccessful' | 'request/expired-cookies', nullable
      - `created_at` string, date-time
      - `updated_at` string, date-time
    - `created_at` string, date-time
    - `updated_at` string, date-time
  - `companies` object[]: Per-company KYC status. A credential is no longer tied to a single company — it can be shared across several companies (razones sociales), so each entry carries that company's id, name, identifier (RUT) and whether it has completed KYC. This replaces the removed `holder_id`.
    - `id` string, uuid
    - `name` string
    - `identifier` string: Company tax id (RUT).
    - `kyc_completed` boolean
  - `company_ids` string[]: Flat array of the company UUIDs this credential is associated with — the same set of ids carried by `companies`, without the nested KYC metadata. The edit form prefills its company selector from this array. **Show-only:** `GET /v1/banking/bank_keys/{id}` merges both `companies` and `company_ids` into the payload; the list/index endpoint builds `companies` but not `company_ids`.
  - `created_at` string, date-time, required
  - `updated_at` string, date-time, required

## Other responses

- `401`: Unauthorized

---

[API](https://skmtc.dev/cardda/apis/banking-api.md) - [All operations](https://skmtc.dev/cardda/apis/banking-api/llms.txt) - [OpenAPI document](https://skmtc.dev/cardda/apis/banking-api/revisions/ff1aeb3fda8b?raw)
