To use the ICOmarks Data API you need to have both "Private Key" and "Public Key". Public Key is used to identify the API user and is sent via request header.
Private Key is used to sign every request together with JSON.
{literal}
class IcomarksAPI
{
private static $apiUrl = 'https://icomarks.ai/api/v1/';
private static $privateKey = '<private key>';
private static $publicKey = '<public key>';
public static function getICOs($params = [])
{
return self::get('icos', $params);
}
public static function getICO($icoId, $params = [])
{
return self::get("ico/{$icoId}", $params);
}
public static function getFilters($params = [])
{
return self::get('filters', $params);
}
private static function get($path, $params)
{
$ch = curl_init(self::generateURL($path, $params));
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, [
'Content-Type: application/json',
]);
$response = curl_exec($ch);
$response = json_decode($response, true);
return $response;
}
public static function generateURL($path, $params = [])
{
$params["public_key"] = self::$publicKey;
$params["signature"] = self::generateSignature($path, $params);
return self::$apiUrl . $path . '?' . http_build_query($params);
}
private static function generateSignature($path, $params)
{
$path = trim($path, '/');
ksort($params, SORT_STRING);
$hash = hash_hmac("sha384", $path . '?' . http_build_query($params), self::$privateKey, true);
$base = base64_encode($hash);
$base = urlencode($base);
return $base;
}
}
{/literal}
{literal}
$data = IcomarksAPI::getICOs();
{/literal}
{literal}
$data = IcomarksAPI::getICOs([
'category' => 12,
'order' => 'rating'
]);
{/literal}
Name | Type | Description |
---|---|---|
category | integer | The ICO category |
platform | integer | The ICO platform |
status |
- active - ended - trading - upcoming - presale_active - presale_ended |
The ICO status |
whitelist | yes/no | Availability of the Whitelist |
kyc | yes/no | Availability of the KYC procedure |
sto | yes/no | STO projects |
ieo | yes/no | IEO projects |
bounty | yes/no | Availability of the Bounty program |
mvp | yes/no | Availability of the MVP/Prototype |
order |
- id - rating - started |
Sorting of ICOs. Nominally sorted by descending order Rating – Sorted in decreasing order Started – Sorted by date (main.start or presale.start). The ICOs without dates are placed at the end of the list. |
page | integer | The default value is page=1 |
{literal}
{
"icos": [
{
"id": "1",
"name": "DMarket",
"description": "People spend time, experience (and sometimes a little luck) every day getting virtual assets.",
"status.id": "trading",
"status.name": "Trading",
"presale.start": null,
"presale.end": null,
"main.start": "2017-11-14",
"main.end": "2017-12-01",
"rating": null,
"source": "https://icomarks.ai/ico/dmarket"
},
//...
],
"total_icos": 3691,
"total_pages": 8,
"current_page": 1,
"error": null
}
{/literal}
Name | Type | Description | |
---|---|---|---|
icos | object[] | List of the ICOs | |
id | integer | Unique identifier | |
name | string | The ICO name | |
description | string | Short description | |
status.id | string | Status code | |
status.name | string | Status name | |
presale.start | date | Start date of the Pre-sale | |
presale.end | date | End date of the Pre-sale | |
main.start | date | Start date of the Main sale | |
main.end | date | End date of the Main sale | |
rating | float | Rating by ICOmarks | |
source | string | Source link to the ICO |
{literal}
$data = IcomarksAPI::getFilters();
{/literal}
{literal}
{
"categories": [
{
"id": "1",
"name": "Banking"
},
//...
],
"platforms": [
{
"id": "3",
"name": "Ethereum"
},
//...
],
"statuses": [
{
"id": "active",
"name": "Active"
},
//...
]
}
{/literal}
Name | Type | Description | |
---|---|---|---|
categories | object[] | List of available categories | |
id | integer | Unique identificator | |
name | string | Category name | |
platforms | object[] | List of available platforms | |
id | integer | Unique identificator | |
name | string | Platform name | |
statuses | object[] | All available statuses | |
id | integer | Unique identificator | |
name | string | Status name |
{literal}
$data = IcomarksAPI::getICO(1);
{/literal}
Name | Type | Description |
---|---|---|
id | integer | Unique identificator |
{literal}
{
"id": "1",
"uri": "dmarket",
"name": "DMarket",
"source": "https://icomarks.ai/ico/dmarket",
"ticker": "DMT",
"logo": "https://icomarks.ai/files/companies/1/a291eb5b0aaf760f4db8380caecd2994.jpg",
"status.id": "trading",
"status.name": "Trading",
"presale.start": null,
"presale.end": null,
"main.start": "2017-11-14",
"main.end": "2017-12-01",
"premium": "yes",
"categories": [
{
"id": "9",
"name": "Entertainment"
}
],
"whitelist": "no",
"kyc": "no",
"sto": "no",
"ieo": "no",
"country": "Ukraine",
"description": "People spend time, experience (and sometimes a little luck) every day getting virtual assets.",
"video": "https://www.youtube.com/embed/h5fI1A2gB-E",
"website": "https://dmarket.io?utm_source=icomarks",
"whitepaper": "https://www.dmarket.io/assets/documents/DMarket_white_paper_EN.pdf",
"bounty.link": null,
"mvp.link": null,
"rating": "",
"raised": "19000000",
"presale.price": null,
"main.price": "750 DMarket = 1 ETH",
"accepting": "ETH, BTC, LTC",
"soft.cap": "",
"hard.cap": "",
"bonus": "",
"platforms": [
{
"id": "3",
"name": "Ethereum"
}
],
"token.type": "ERC20",
"total.tokens": "56921773",
"available.for.sale": "",
"social": {
"bitcointalk": "https://bitcointalk.org/index.php?topic=2041720",
"facebook": "https://www.facebook.com/dmarketcommunity/",
"twitter": "https://twitter.com/dmarket_io",
"telegram": "",
"reddit": "https://www.reddit.com/r/D_Market/",
"github": "https://github.com/suntechsoft/dmarket-smartcontract",
"medium": "https://medium.com/@dmarket",
"slack": "https://dmarket.io/slack",
"linkedin": "",
"vk": "https://vk.com/dmarket_io",
"discord": null,
"instagram": null,
"youtube": "https://www.youtube.com/channel/UCCF8BhVCdsSr1oy9kA1g5vg"
},
"team": [
{
"name": "Volodymyr Panchenko",
"role": "Founder and CEO",
"linkedin.link": "https://www.linkedin.com/in/volodymyr-panchenko-a8b906146/",
"twitter.link": "",
"website.link": ""
}
//...
],
"advisors": [
{
"name": "Oren Klaff",
"role": "Managing Director at Intersection Capital",
"linkedin.link": "https://www.linkedin.com/in/orenklaff",
"twitter.link": "",
"website.link": ""
}
//...
],
"milestones": [
{
"date": "2016 June",
"description": "skins.cash was created"
}
//...
],
"social_stats": {
"telegram": null,
"twitter": "4",
"facebook": "6965"
}
}
{/literal}
Name | Type | Description | |
---|---|---|---|
id | integer | Unique identificator | |
uri | string | Uniform Resource Identifier | |
name | string | The ICO name | |
source | string | Source link to the ICO | |
ticker | string | The ICO ticker on the market | |
logo | string | Link to the logo | |
status.id | string | Status code | |
status.name | string | Status name | |
presale.start | date | Start date of the Pre-sale | |
presale.end | date | End date of the Pre-sale | |
main.start | date | Start date of the Main sale | |
main.end | date | End date of the Main sale | |
premium | yes/no | Promoted Listing on ICOmarks | |
categories | object[] | The ICO categories | |
id | integer | Unique identificator | |
name | string | Category name | |
platforms | object[] | The ICO platforms | |
id | integer | Unique identificator | |
name | string | Platform name | |
whitelist | yes/no | Availability of the Whitelist | |
kyc | yes/no | Availability of the KYC procedure | |
sto | yes/no | STO project | |
ieo | yes/no | IEO project | |
country | string | Country in which the ICO team is located | |
description | string | Short description of the ICO | |
video | string | Link to Youtube or Vimeo embedded video | |
website | string | Link to the ICO website | |
whitepaper | string | Link to the Whitepaper | |
bounty.link | string | Link to the Bounty program | |
mvp.link | string | Link to MVP/Prototype | |
rating | float | Rating by ICOmarks | |
raised | integer | Amount of raised funds on the ICO | |
presale.price | string | Price on the Pre-sale | |
main.price | string | Price on the Main sale | |
accepting | string | List of currencies to be accepted during the ICO | |
soft.cap | string | The ICO softcap | |
hard.cap | string | The ICO hardcap | |
bonus | string | Bonuses during the ICO | |
token.type | string | The type of the token | |
total.tokens | double | Total supply tokens | |
available.for.sale | string | Available for sale tokens | |
social | object[] | Social media links | |
bitcointalk | string | Link to Bitcointalk announcement thread | |
string | Link to Facebook page | ||
string | Link to Twitter | ||
telegram | string | Link to Telegram channel | |
string | Link to Reddit | ||
github | string | Link to Github | |
medium | string | Link to Medium | |
slack | string | Link to Slack | |
string | Link to Linkedin | ||
vk | string | Link to VK | |
discord | string | Link to Discord | |
string | Link to Instagram | ||
youtube | string | Link to Youtube channel | |
team | object[] | The project team | |
name | string | Name | |
role | string | Role | |
linkedin.link | string | Link to Linkedin profile | |
twitter.link | string | Link to Twitter profile | |
website.link | string | Link to website or other social networks | |
advisors | object[] | The project advisors | |
name | string | Name | |
role | string | Role | |
linkedin.link | string | Link to Linkedin profile | |
twitter.link | string | Link to Twitter profile | |
website.link | string | Link to website or other social networks | |
milestones | object[] | Milestones of project development | |
date | string | Date in any form | |
description | string | Description of the stage | |
social_stats | object[] | Social stats of the ICO | |
telegram | integer | Number of Telegram members | |
integer | Number of Twitter followers | ||
integer | Number of Facebook fans |
Code | Description |
---|---|
489 | The ICO not found |
Code | Description |
---|---|
465 | Version not supported |
472 | Public key is empty |
477 | User is not found |
485 | Bad signature |
404 | Method not found |
400 | Undefined error |