> ## Documentation Index
> Fetch the complete documentation index at: https://docs.rhino.fi/llms.txt
> Use this file to discover all available pages before exploring further.

# Create new deposit address

> Any bridgable tokens sent to a generated deposit address will be automatically bridged to the set up address on the destination chain.



## OpenAPI

````yaml https://api.rhino.fi/sda/swagger.json post /deposit-addresses
openapi: 3.1.0
info:
  title: SDA API
  version: 0.0.1
  description: Functionality for interacting with Rhino SDA service
servers:
  - url: https://api.rhino.fi/sda
security: []
tags:
  - name: depositAddresses
paths:
  /deposit-addresses:
    post:
      tags:
        - depositAddresses
      summary: Create new deposit address
      description: >-
        Any bridgable tokens sent to a generated deposit address will be
        automatically bridged to the set up address on the destination chain.
      operationId: depositAddresses.createDepositAddress
      parameters: []
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CreateDepositAddressPayload'
        required: true
      responses:
        '200':
          description: Success
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/DepositAddress'
        '400':
          description: The request did not match the expected schema
          content:
            application/json:
              schema:
                anyOf:
                  - $ref: '#/components/schemas/HttpApiDecodeError'
                  - $ref: '#/components/schemas/InvalidJwt'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Unauthorized'
        '422':
          description: DepositAddressChainsNotSupported
          content:
            application/json:
              schema:
                anyOf:
                  - $ref: '#/components/schemas/DepositAddressChainsNotSupported'
                  - $ref: >-
                      #/components/schemas/DepositAddressInvalidDestinationAddress
                  - $ref: >-
                      #/components/schemas/DepositAddressMultipleChainTypesNotAllowed
                  - $ref: '#/components/schemas/DepositAddressNoBridgableTokens'
                  - $ref: '#/components/schemas/DepositAddressTokenOutNotSupported'
                  - $ref: '#/components/schemas/DepositAddressInvalidPostBridgeData'
                  - $ref: '#/components/schemas/DepositAddressInvalidRefundAddress'
                  - $ref: '#/components/schemas/InvalidRequest'
        '429':
          description: DepositAddressRateLimitExceeded
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DepositAddressRateLimitExceeded'
        '503':
          description: EndpointDisabledError
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/EndpointDisabledError'
      security:
        - bearer: []
        - legacyApiKey: []
