Skip to main content

External APIs

Cryptovoxels has a few APIs that you can use for your own analysis or to show on your website.

Here is a list of APIs you can obtain, as of v 4.25:

  1. Parcels info
  2. Single parcel info
  3. All features inside a parcel
  4. Suburbs
  5. Islands
  6. Womps
  7. Avatars
  8. Wearables
  9. Single wearable

Extra: Obtain the leaflet map.

1. Parcels info

All Parcels info {.tabset}

Description

Returns owner, collaborators, parcel description, parcel geometry and more for every single parcels of Cryptovoxels.

cURL

cURL --request GET \
--url 'https://www.cryptovoxels.com/api/parcels.json'

Nodejs

const request = require('request');

const options = {
method: 'GET',
url: 'https://www.cryptovoxels.com/api/parcels.json'
};

request(options, function (error, response, body) {
if (error) throw new Error(error);

console.log(body);
});

Python

import requests

url = "https://www.cryptovoxels.com/api/parcels.json"
response = requests.request("GET", url)

print(response.text)

response

{"success":true,
"parcels":[
{"id":1,
"height":9,
"address":"70 Block Fork",
"name":"Metaverse",
"contributors":["0x4595ff64328faf80a8cf0d52355639984b6af23c",""],
"geometry":{
"type":"Polygon",
"coordinates":[
[
[0.15,0.02],
[0.02,0.02],
[0.02,0.2],
[0.15,0.2],[0.15,0.02]
]
]
},
"area":234,
"distance":2.82842712474619,
"price":0,
"owner":"0xe5a994be9e94513bcb1a0a5991470d9fde380d26",
"owner_name":"anonymous",
"x1":2,
"x2":15,
"y1":0,
"y2":9,
"z1":2,
"z2":20
},
...

2. Single parcel

Single parcel info {.tabset}

Description

Returns basic parcel info for a specific parcel given the parameter :id.

cURL

cURL --request GET \
--url 'https://www.cryptovoxels.com/p/:id'

Nodejs

const request = require('request');

const options = {
method: 'GET',
url: 'https://www.cryptovoxels.com/p/:id'
};

request(options, function (error, response, body) {
if (error) throw new Error(error);

console.log(body);
});

Python

import requests

url = "https://www.cryptovoxels.com/p/:id"
response = requests.request("GET", url)

print(response.text)

response

request "https://www.cryptovoxels.com/p/5" =>
{
"name":"76 Block Fork",
"image":"https://map.cryptovoxels.com/tile/parcel?x=0.07&y=-0.24",
"description":"100m² plot title parcel near The Center in Origin City, 19m from the origin, with a 6m build height and near to Addy Center, Block Fork, Silver Expressway and Night Pass",
"attributes":{
"area":100,
"width":10,
"depth":10,
"height":6,
"elevation":0,
"suburb":"The Center",
"island":"Origin City",
"title":"plot"
},
"external_url":"https://www.cryptovoxels.com/parcels/5",
"background_color":"f3f3f3"
}

3. All features in a parcel

Single parcel features {.tabset}

Description

Returns all features inside a specific parcel given the parameter :id.

cURL

cURL --request GET \
--url 'https://www.cryptovoxels.com/grid/parcels/:id'

Nodejs

const request = require('request');

const options = {
method: 'GET',
url: 'https://www.cryptovoxels.com/grid/parcels/:id'
};

request(options, function (error, response, body) {
if (error) throw new Error(error);

console.log(body);
});

Python

import requests

url = "https://www.cryptovoxels.com/grid/parcels/:id"
response = requests.request("GET", url)

print(response.text)

response

request "https://www.cryptovoxels.com/grid/parcels/670" =>
{"success":true,
"parcel":{
"id":670,
"hash":"815b69b39ee84f2a30c6ae6fab46bef2da3b6bb7",
"features":[
{
"type":"youtube",
"scale":[11.7,7.2,0],
"url":"https://www.youtube.com/watch?v=l9_-2oG4Cc0",
"position":[-6.2,5.25,0.25],
"rotation":[0,4.71238898038469,0],
"uuid":"35f6dbfd-d255-4706-9635-cfa2d2c9a366",
"script":"",
"id":"videoo",
"inverted":false,
"screenRatio":"169"
},
...
],
"settings":{},
"scripting":false,
"voxels":"eJzt1LEJw0AQRFELleJSXIv6uNKNg81swZ1hGYn3Np5AcPrb2FrucM7F38q//Zy+bTymHTY2/OE15k8PbLI3rNIDm/ttWHW1Huzjc7++5vvbWdmcs8nesOpqPTg3/3b2kfyubfSglx4kv2sbPeilB8nv2kYP8t2pBzZ33NBJD2yyN3TSAxv/KUUPbPSAogc2ekDRAxs9oOiBjR5Q9MBGDyh6YKMHFD2w0QOKHtjoAUUPkjfQSw+SN9BLD5I30EsPkjfQSw+SN9BLD5I30EsP/KdQ9EAPoOiBHkB5A17GCZE=",
"owner":"0x0fA074262d6AF761FB57751d610dc92Bac82AEf9",
"sandbox":false,
"grid":true,
"bake":true,
"contributors":["0x98be1b7feb2eb8f84251968d3b8d7d51fe04f323"],
"description":null,
"images":[""],
"name":"Theater",
"address":"4 Prime Passage",
"suburb":"Scripting",
"island":"Origin City",
"x1":-52,
"y1":0,
"z1":246,
"x2":-38,
"y2":10,
"z2":259,
"tileset":null,
"palette":["#ffffff","#888888","#000000","#b44141","#665757","#05ffa1","#b967ff","#fffb96"]
}
}

4. Suburbs

Suburbs {.tabset}

Description

Returns informations about all suburbs .

cURL

cURL --request GET \
--url 'https://www.cryptovoxels.com/api/suburbs.json'

Nodejs

const request = require('request');

const options = {
method: 'GET',
url: 'https://www.cryptovoxels.com/api/suburbs.json'
};

request(options, function (error, response, body) {
if (error) throw new Error(error);

console.log(body);
});

Python

import requests

url = "https://www.cryptovoxels.com/api/suburbs.json"
response = requests.request("GET", url)

print(response.text)

response

{"success":true,
"suburbs":[
{
"id":1,
"name":"The Center",
"position":
{
"type":"Point",
"coordinates":
[0,0]
}
},
...

5. Islands

Suburbs {.tabset}

Description

Returns a list of all islands and their geometry.

cURL

cURL --request GET \
--url 'https://www.cryptovoxels.com/api/islands.json'

Nodejs

const request = require('request');

const options = {
method: 'GET',
url: 'https://www.cryptovoxels.com/api/islands.json'
};

request(options, function (error, response, body) {
if (error) throw new Error(error);

console.log(body);
});

Python

import requests

url = "https://www.cryptovoxels.com/api/islands.json"
response = requests.request("GET", url)

print(response.text)

response

{"success":true,
"islands":[
{
"id":1,
"name":"Origin City",
"position":{
"type": "point",
"coordinates": [0,0]
},
"geometry":{
"type":"Polygon",
"coordinates":[
[[-4.81,-4.81],
[-4.81,4.81],
[4.81,4.81],
[4.81,-4.81],
[-4.81,-4.81]]
]
}
},
...

6. Womps

Womps {.tabset}

Description

Returns the last 100 womps and their info.

cURL

cURL --request GET \
--url 'https://www.cryptovoxels.com/api/womps.json'

Nodejs

const request = require('request');

const options = {
method: 'GET',
url: 'https://www.cryptovoxels.com/api/womps.json'
};

request(options, function (error, response, body) {
if (error) throw new Error(error);

console.log(body);
});

Python

import requests

url = "https://www.cryptovoxels.com/api/womps.json"
response = requests.request("GET", url)

print(response.text)

response

{"success":true,
"womps":[
{
"id":4746,
"author":"0x83E81d747529F0Eb6145b149C438aB7f9BBD651C",
"content":"supa cool",
"parcel_id":856,
"coords":"SW@265E,117S",
"created_at":"2020-09-29T03:21:35.660Z",
"updated_at":"2020-09-29T03:21:35.660Z",
"image_supplied":false
},
...

Rss feed:

https://www.cryptovoxels.com/womps.rss

7. Avatars

Avatars {.tabset}

Description

Returns avatars informations and their corresponding parcels.

cURL

cURL --request GET \
--url 'https://www.cryptovoxels.com/api/avatars.json'

Nodejs

const request = require('request');

const options = {
method: 'GET',
url: 'https://www.cryptovoxels.com/api/avatars.json'
};

request(options, function (error, response, body) {
if (error) throw new Error(error);

console.log(body);
});

Python

import requests

url = "https://www.cryptovoxels.com/api/avatars.json"
response = requests.request("GET", url)

print(response.text)

response

{"id":645,
"owner":"0x0fa074262d6af761fb57751d610dc92bac82aef9",
"name":"Fayelure",
"parcels":[{
"f1":670,
"f2":"Theater",
"f3":"4 Prime Passage"
}
]},
...

8. Collectibles

Collectibles {.tabset}

Description

Returns all collectibles and their info.

cURL

cURL --request GET \
--url 'https://www.cryptovoxels.com/api/collectibles.json'

Nodejs

const request = require('request');

const options = {
method: 'GET',
url: 'https://www.cryptovoxels.com/api/collectibles.json'
};

request(options, function (error, response, body) {
if (error) throw new Error(error);

console.log(body);
});

Python

import requests

url = "https://www.cryptovoxels.com/api/collectibles.json"
response = requests.request("GET", url)

print(response.text)

response

{"success":true,
"collectibles":[
{
"id":"492622e7-4588-45e3-9ca9-f96fb59ed3f9",
"name":"Black Spray Paint",
"token_id":59,
"description":"",
"issues":8,
"author":"0x2999377cd7a7b5fc9fd61db33610c891602ce037",
"hash":"3abf98ffa393afba38fde06187b0ed1f1d902126"
},
...

9. Collectibles of one collections

Collection's collectibles {.tabset}

Description

Returns all collectibles and their info from one specific collection

Replace :id by the collection id.

cURL

cURL --request GET \
--url 'https://www.cryptovoxels.com/api/collections/:id/collectibles.json'

Nodejs

const request = require('request');

const options = {
method: 'GET',
url: 'https://www.cryptovoxels.com/api/collections/:id/collectibles.json'
};

request(options, function (error, response, body) {
if (error) throw new Error(error);

console.log(body);
});

Python

import requests

url = "https://www.cryptovoxels.com/api/collections/:id/collectibles.json"
response = requests.request("GET", url)

print(response.text)

response

{"success":true,
"collectibles":[
{
"id":"492622e7-4588-45e3-9ca9-f96fb59ed3f9",
"name":"Black Spray Paint",
"token_id":59,
"description":"",
"issues":8,
"author":"0x2999377cd7a7b5fc9fd61db33610c891602ce037",
"hash":"3abf98ffa393afba38fde06187b0ed1f1d902126"
},
...

10. Single collectible

Single collectible {.tabset}

Description

Returns all information about a specific collectible given the parameter :collection_id and :id.

caution

Because this API reveals the vox file of the wearable it is not to be abused.

caution

Because this API reveals the vox file of the wearable it is not to be abused.

cURL

cURL --request GET \
--url 'https://www.cryptovoxels.com/c/:collection_id/:id'

Nodejs

const request = require('request');

const options = {
method: 'GET',
url: 'https://www.cryptovoxels.com/c/:collection_id/:id'
};

request(options, function (error, response, body) {
if (error) throw new Error(error);

console.log(body);
});

Python

import requests

url = "https://www.cryptovoxels.com/c/:collection_id/:id"
response = requests.request("GET", url)

print(response.text)

response

request "https://www.cryptovoxels.com/c/1/5" =>
{"name":"Royal Edge",
"image":"https://www.cryptovoxels.com/w/3e67f51d6c17281963c948456b7032d3f7f3f9bb/png",
"description":"A short sword designed for the Royal Guards and worn as a medal of prestige rather than a combat weapon. While its main purpose is symbolic, do not underestimate the damage it can deliver to a piece of crusty loaf.",
"attributes":{
"vox":"https://www.cryptovoxels.com/w/3e67f51d6c17281963c948456b7032d3f7f3f9bb/vox",
"author":"topper",
"issues":32,
"rarity":"epic"
},
"external_url":"https://www.cryptovoxels.com/wearables/5",
"background_color":"FAD961"
}

Show the leaflet map on your website.

The map is generated using the free leaflet library.

Add leaflet to your page

Via your favorite mean. Below we load up leaflet from the CDN using the link and script element at the top of the page.

    <!--  JQUERY -->
<script src="https://code.jquery.com/jquery-3.4.1.min.js" integrity="sha256-CSXorXvZcTkaix6Yvo6HppcZGetbYMGWSFlBw8HfCJo=" crossorigin="anonymous"></script>

<!-- LEAFLET-->
<link rel="stylesheet" href="https://unpkg.com/leaflet@1.3.1/dist/leaflet.css" integrity="sha512-Rksm5RenBEKSKFjgI3a41vrjkw4EVPlJ3+OiI65vTjIdo9brlAacEuKOiQ5OFh7cOI1bkDwLqdLw3Zg0cRJAAQ==" crossorigin="">
<script src="https://unpkg.com/leaflet@1.3.1/dist/leaflet.js" integrity="sha512-/Nsx9X4HebavoBvEBuyp3I7od5tA0UzAxs+j83KgC8PU0kgB4XiK4Lfe4y4cgBtaRJQEIFCW+oC506aPT2L1zw==" crossorigin=""></script>

Have a div ready

here we add a div element that will contain our map.

<div id="cvmap" style="height: 700px; position: relative; outline: none;">
<!-- It is important that the leaflet map is in a "defined" size container Or that it has a defined size.-->

Add the javascript

In a <script></script> element we add the following code.

       var CVmap = L.map('cvmap').setView([1.80, 0.98], 9);
/* Load the tileLayer x and y*/
L.tileLayer(`https://map.cryptovoxels.com/tile?z={z}&x={x}&y={y}`, {
minZoom: 3,
maxZoom: 20,
attribution: 'Map data &copy; Cryptovoxels',
id: 'cryptovoxels'
}).addTo(CVmap)

It loads up the leaflet layer, which is available from: https://map.cryptovoxels.com/tile?z={z}&x={x}&y={y}.

Example:

CV interactive map and the repo of the example: https://github.com/Benjythebee/CV_interactive_map