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.

Authorizations
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
post
/unified-deposit-address/create
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.

Authorizations
Body
Responses
post
/unified-deposit-address/create/batch
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.

Authorizations
Path parameters
userIdstringRequired

Unique user identifier

Example: user-1234
Responses
200

Unified deposit address found

application/json
get
/unified-deposit-address/user/{userId}
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.

Authorizations
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
/unified-deposit-address/user/{userId}/destination
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).

Authorizations
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
/unified-deposit-address/organization
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.

Authorizations
Path parameters
enclaveIdstring · uuidRequired

Internal enclaveId (UUID v4)

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

Unified deposit address found

application/json
get
/unified-deposit-address/enclave/{enclaveId}
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
        }
      ]
    }
  }
}

Query the status of a teleport request

get

Get the status of a teleport request by source chain ID and source transaction hash. Requires authentication.

Authorizations
Query parameters
sourceChainIdintegerRequired

Source chain ID of the depost transaction

Example: 8453
inboundTransactionHashstringRequired

Transaction hash of the deposit transaction

Example: 0xabc123...
Responses
200

Teleport request status returned successfully

application/json
get
/unified-deposit-address/teleport/status
GET /unified-deposit-address/teleport/status?sourceChainId=1&inboundTransactionHash=text HTTP/1.1
Host: 
Accept: */*
{
  "success": true,
  "multiTransactionId": "550e8400-e29b-41d4-a716-446655440000",
  "overallStatus": "COMPLETED",
  "transactionType": "SWAP",
  "sourceChains": [
    8453
  ],
  "destinationChains": [
    8453
  ],
  "inputTransactions": {
    "8453": {
      "status": "COMPLETED",
      "txnURL": "https://basescan.org/tx/0xabc123...",
      "requestId": "req-123"
    }
  },
  "outputTransactions": {
    "8453": [
      {
        "status": "COMPLETED",
        "txnURL": "https://basescan.org/tx/0xdef456...",
        "requestId": "req-456"
      }
    ]
  },
  "metadata": {},
  "estimatedTime": 1699999999,
  "createdTimestamp": 1699999999000,
  "lastUpdatedTimestamp": 1699999999000
}

Last updated