Unified Deposit Address

Endpoints to create and manage unified deposit addresses

Base URL

https://api.enclave.money

Authorization

Headers: {
    ...
    Authorization: <YOUR_API_KEY>
}

Getting Started

Get started by creating a UDA for a user using the API endpoint below. This endpoint can be integrated as part of your onboarding flow.

Create a new unified deposit address for a user

post

Create a new unified deposit address for a user within an organization. Requires authentication.

Body
userIdstringRequired

Unique user identifier

Example: user-1234
destinationChainIdintegerRequired

Destination chain ID (EVM chainId)

Example: 8453
destinationAddressstringRequired

Destination wallet address (EVM address)

Example: 0x742d35Cc6634C0532925a3b844Bc454e4438f44e
destinationTokenAddressstringRequired

Destination token contract address (EVM address)

Example: 0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2
Responses
201

Unified deposit address created successfully

application/json
post
POST /unified-deposit-address/create HTTP/1.1
Host: 
Content-Type: application/json
Accept: */*
Content-Length: 185

{
  "userId": "user-1234",
  "destinationChainId": 8453,
  "destinationAddress": "0x742d35Cc6634C0532925a3b844Bc454e4438f44e",
  "destinationTokenAddress": "0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2"
}
{
  "success": true,
  "data": {
    "userId": "user-1234",
    "orgId": "org-5678",
    "destinationChainId": 8453,
    "destinationAddress": "0x742d35Cc6634C0532925a3b844Bc454e4438f44e",
    "destinationTokenAddress": "0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2",
    "enclaveId": "550e8400-e29b-41d4-a716-446655440000",
    "status": "ACTIVE",
    "createdAt": "2024-06-01T12:00:00.000Z",
    "updatedAt": "2024-06-01T12:00:00.000Z",
    "depositAddresses": {
      "evm_deposit_address": [
        {
          "chainId": 1,
          "contractAddress": "0x1111111111111111111111111111111111111111",
          "deployed": true,
          "deploymentTxHash": "0xethmainnet...",
          "deploymentBlock": 100000
        },
        {
          "chainId": 8453,
          "contractAddress": "0x1111111111111111111111111111111111111111",
          "deployed": true,
          "deploymentTxHash": "0xbase...",
          "deploymentBlock": 200000
        },
        {
          "chainId": 42161,
          "contractAddress": "0x1111111111111111111111111111111111111111",
          "deployed": true,
          "deploymentTxHash": "0xarbitrum...",
          "deploymentBlock": 300000
        }
      ]
    }
  }
}

In case you want to create multiple UDAs for your existing users at once, you can use the batch creation endpoint below.

Create multiple unified deposit addresses in batch

post

Create multiple unified deposit addresses for users within an organization in a single request. Requires authentication. Batch size is limited to 50.

Body
Responses
201

Batch unified deposit addresses created successfully

application/json
post
POST /unified-deposit-address/create/batch HTTP/1.1
Host: 
Content-Type: application/json
Accept: */*
Content-Length: 200

{
  "requests": [
    {
      "userId": "user-1234",
      "destinationChainId": 8453,
      "destinationAddress": "0x742d35Cc6634C0532925a3b844Bc454e4438f44e",
      "destinationTokenAddress": "0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2"
    }
  ]
}
{
  "success": true,
  "results": [
    {
      "success": true,
      "data": {
        "userId": "user-1234",
        "orgId": "org-5678",
        "destinationChainId": 8453,
        "destinationAddress": "0x742d35Cc6634C0532925a3b844Bc454e4438f44e",
        "destinationTokenAddress": "0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2",
        "enclaveId": "550e8400-e29b-41d4-a716-446655440000",
        "status": "ACTIVE",
        "createdAt": "2024-06-01T12:00:00.000Z",
        "updatedAt": "2024-06-01T12:00:00.000Z",
        "depositAddresses": {
          "evm_deposit_address": [
            {
              "chainId": 1,
              "contractAddress": "0x1111111111111111111111111111111111111111",
              "deployed": true,
              "deploymentTxHash": "0xethmainnet...",
              "deploymentBlock": 100000
            },
            {
              "chainId": 8453,
              "contractAddress": "0x1111111111111111111111111111111111111111",
              "deployed": true,
              "deploymentTxHash": "0xbase...",
              "deploymentBlock": 200000
            },
            {
              "chainId": 42161,
              "contractAddress": "0x1111111111111111111111111111111111111111",
              "deployed": true,
              "deploymentTxHash": "0xarbitrum...",
              "deploymentBlock": 300000
            }
          ]
        }
      }
    },
    {
      "success": false,
      "error": "User already has an active unified deposit address"
    }
  ]
}

