Create a New Crypto Address

Now that we have an Assed Pool and taken the id from the previous request, we can use it to generate crypto addresses within that Pool. The list of available cryptocurrency addresses that can be added is given in the Supported Assets and Protocols guide.

In this page of the guide, we will be using the Create a new addressAPI. This is a POST request that will create a new address of the crypto type that we define, which will then be associated with AssetPoolId that we give in the request.

Request Breakdown

The details to be sent in this request are detailed below:

FieldDescription
networkThe blockchain network where the asset is hosted.
assetThe type of cryptocurrency asset.
referenceA unique reference for the crypto address
customerIdThe unique identifier of the customer.
assetPoolIdThe unique identifier of the asset pool, id from the previous request.

Example Request

Here is how an example request might look:

curl --location --globoff 'https://api.sandbox.layer1.com/digital/v1/addresses' \
--header 'Content-Type: application/json' \
--header 'Authorization: Bearer eyJhbGciOiJSUzI1NiIsInR5cCIgOiAiSldUIiwia2lkIiA6ICJEQ3JxYThETGtXc3ZQcHplbktyN2QtaldhbW40RU1TS09FOWRHYk8xaGdvIn0.eyJleHAiOjE3MTc1MjcwOTksImlhdCI6MTcxNzUyNjc5OSwianRpIjoiM2NlODVkMjItODFjMy00ZTZlLTg2YWYtODFlNDg4MDIwM2E4IiwiaXNzIjoiaHR0cHM6Ly9hdXRoLnNhbmRib3gubGF5ZXIxLmNvbS9hdXRoL3JlYWxtcy9idm5rIiwiYXVkIjpbImJ2bmstY2VudHJpZnVnbyIsImJ2bmstYXBpLWdhdGV3YXkiLCJhY2NvdW50Il0sInN1YiI6IjIzNWI4NTQwLTIwMmEtNDFhYi05YzliLWZjNzRiMjkyZDljMSIsInR5cCI6IkJlYXJlciIsImF6cCI6Im1hc3Rlci1pZCIsInNlc3Npb25fc3RhdGUiOiI2MjJiM2ZhNy00NTExLTQ2YTMtYmU5Ni00NjljNDIyMGQzNWYiLCJyZWFsbV9hY2Nlc3MiOnsicm9sZXMiOlsibGF5ZXIxOnJvbGU6dGVuYW50Om9wZXJhdG9yIiwibGF5ZXIxOnJvbGU6Y3J5cHRvOm1vbml0b3IiLCJsYXllcjE6cm9sZTp0cmFkZTp0cmFkaW5nOnZpZXdlciIsImxheWVyMTpyb2xlOmhvb2s6b3BlcmF0b3IiLCJsYXllcjE6cm9sZTp0cmFkZTpsaXF1aWRpdHk6b3BlcmF0b3IiLCJsYXllcjE6cm9sZTp0cmFkZTpsaXF1aWRpdHk6dmlld2VyIiwibGF5ZXIxOnJvbGU6Y3J5cHRvOnZpZXdlciIsImxheWVyMTpyb2xlOnRlbmFudDp2aWV3ZXIiLCJvZmZsaW5lX2FjY2VzcyIsImxheWVyMTpyb2xlOmhvb2s6dmlld2VyIiwibGF5ZXIxOnJvbGU6Y3J5cHRvOm9wZXJhdG9yIiwibGF5ZXIxOnJvbGU6dHJhZGU6dHJhZGluZzpvcGVyYXRvciIsInVtYV9hdXRob3JpemF0aW9uIiwiZGVmYXVsdC1yb2xlcy1idm5rIl19LCJyZXNvdXJjZV9hY2Nlc3MiOnsibWFzdGVyLWlkIjp7InJvbGVzIjpbInVtYV9wcm90ZWN0aW9uIl19LCJhY2NvdW50Ijp7InJvbGVzIjpbIm1hbmFnZS1hY2NvdW50IiwibWFuYWdlLWFjY291bnQtbGlua3MiLCJ2aWV3LXByb2ZpbGUiXX19LCJzY29wZSI6InRyYW5zYWN0aW9uczplZGl0IHNjcmVlbmluZ3M6ZWRpdCB2ZW51ZS1kZXBvc2l0LWFkZHJlc3NlczplZGl0IGNvbnZlcnNpb25zOnZpZXcgZXhwb3J0czplZGl0IGZhaWxpbmctY29uZmlndXJhdGlvbnM6dmlldyBrZXlwYWlyczp2aWV3IHZlbnVlLWJhbGFuY2VzOnZpZXcgYXNzZXQtcG9vbHM6dmlldyBzY3JlZW5pbmdzOnZpZXcgYXNzZXQtcG9vbHM6ZWRpdCBhZGRyZXNzZXM6dmlldyBob29rLWRlc3RpbmF0aW9uczplZGl0IHZlbnVlLWRlcG9zaXQtYWRkcmVzc2VzOnZpZXcgZmFpbGluZy1jb25maWd1cmF0aW9uczplZGl0IHRlbmFudHM6dmlldyBob29rLWRlc3RpbmF0aW9uczp2aWV3IHZlbnVlLXRyYW5zZmVyOnZpZXcgZmVlLWVzdGltYXRlOmVkaXQgdGVuYW50czplZGl0IHRyYW5zYWN0aW9uczp2aWV3IGFkZHJlc3NlczplZGl0IGV4cG9ydHM6dmlldyB2ZW51ZS10cmFuc2ZlcjplZGl0IGtleXBhaXJzOmVkaXQgbmV0d29ya3M6ZWRpdCBjb252ZXJzaW9uczplZGl0IG5ldHdvcmtzOnZpZXcgaG9vay1ldmVudHM6dmlldyIsInNpZCI6IjYyMmIzZmE3LTQ1MTEtNDZhMy1iZTk2LTQ2OWM0MjIwZDM1ZiIsImJ2bms6bmV0d29ya193aGl0ZWxpc3QiOlsiMC4wLjAuMC8wIiwiOjovMCJdLCJjbGllbnRIb3N0IjoiMTAyLjE4Mi4xOTAuMTMwIiwicm9sZXMiOlsibGF5ZXIxOnJvbGU6dGVuYW50Om9wZXJhdG9yIiwibGF5ZXIxOnJvbGU6Y3J5cHRvOm1vbml0b3IiLCJsYXllcjE6cm9sZTp0cmFkZTp0cmFkaW5nOnZpZXdlciIsImxheWVyMTpyb2xlOmhvb2s6b3BlcmF0b3IiLCJsYXllcjE6cm9sZTp0cmFkZTpsaXF1aWRpdHk6b3BlcmF0b3IiLCJsYXllcjE6cm9sZTp0cmFkZTpsaXF1aWRpdHk6dmlld2VyIiwibGF5ZXIxOnJvbGU6Y3J5cHRvOnZpZXdlciIsImxheWVyMTpyb2xlOnRlbmFudDp2aWV3ZXIiLCJvZmZsaW5lX2FjY2VzcyIsImxheWVyMTpyb2xlOmhvb2s6dmlld2VyIiwibGF5ZXIxOnJvbGU6Y3J5cHRvOm9wZXJhdG9yIiwibGF5ZXIxOnJvbGU6dHJhZGU6dHJhZGluZzpvcGVyYXRvciIsInVtYV9hdXRob3JpemF0aW9uIiwiZGVmYXVsdC1yb2xlcy1idm5rIl0sImNsaWVudEFkZHJlc3MiOiIxMDIuMTgyLjE5MC4xMzAiLCJjbGllbnRfaWQiOiJtYXN0ZXItaWQiLCJidm5rOnRlbmFudElkIjoiMjM1Yjg1NDAtMjAyYS00MWFiLTljOWItZmM3NGIyOTJkOWMxIn0.ndXgU5AjlLgUBhez9Y6B8WbyKFGJzi4CjOZ8CzERWV8dH18DgPV0TzF56FGP-gWarIJCyK9nbsDmGn7H0I041HbnZrOS72MRgteU1V-5zbFMEhsM9Ksqujbxa6yo57dlfHmtLLrMUfdruyUoxi-0KZm6g8ADxu2h-0dn1UA9CqAW60iFbqOZaTDZyoIADDoOSOCrNjwIobFEO-7GP46-kjUOCivsm7atZiRomCB0jrbGBuhOuAf2H5SNDfxi4RbWjEgj2XGf_gJ46Bzp6IOGUBI6ANVD4jfff0DUGlERIKdhgwhwhiCMI41zHMUvV4EaY8Nob81hwhKPdcfLQQ73OA' \
--data '
{
    "network": "ETHEREUM",
    "asset": "ETH",
    "reference": "First Eth Address",
    "customerId": "customerOne",
    "assetPoolId": "2be1cc9c-a5af-47e2-9dba-b7b82317e600"
}'

