B2B API Reference
Activate Chains on a Portfolio (Stage 2)
Stage 2 of the two-stage chain-activation flow — submits the owner’s signature and creates smart accounts on the new chains.
POST
Stage 2 of the two-stage chain-activation flow. Verifies the portfolio
owner’s signature over the message returned by
POST /v2/portfolios/{portfolioId}/chains/signature, then creates one
smart account per requested chain inside a single transaction. On
success the portfolio can receive deposits and operate on the new chains
immediately.
The signature is verified according to the portfolio’s account type:
ECDSA portfolios submit an EIP-191 personal_sign signature that may
cover several chains at once; ERC-1271 portfolios submit their
smart-contract wallet’s signature over the stage-1 EIP-712 typed data,
verified against the owner contract on the requested chain — exactly one
chain per request.
Smart accounts use deterministic CREATE2 addresses — the same address
as the portfolio’s existing smart accounts, now live on the new chains.
The response mirrors the smartAccounts shape returned by
POST /v2/enroll and GET /v2/portfolios/{portfolioId}.
- Auth:
x-api-keyheader (required) - Scope:
portfolios:write
chainIds must exactly match the set passed to the signature stage —
the owner’s signature covers that specific chain set, and any drift fails
verification with 400.
The operation is idempotent on the signed payload: retrying with the
same chainIds + signature replays the original response instead of
failing on the already-active chains. A concurrent identical request
returns 409 while the first is still in flight.
Common error responses:
400when the body is invalid, the signature does not verify, a chain is already active, the portfolio is Solana, or more than one chain is requested on an ERC-1271 portfolio401whenx-api-keyis missing or invalid403when the API key lacks theportfolios:writescope404when the portfolio does not exist or belongs to another tenant409when an identical activation request is still in flight