---
title: "Register a managed account"
method: POST
path: "/register-managed"
tags: ["Accounts"]
---

# Register a managed account

`POST /register-managed`

## Request

- Base URL: `https://v1.orchestrator.rhinestone.dev/deposit-processor`
- URL: `https://v1.orchestrator.rhinestone.dev/deposit-processor/register-managed`
- Auth: one of:
  - API key in header `x-api-key`
  - HTTP bearer
- TypeScript: <https://skmtc.dev/rhinestonewtf/apis/deposit-service-api/docs/register-managed/post.ts> (a function with typed inputs; its response is checked against the schema)

Registers a smart account controlled by the server. Reusing a salt is idempotent only for the registered project and destination; use a new salt to change destination.

## Headers

- `x-api-key` string: API key for authentication
- `x-api-version` string: API version identifier (e.g. "2026-04.amazon"). Optional today, will become required in a future release.

## Request body

- ManagedRegisterRequestBody: A repeat using the same salt preserves the derived address, owner, account kind, and destination. Use a new salt to change destination.
  - `account` ManagedAccountInput, required: `target.recipient`, when an EVM address: Must not be a placeholder, burn or chain system address: the zero address, an address of one repeated hex digit (0x1111…, incl. HyperCore HYPE 0x2222…), 0x…dEaD, or a HyperCore token system address (0x20 followed by zeros and the token index). Such values are rejected with 400.
    - `salt` string, required: Hex-encoded string (0x followed by hex characters)
    - `target` ManagedTarget, required: Destination target configuration for managed accounts. `recipient` is required and specifies the address that receives the final tokens.
      - `recipient` string, required
      - `chain` string, required: CAIP-2 chain identifier (e.g. "eip155:8453")
      - `token` string, required
      - `outputTokenRules` OutputTokenRule[]
        - `match` OutputTokenRuleMatch, required: Source-token match criteria. Rules may match by source chain, source token address, source symbol, or a combination.
          - `chain` string: CAIP-2 chain identifier (e.g. "eip155:8453")
          - `token` string
          - `symbol` string
        - `outputToken` string, required
      - `rejectUnmapped` boolean
      - `postBridgeActions` unknown

## Response `200`

Managed account registered successfully

- ManagedRegisterResponse
  - `evmDepositAddress` string, required
  - `solanaDepositAddress` string
  - `tronDepositAddress` string

## Other responses

- `400`: Invalid parameters or unauthorized
- `401`: Authentication required or the presented credential is invalid.
- `403`: API key lacks required deposits scope, or the organization can't be billed
- `409`: The derived address is already registered to a different project, account kind, or destination. Use a new salt for a new destination.
- `429`: Retryable refusal; retry after the Retry-After delay. Registration is idempotent, so a retry reuses whatever was already stored. `WEBHOOK_ENROLLMENT_UNAVAILABLE`: no webhook provider could enroll the deposit address. `REGISTRATION_BUSY`: too many registrations are in flight; the request waited briefly for a slot and none freed. `REGISTRATION_IN_PROGRESS`: another request is registering the same account or salt.
- `500`: Internal error
- `503`: Tenant billing verification is temporarily unavailable; retry after 5 seconds.

## Changes

- **2026-11-06** `aa1767d704fa`: 1 warning, 5 info
  - the optional response header `Retry-After` removed for the status `503`
  - the endpoint scheme security `internalProjectBearer` was added to the API
  - the endpoint scheme security `tenantApiKey` was added to the API
  - the `header` request parameter `x-api-key` became optional
  - …2 more
- **2026-09-30** `a6fd693c3d5f`: 1 info
  - added the non-success response with the status `409`
- **2026-09-17** `676300ac19ff`: 4 info
  - added the optional property `code` to the response with the `400` status
  - added the optional property `code` to the response with the `403` status
  - added the optional property `code` to the response with the `500` status
  - added the optional property `code` to the response with the `503` status
- **2026-07-29** `7f6aae39bb48`: 1 info
  - added the non-success response with the status `503`
- **2026-06-26** `b11734728971`: 1 breaking
  - the `account/target/postBridgeActions` request property type changed from `array` to no type

[Operation history](https://skmtc.dev/rhinestonewtf/apis/deposit-service-api/changes/register-managed/post.md)

---

[API](https://skmtc.dev/rhinestonewtf/apis/deposit-service-api.md) - [All operations](https://skmtc.dev/rhinestonewtf/apis/deposit-service-api/llms.txt) - [OpenAPI document](https://skmtc.dev/rhinestonewtf/apis/deposit-service-api/revisions/aa1767d704fa?raw)
