---
title: "POST /v1/portfolios/{portfolioSlug}/wallets"
method: POST
path: "/v1/portfolios/{portfolioSlug}/wallets"
tags: ["Wallets"]
---

# POST /v1/portfolios/{portfolioSlug}/wallets

`POST /v1/portfolios/{portfolioSlug}/wallets`

## Request

- Base URL: `https://api.tokenbooks.io` (the document declares no server; this is the origin it was published from)
- URL: `https://api.tokenbooks.io/v1/portfolios/{portfolioSlug}/wallets`
- Auth: API key in header `x-api-key`

## Path parameters

- `portfolioSlug` string, required

## Request body

- AddWalletsRequestDto
  - `wallets` union[], required
    - union
      - object
        - `type` 'blockchain'
        - `integrationId` string, required: Integration id for chain resolution. Use 'evm' for automatic EVM chain discovery; use a specific integration id for direct chain add.
        - `address` string, required: Wallet address
        - `name` string: Optional wallet name
        - `credentials` object: Credentials for Prividium-backed blockchain wallets. Use a Prividium-specific integration id, not 'evm' or an ordinary public chain integration id.
          - `apiKey` string, nullable: API key or RPC URL
          - `secret` string, nullable: API secret or explorer URL
          - `uid` string, nullable: Optional exchange uid
          - `login` string, nullable: Optional exchange login
          - `password` string, nullable: Optional exchange password
          - `privateKey` string, nullable: Integration authentication private key. Never provide a wallet signing or spending key.
          - `walletAddress` string, nullable: Optional credential wallet address
          - `accountId` string, nullable: Optional exchange subaccount identifier
          - `token` string, nullable: OAuth or bearer token. API-key callers may provide this when creating or updating a wallet only from an authorization flow they control.
          - `refreshToken` string, nullable: OAuth refresh token. API-key callers may provide this when creating or updating a wallet only from an authorization flow they control.
          - `tokenExpiresAt` string, date-time, nullable: OAuth token expiry timestamp. API-key callers may provide this when creating or updating a wallet only from an authorization flow they control.
      - object
        - `type` 'exchange', required
        - `exchangeId` string, required: Exchange identifier
        - `credentials` object, required: Exchange API credentials
          - `apiKey` string, nullable: API key or RPC URL
          - `secret` string, nullable: API secret or explorer URL
          - `uid` string, nullable: Optional exchange uid
          - `login` string, nullable: Optional exchange login
          - `password` string, nullable: Optional exchange password
          - `privateKey` string, nullable: Integration authentication private key. Never provide a wallet signing or spending key.
          - `walletAddress` string, nullable: Optional credential wallet address
          - `accountId` string, nullable: Optional exchange subaccount identifier
          - `token` string, nullable: OAuth or bearer token. API-key callers may provide this when creating or updating a wallet only from an authorization flow they control.
          - `refreshToken` string, nullable: OAuth refresh token. API-key callers may provide this when creating or updating a wallet only from an authorization flow they control.
          - `tokenExpiresAt` string, date-time, nullable: OAuth token expiry timestamp. API-key callers may provide this when creating or updating a wallet only from an authorization flow they control.
        - `name` string: Optional wallet name

## Response `201`

- AddWalletsResponseDto
  - `results` object[], required
    - `chainId` string: Chain ID (absent for skipped items with no chain)
    - `address` string, required: Wallet address. Exchange wallets return an opaque stable address slug that can be used as walletAddress in sync selectors.
    - `status` 'created' | 'skipped', required: Per-wallet outcome
    - `reason` string: Reason when skipped
  - `syncQueued` boolean, required

---

[API](https://skmtc.dev/tokenbooks/apis/tokenbooks-public-api.md) · [All operations](https://skmtc.dev/tokenbooks/apis/tokenbooks-public-api/llms.txt) · [OpenAPI document](https://skmtc.dev/tokenbooks/apis/tokenbooks-public-api/revisions/180622e6255e?raw)