Example Response

Upon successfully submitting the request, you'll receive a response like the following with a 202 code:

{
    "assetPoolId": "2be1cc9c-a5af-47e2-9dba-b7b82317e600",
    "keyPairId": "44cf54df-93e9-4dd9-84c9-e96f0cf90f3e",
    "reference": "First Eth Address"
}

The resulting fields in the response are:

FieldDescription
assetPoolIdThe unique identifier of the asset pool.
keyPairIdThe unique identifier of the key pair.
referenceA unique reference for the crypto address.

At this point, the address is created on the relevant blockchain, which is then delivered asynchronously through a webhook to the destination set up in the first step of this guide.

Address Created Webhook

The address created webhook will be sent to any destination that has subscribed to the event layer1:digital:address:created. It will look like the following:

{
    "event": "layer1:digital:address:created",
    "timestamp": "2024-05-30T20:03:54.075299611Z",
    "data": {
      "id": "d18a869f-1919-44a0-9e5e-784d7ca8f45a",
      "address": "0xc4b21fb39aaf5fc07d3cd4420bf3ee74a61642e9",
      "network": "ETHEREUM",
      "keyPairId": "44cf54df-93e9-4dd9-84c9-e96f0cf90f3e",
      "reference": "First Eth Address",
      "customerId": "customerOne",
      "assetPoolId": "2be1cc9c-a5af-47e2-9dba-b7b82317e600"
    }
  }

The resulting fields are given as:

FieldDescription
eventThe event type that triggered the webhook.
timestampThe time when the event occurred in ISO 8601 format.
dataA nested object containing the details of the created address.
data.idThe unique identifier of the address.
data.addressThe crypto address that was created.
data.networkThe blockchain network where the address is hosted.
data.keyPairIdThe unique identifier of the key pair.
data.referenceA unique reference for the crypto address.
data.customerIdThe unique identifier of the customer.
data.assetPoolIdThe unique identifier of the asset pool.

The address can be extracted from data.address, and you can now display it to the user you are expecting th deposit from, who can the pay in the correct cryptocurrency.