Fetch unified deposit address details for a specific user

get

Retrieve the unified deposit address for a user within an organization. Requires authentication.

Path parameters
userIdstringRequired

Unique user identifier

Example: user-1234
Responses
200

Unified deposit address found

application/json
get
GET /unified-deposit-address/user/{userId} HTTP/1.1
Host: 
Accept: */*
{
  "success": true,
  "data": {
    "userId": "user-1234",
    "orgId": "org-5678",
    "destinationChainId": 8453,
    "destinationAddress": "0x742d35Cc6634C0532925a3b844Bc454e4438f44e",
    "destinationTokenAddress": "0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2",
    "enclaveId": "550e8400-e29b-41d4-a716-446655440000",
    "status": "ACTIVE",
    "createdAt": "2024-06-01T12:00:00.000Z",
    "updatedAt": "2024-06-01T12:00:00.000Z",
    "depositAddresses": {
      "evm_deposit_address": [
        {
          "chainId": 1,
          "contractAddress": "0x1111111111111111111111111111111111111111",
          "deployed": true,
          "deploymentTxHash": "0xethmainnet...",
          "deploymentBlock": 100000
        },
        {
          "chainId": 8453,
          "contractAddress": "0x1111111111111111111111111111111111111111",
          "deployed": true,
          "deploymentTxHash": "0xbase...",
          "deploymentBlock": 200000
        },
        {
          "chainId": 42161,
          "contractAddress": "0x1111111111111111111111111111111111111111",
          "deployed": true,
          "deploymentTxHash": "0xarbitrum...",
          "deploymentBlock": 300000
        }
      ]
    }
  }
}

Update destination details for a unified deposit address

put

Update the destination chain, address, and token for a user's unified deposit address. Requires authentication.

Path parameters
userIdstringRequired

Unique user identifier

Example: user-1234
Body
destinationChainIdintegerRequired

Destination chain ID (EVM chainId)

Example: 8453
destinationAddressstringRequired

Destination wallet address (EVM address)

Example: 0x742d35Cc6634C0532925a3b844Bc454e4438f44e
destinationTokenAddressstringRequired

Destination token contract address (EVM address)

Example: 0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2
Responses
200

Destination details updated successfully

application/json
put
PUT /unified-deposit-address/user/{userId}/destination HTTP/1.1
Host: 
Content-Type: application/json
Accept: */*
Content-Length: 164

{
  "destinationChainId": 8453,
  "destinationAddress": "0x742d35Cc6634C0532925a3b844Bc454e4438f44e",
  "destinationTokenAddress": "0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2"
}
{
  "success": true,
  "message": "Destination details updated successfully",
  "data": {
    "userId": "user-1234",
    "orgId": "org-5678",
    "destinationChainId": 8453,
    "destinationAddress": "0x742d35Cc6634C0532925a3b844Bc454e4438f44e",
    "destinationTokenAddress": "0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2",
    "enclaveId": "550e8400-e29b-41d4-a716-446655440000",
    "status": "ACTIVE",
    "createdAt": "2024-06-01T12:00:00.000Z",
    "updatedAt": "2024-06-01T12:00:00.000Z",
    "depositAddresses": {
      "evm_deposit_address": [
        {
          "chainId": 1,
          "contractAddress": "0x1111111111111111111111111111111111111111",
          "deployed": true,
          "deploymentTxHash": "0xethmainnet...",
          "deploymentBlock": 100000
        },
        {
          "chainId": 8453,
          "contractAddress": "0x1111111111111111111111111111111111111111",
          "deployed": true,
          "deploymentTxHash": "0xbase...",
          "deploymentBlock": 200000
        },
        {
          "chainId": 42161,
          "contractAddress": "0x1111111111111111111111111111111111111111",
          "deployed": true,
          "deploymentTxHash": "0xarbitrum...",
          "deploymentBlock": 300000
        }
      ]
    }
  }
}