components:
  schemas:
    CreateDepositAddressPayload:
      type: object
      required:
        - depositChains
        - destinationChain
        - destinationAddress
      properties:
        depositChains:
          type: array
          minItems: 1
          items:
            $ref: '#/components/schemas/NonEmptyString'
          description: >-
            Array of blockchain chain identifiers where deposit addresses should
            be created (e.g., ["ETHEREUM", "ARBITRUM"]).
        addressNote:
          type: string
          description: Optional note or label for the deposit address (max 80 characters).
          title: maxLength(80)
          maxLength: 80
        reusePolicy:
          type: string
          enum:
            - create-new
            - reuse-existing
          description: >-
            Whether to reuse an existing deposit address that matches the given
            parameters or always create a new one. By default an existing
            address is reused unless create-new is specified.
        webhookUrl:
          allOf:
            - $ref: '#/components/schemas/NonEmptyString'
          description: Optional URL for webhook notifications when deposits are processed.
        refundAddress:
          allOf:
            - $ref: '#/components/schemas/NonEmptyString'
          description: Optional address for refunds in case of processing failures.
        destinationChain:
          type: string
          description: >-
            The blockchain chain identifier for the destination address (e.g.,
            "BASE").
          title: nonEmptyString
          minLength: 1
        destinationAddress:
          type: string
          description: The blockchain address where bridged tokens will be sent.
          title: nonEmptyString
          minLength: 1
        postBridgeData:
          anyOf:
            - $ref: '#/components/schemas/ExtendedPostBridgeData'
            - $ref: '#/components/schemas/StarkwareBtcfiCampaignPostBridgeData'
            - $ref: '#/components/schemas/WirexWrapPostBridgeData'
            - $ref: '#/components/schemas/WirexWrapSandboxPostBridgeData'
            - $ref: '#/components/schemas/StarkwareBtcfiCampaignV2PostBridgeData'
            - $ref: '#/components/schemas/AaveV3SupplyPostBridgeData'
            - $ref: '#/components/schemas/RocketFoundationDepositPostBridgeData'
            - $ref: '#/components/schemas/MapleDepositPostBridgeData'
          description: >-
            Optional configuration for post-bridge actions (e.g., staking,
            lending). Must be omitted if your client does not have PBA enabled.
            See
            https://docs.rhino.fi/api-integration/smart-deposits#post-bridge-data
            for details.
        tokenOut:
          type: string
          description: >-
            Token to be received on the destination address. The deposited token
            will be swapped automatically if needed.
          title: nonEmptyString
          minLength: 1
        bridgeIfNotSwappable:
          type: boolean
          description: >-
            Only valid if tokenOut is set as well. If true, deposited tokens
            that cannot be swapped to the tokenOut will be bridged instead of
            causing a failed bridge..
      additionalProperties: false
    DepositAddress:
      type: object
      required:
        - depositChain
        - depositAddress
        - destinationChain
        - supportedTokens
        - isActive
      properties:
        depositChain:
          type: string
          description: >-
            The blockchain network identifier where the deposit address is
            located.
          title: nonEmptyString
          minLength: 1
        depositAddress:
          type: string
          description: The generated deposit address where users should send tokens.
          title: nonEmptyString
          minLength: 1
        destinationChain:
          type: string
          description: The blockchain network identifier where bridged tokens will be sent.
          title: nonEmptyString
          minLength: 1
        destinationAddress:
          allOf:
            - $ref: '#/components/schemas/NonEmptyString'
          description: >-
            The destination address where bridged tokens will be sent
            (optional).
        addressNote:
          type: string
          description: Optional note or label for the deposit address (max 80 characters).
          title: maxLength(80)
          maxLength: 80
        supportedTokens:
          type: array
          items:
            type: object
            required:
              - symbol
              - address
              - maxDepositLimitUsd
              - minDepositLimitUsd
            properties:
              symbol:
                type: string
                description: Token symbol (e.g., "ETH", "USDC").
                title: nonEmptyString
                minLength: 1
              address:
                type: string
                description: Token contract address on the deposit chain.
                title: nonEmptyString
                minLength: 1
              maxDepositLimitUsd:
                type: number
                description: Maximum deposit amount in USD for this token.
                title: nonNegative
                minimum: 0
              minDepositLimitUsd:
                type: number
                description: Minimum deposit amount in USD for this token.
                title: nonNegative
                minimum: 0
            additionalProperties: false
          description: List of tokens that can be deposited to this address.
        isActive:
          type: boolean
          description: >-
            Whether this deposit address is currently active and accepting
            deposits.
        postBridgeData:
          anyOf:
            - $ref: '#/components/schemas/ExtendedPostBridgeData'
            - $ref: '#/components/schemas/StarkwareBtcfiCampaignPostBridgeData'
            - $ref: '#/components/schemas/WirexWrapPostBridgeData'
            - $ref: '#/components/schemas/WirexWrapSandboxPostBridgeData'
            - $ref: '#/components/schemas/StarkwareBtcfiCampaignV2PostBridgeData'
            - $ref: '#/components/schemas/AaveV3SupplyPostBridgeData'
            - $ref: '#/components/schemas/RocketFoundationDepositPostBridgeData'
            - $ref: '#/components/schemas/MapleDepositPostBridgeData'
          description: >-
            Optional configuration for post-bridge actions (e.g., staking,
            lending). Must be omitted if your client does not have PBA enabled.
            See
            https://docs.rhino.fi/api-integration/smart-deposits#post-bridge-data
            for details.
        tokenOut:
          type: string
          description: Optional token to receive after bridging (for token swaps).
        refundAddress:
          allOf:
            - $ref: '#/components/schemas/NonEmptyString'
          description: Optional address for refunds if bridging fails.
        bridgeIfNotSwappable:
          type: boolean
          description: Whether to bridge tokens even if they cannot be swapped (optional).
      additionalProperties: false
    HttpApiDecodeError:
      type: object
      required:
        - issues
        - message
        - _tag
      properties:
        issues:
          type: array
          items:
            $ref: '#/components/schemas/Issue'
        message:
          type: string
        _tag:
          type: string
          enum:
            - HttpApiDecodeError
      additionalProperties: false
      description: The request did not match the expected schema
    InvalidJwt:
      type: object
      required:
        - message
        - _tag
      properties:
        message:
          type: string
        _tag:
          type: string
          enum:
            - InvalidJwt
      additionalProperties: false
    Unauthorized:
      type: object
      required:
        - message
        - _tag
      properties:
        message:
          type: string
        _tag:
          type: string
          enum:
            - Unauthorized
      additionalProperties: false
    DepositAddressChainsNotSupported:
      type: object
      required:
        - chains
        - _tag
      properties:
        chains:
          type: array
          items:
            $ref: '#/components/schemas/NonEmptyString'
        _tag:
          type: string
          enum:
            - DepositAddressChainsNotSupported
      additionalProperties: false
    DepositAddressInvalidDestinationAddress:
      type: object
      required:
        - chain
        - address
        - _tag
      properties:
        chain:
          $ref: '#/components/schemas/NonEmptyString'
        address:
          $ref: '#/components/schemas/NonEmptyString'
        _tag:
          type: string
          enum:
            - DepositAddressInvalidDestinationAddress
      additionalProperties: false
    DepositAddressMultipleChainTypesNotAllowed:
      type: object
      required:
        - chainTypes
        - _tag
      properties:
        chainTypes:
          type: array
          items:
            $ref: '#/components/schemas/NonEmptyString'
        _tag:
          type: string
          enum:
            - DepositAddressMultipleChainTypesNotAllowed
      additionalProperties: false
    DepositAddressNoBridgableTokens:
      type: object
      required:
        - from
        - to
        - _tag
      properties:
        from:
          $ref: '#/components/schemas/NonEmptyString'
        to:
          $ref: '#/components/schemas/NonEmptyString'
        _tag:
          type: string
          enum:
            - DepositAddressNoBridgableTokens
      additionalProperties: false
    DepositAddressTokenOutNotSupported:
      type: object
      required:
        - tokenOut
        - _tag
      properties:
        tokenOut:
          type: string
        _tag:
          type: string
          enum:
            - DepositAddressTokenOutNotSupported
      additionalProperties: false
    DepositAddressInvalidPostBridgeData:
      type: object
      required:
        - message
        - _tag
      properties:
        message:
          type: string
        _tag:
          type: string
          enum:
            - DepositAddressInvalidPostBridgeData
      additionalProperties: false
    DepositAddressInvalidRefundAddress:
      type: object
      required:
        - message
        - _tag
      properties:
        message:
          type: string
        _tag:
          type: string
          enum:
            - DepositAddressInvalidRefundAddress
      additionalProperties: false
    InvalidRequest:
      type: object
      required:
        - message
        - _tag
      properties:
        message:
          type: string
        _tag:
          type: string
          enum:
            - InvalidRequest
      additionalProperties: false
    DepositAddressRateLimitExceeded:
      type: object
      required:
        - message
        - limit
        - _tag
      properties:
        message:
          $ref: '#/components/schemas/NonEmptyString'
        limit:
          anyOf:
            - $ref: '#/components/schemas/CountLimitExceeded'
            - $ref: '#/components/schemas/WindowLimitExceeded'
        _tag:
          type: string
          enum:
            - DepositAddressRateLimitExceeded
      additionalProperties: false
    EndpointDisabledError:
      type: object
      required:
        - message
        - _tag
      properties:
        message:
          type: string
        _tag:
          type: string
          enum:
            - EndpointDisabledError
      additionalProperties: false
    NonEmptyString:
      type: string
      description: a non empty string
      title: nonEmptyString
      minLength: 1
    ExtendedPostBridgeData:
      type: object
      required:
        - _tag
        - vaultId
      properties:
        _tag:
          type: string
          enum:
            - extended
        vaultId:
          $ref: '#/components/schemas/NonNegativeInt'
      additionalProperties: false
    StarkwareBtcfiCampaignPostBridgeData:
      type: object
      required:
        - _tag
      properties:
        _tag:
          type: string
          enum:
            - starkwarebtcfi
      additionalProperties: false
    WirexWrapPostBridgeData:
      type: object
      required:
        - _tag
      properties:
        _tag:
          type: string
          enum:
            - wirexwrap
      additionalProperties: false
    WirexWrapSandboxPostBridgeData:
      type: object
      required:
        - _tag
      properties:
        _tag:
          type: string
          enum:
            - wirexwrapsandbox
      additionalProperties: false
    StarkwareBtcfiCampaignV2PostBridgeData:
      type: object
      required:
        - _tag
        - spans
      properties:
        _tag:
          type: string
          enum:
            - starkwarebtcfiv2
        spans:
          type: array
          items:
            $ref: '#/components/schemas/StarknetFelt'
          description: an array of at most 70 item(s)
          title: maxItems(70)
          maxItems: 70
      additionalProperties: false
    AaveV3SupplyPostBridgeData:
      type: object
      required:
        - _tag
      properties:
        _tag:
          type: string
          enum:
            - aavev3supply
      additionalProperties: false
    RocketFoundationDepositPostBridgeData:
      type: object
      required:
        - _tag
      properties:
        _tag:
          type: string
          enum:
            - rocketfoundationdeposit
      additionalProperties: false
    MapleDepositPostBridgeData:
      type: object
      required:
        - _tag
      properties:
        _tag:
          type: string
          enum:
            - mapledeposit
      additionalProperties: false
    Issue:
      type: object
      required:
        - _tag
        - path
        - message
      properties:
        _tag:
          type: string
          enum:
            - Pointer
            - Unexpected
            - Missing
            - Composite
            - Refinement
            - Transformation
            - Type
            - Forbidden
          description: The tag identifying the type of parse issue
        path:
          type: array
          items:
            $ref: '#/components/schemas/PropertyKey'
          description: The path to the property where the issue occurred
        message:
          type: string
          description: A descriptive message explaining the issue
      additionalProperties: false
      description: >-
        Represents an error encountered while parsing a value to match the
        schema
    CountLimitExceeded:
      type: object
      required:
        - allowed
        - current
        - _tag
      properties:
        allowed:
          $ref: '#/components/schemas/NonNegativeInt'
        current:
          $ref: '#/components/schemas/NonNegativeInt'
        _tag:
          type: string
          enum:
            - CountLimitExceeded
      additionalProperties: false
    WindowLimitExceeded:
      type: object
      required:
        - allowed
        - current
        - durationMs
        - _tag
      properties:
        allowed:
          $ref: '#/components/schemas/NonNegativeInt'
        current:
          $ref: '#/components/schemas/NonNegativeInt'
        durationMs:
          $ref: '#/components/schemas/DurationFromMillis'
        _tag:
          type: string
          enum:
            - WindowLimitExceeded
      additionalProperties: false
    NonNegativeInt:
      type: integer
      description: an integer
      title: int
      minimum: 0
    StarknetFelt:
      type: string
      description: a string that will be trimmed
    PropertyKey:
      anyOf:
        - type: string
        - type: number
        - type: object
          required:
            - _tag
            - key
          properties:
            _tag:
              type: string
              enum:
                - symbol
            key:
              type: string
          additionalProperties: false
          description: an object to be decoded into a globally shared symbol
    DurationFromMillis:
      type: number
      description: a non-negative number to be decoded into a Duration
      title: nonNegative
      minimum: 0
  securitySchemes:
    bearer:
      description: JWT token for authentication
      type: http
      scheme: bearer
    legacyApiKey:
      type: apiKey
      name: authorization
      in: header

````