---
title: "Add a connected account"
method: POST
path: "/connected_accounts"
tags: ["Connected Accounts"]
---

# Add a connected account

`POST /connected_accounts`

## Request

- Base URL: `https://api.fireblocks.io/v1`
- URL: `https://api.fireblocks.io/v1/connected_accounts`
- Auth: none declared
- TypeScript: <https://skmtc.dev/fireblocks/apis/fireblocks-api/docs/connected_accounts/post.ts> (a function with typed inputs; its response is checked against the schema)

Creates a new connected account for the authenticated tenant.

The `creds` field must be a Base64-encoded RSA-encrypted credential blob.
Use `GET /connected_accounts/credentials/public_key` to retrieve the public key for encryption.

The `providerType` is derived server-side from the `providerId` — callers do not supply it.

Endpoint Permission: Editor, Admin, Non-Signing Admin.

## Headers

- `Idempotency-Key` string

## Request body

- AddConnectedAccountRequest
  - `providerId` string, required: Integration key identifying the provider (e.g. BINANCE, KINGDOM_BANK, GEMINI_NLV2).
  - `displayName` string: Human-readable account name. Required for non-NLV2 providers.
  - `creds` string, byte, required: Base64-encoded RSA-encrypted credential blob. Encrypt using the public key from GET /connected_accounts/credentials/public_key.
  - `apiKey` string, required: Account-level API key.
  - `mainAccountId` string: Parent main account ID for sub-account creation. Not allowed for NLV2 providers.
  - `accountId` string: Optional provider-side account ID to associate with the created account.
  - `onPremiseServerId` string: On-premise server ID for self-hosted integrations.

## Response `201`

Account created (or pending approval).

- AddConnectedAccountResponse
  - `accounts` AddedConnectedAccountItem[], required: Created accounts — main account first, sub-accounts after (NLV2 hierarchy).
    - `accountId` string, required: ID of the created account.
    - `name` string, required: Human-readable account name.
    - `parentAccountId` string: Parent account ID — present only for sub-accounts in an NLV2 hierarchy.
    - `status` 'WAITING_FOR_APPROVAL' | 'APPROVED' | 'REJECTED' | 'CANCELLED' | 'FAILED', required

## Other responses

- `400`: Bad request — invalid field or provider constraints violated.
- `401`: Unauthorized. Missing / invalid JWT token, or insufficient role (Editor or higher required).
- `403`: Feature not enabled for this tenant.
- `404`: mainAccountId not found.
- `422`: Invalid credentials.
- `default`: Error Response

---

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