Fetch all unified deposit addresses for an organization

get

Retrieve all unified deposit addresses for the authenticated organization. Supports optional status filter and pagination. If all=true is provided, returns all addresses for the organization (ignores pagination).

Query parameters
statusstring · enumOptional

Filter by deposit address status

Example: ACTIVEPossible values:
limitinteger · min: 1 · max: 100Optional

Number of results to return (pagination)

Default: 50Example: 20
offsetintegerOptional

Offset for pagination

Default: 0Example: 0
allbooleanOptional

If true, fetch all addresses for the organization (ignores pagination)

Example: true
Responses
200

List of unified deposit addresses

application/json
get
GET /unified-deposit-address/organization HTTP/1.1
Host: 
Accept: */*
{
  "success": true,
  "data": [
    {
      "userId": "user-1234",
      "orgId": "org-5678",
      "destinationChainId": 8453,
      "destinationAddress": "0x742d35Cc6634C0532925a3b844Bc454e4438f44e",
      "destinationTokenAddress": "0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2",
      "enclaveId": "550e8400-e29b-41d4-a716-446655440000",
      "status": "ACTIVE",
      "createdAt": "2024-06-01T12:00:00.000Z",
      "updatedAt": "2024-06-01T12:00:00.000Z",
      "depositAddresses": {
        "evm_deposit_address": [
          {
            "chainId": 1,
            "contractAddress": "0x1111111111111111111111111111111111111111",
            "deployed": true,
            "deploymentTxHash": "0xethmainnet...",
            "deploymentBlock": 100000
          },
          {
            "chainId": 8453,
            "contractAddress": "0x1111111111111111111111111111111111111111",
            "deployed": true,
            "deploymentTxHash": "0xbase...",
            "deploymentBlock": 200000
          },
          {
            "chainId": 42161,
            "contractAddress": "0x1111111111111111111111111111111111111111",
            "deployed": true,
            "deploymentTxHash": "0xarbitrum...",
            "deploymentBlock": 300000
          }
        ]
      }
    }
  ]
}

Fetch unified deposit address details by internal enclaveId

get

Retrieve the unified deposit address by its internal enclaveId (UUID v4). Requires authentication. Intended for internal services.

Path parameters
enclaveIdstring · uuidRequired

Internal enclaveId (UUID v4)

Example: 550e8400-e29b-41d4-a716-446655440000
Responses
200

Unified deposit address found

application/json
get
GET /unified-deposit-address/enclave/{enclaveId} HTTP/1.1
Host: 
Accept: */*
{
  "success": true,
  "data": {
    "userId": "user-1234",
    "orgId": "org-5678",
    "destinationChainId": 8453,
    "destinationAddress": "0x742d35Cc6634C0532925a3b844Bc454e4438f44e",
    "destinationTokenAddress": "0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2",
    "enclaveId": "550e8400-e29b-41d4-a716-446655440000",
    "status": "ACTIVE",
    "createdAt": "2024-06-01T12:00:00.000Z",
    "updatedAt": "2024-06-01T12:00:00.000Z",
    "depositAddresses": {
      "evm_deposit_address": [
        {
          "chainId": 1,
          "contractAddress": "0x1111111111111111111111111111111111111111",
          "deployed": true,
          "deploymentTxHash": "0xethmainnet...",
          "deploymentBlock": 100000
        },
        {
          "chainId": 8453,
          "contractAddress": "0x1111111111111111111111111111111111111111",
          "deployed": true,
          "deploymentTxHash": "0xbase...",
          "deploymentBlock": 200000
        },
        {
          "chainId": 42161,
          "contractAddress": "0x1111111111111111111111111111111111111111",
          "deployed": true,
          "deploymentTxHash": "0xarbitrum...",
          "deploymentBlock": 300000
        }
      ]
    }
  }
}

Last updated