Get Token Unlock Events
curl --request GET \
--url https://data-tools.prd.arrays.org/api/v1/crypto/unlock-events \
--header 'X-API-Key: <api-key>'import requests
url = "https://data-tools.prd.arrays.org/api/v1/crypto/unlock-events"
headers = {"X-API-Key": "<api-key>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {'X-API-Key': '<api-key>'}};
fetch('https://data-tools.prd.arrays.org/api/v1/crypto/unlock-events', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://data-tools.prd.arrays.org/api/v1/crypto/unlock-events",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"X-API-Key: <api-key>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://data-tools.prd.arrays.org/api/v1/crypto/unlock-events"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("X-API-Key", "<api-key>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://data-tools.prd.arrays.org/api/v1/crypto/unlock-events")
.header("X-API-Key", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://data-tools.prd.arrays.org/api/v1/crypto/unlock-events")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["X-API-Key"] = '<api-key>'
response = http.request(request)
puts response.read_body{
"data": [
{
"cliff_unlocks": {
"allocation_breakdown": [
{
"allocation_name": "<string>",
"cliff_amount": 123,
"cliff_value": 123,
"reference_price": 123,
"reference_price_updated_time": "<string>",
"standard_allocation_name": "<string>",
"unlock_date": "<string>",
"unlock_precision": "<string>"
}
],
"cliff_amount": 123,
"cliff_value": 123,
"value_to_market_cap": 123
},
"data_source": "<string>",
"latest_update_date": "<string>",
"linear_unlocks": {
"allocation_breakdown": [
{
"allocation_name": "<string>",
"cliff_amount": 123,
"cliff_value": 123,
"reference_price": 123,
"reference_price_updated_time": "<string>",
"standard_allocation_name": "<string>",
"unlock_date": "<string>",
"unlock_precision": "<string>"
}
],
"linear_amount": 123,
"linear_value": 123,
"value_to_market_cap": 123
},
"listed_method": "<string>",
"token_name": "<string>",
"token_symbol": "<string>",
"unlock_date": "<string>"
}
],
"error": {
"code": "RESOURCE_NOT_FOUND",
"details": [
{
"field": "<string>",
"got": "<string>",
"reason": "<string>"
}
],
"docs_url": "<string>",
"examples": [
"<string>"
],
"hint": "<string>",
"message": "The requested resource was not found.",
"suggestions": [
"<string>"
]
},
"metadata": "<unknown>",
"pagination": "<unknown>",
"request_id": "<string>",
"success": true
}{
"data": "<unknown>",
"error": {
"code": "RESOURCE_NOT_FOUND",
"details": [
{
"field": "<string>",
"got": "<string>",
"reason": "<string>"
}
],
"docs_url": "<string>",
"examples": [
"<string>"
],
"hint": "<string>",
"message": "The requested resource was not found.",
"suggestions": [
"<string>"
]
},
"metadata": "<unknown>",
"pagination": "<unknown>",
"request_id": "<string>",
"success": true
}{
"data": "<unknown>",
"error": {
"code": "RESOURCE_NOT_FOUND",
"details": [
{
"field": "<string>",
"got": "<string>",
"reason": "<string>"
}
],
"docs_url": "<string>",
"examples": [
"<string>"
],
"hint": "<string>",
"message": "The requested resource was not found.",
"suggestions": [
"<string>"
]
},
"metadata": "<unknown>",
"pagination": "<unknown>",
"request_id": "<string>",
"success": true
}{
"data": "<unknown>",
"error": {
"code": "RESOURCE_NOT_FOUND",
"details": [
{
"field": "<string>",
"got": "<string>",
"reason": "<string>"
}
],
"docs_url": "<string>",
"examples": [
"<string>"
],
"hint": "<string>",
"message": "The requested resource was not found.",
"suggestions": [
"<string>"
]
},
"metadata": "<unknown>",
"pagination": "<unknown>",
"request_id": "<string>",
"success": true
}Crypto
Get Token Unlock Events
OpenAPI JSON Spec Retrieve token unlock events for a specific token
Feature Overview Get token unlock schedule and events including cliff unlocks and linear unlocks.
Main Use Cases
- Token Analysis: Understand token unlock schedules for investment decisions
- Market Impact: Analyze potential market impact from upcoming unlocks
- Portfolio Management: Track unlock events for tokens in your portfolio
- Research: Research tokenomics and vesting schedules
Response Data Structure
Each unlock event includes:
- unlock_date: ISO 8601 date string of the unlock event
- token_name: Full name of the token (e.g., “Arbitrum”)
- token_symbol: Token symbol (e.g., “ARB”)
- listed_method: Method of listing (e.g., “INTERNAL”)
- data_source: Source of the data (e.g., “Whitepaper”)
- linear_unlocks: Linear unlock data (can be null)
- cliff_unlocks: Cliff unlock data (can be null)
- latest_update_date: When the data was last updated
Unlock Types
- Cliff Unlocks: One-time unlock of tokens at a specific date
- Linear Unlocks: Gradual unlock of tokens over a period
Allocation Breakdown
Each unlock type includes allocation breakdown with:
- allocation_name: Name of the allocation (e.g., “Investors”)
- standard_allocation_name: Standardized name (e.g., “Private Investors”)
- cliff_amount: Amount of tokens
- cliff_value: Value in USD
- reference_price: Reference price used for calculation
- unlock_precision: Precision of unlock (e.g., “month”, “day”)
Usage Examples
-
Get all unlock events for Arbitrum:
?token_id=arbitrum -
Get unlock events for a specific date range:
?token_id=arbitrum&start=2024-01-01&end=2024-12-31 -
Get unlock events for Optimism:
?token_id=optimism
Important Notes
- token_id is required
- start and end dates are optional (format: YYYY-MM-DD)
- linear_unlocks and cliff_unlocks can be null if not applicable
GET
/
v1
/
crypto
/
unlock-events
Get Token Unlock Events
curl --request GET \
--url https://data-tools.prd.arrays.org/api/v1/crypto/unlock-events \
--header 'X-API-Key: <api-key>'import requests
url = "https://data-tools.prd.arrays.org/api/v1/crypto/unlock-events"
headers = {"X-API-Key": "<api-key>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {'X-API-Key': '<api-key>'}};
fetch('https://data-tools.prd.arrays.org/api/v1/crypto/unlock-events', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://data-tools.prd.arrays.org/api/v1/crypto/unlock-events",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"X-API-Key: <api-key>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://data-tools.prd.arrays.org/api/v1/crypto/unlock-events"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("X-API-Key", "<api-key>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://data-tools.prd.arrays.org/api/v1/crypto/unlock-events")
.header("X-API-Key", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://data-tools.prd.arrays.org/api/v1/crypto/unlock-events")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["X-API-Key"] = '<api-key>'
response = http.request(request)
puts response.read_body{
"data": [
{
"cliff_unlocks": {
"allocation_breakdown": [
{
"allocation_name": "<string>",
"cliff_amount": 123,
"cliff_value": 123,
"reference_price": 123,
"reference_price_updated_time": "<string>",
"standard_allocation_name": "<string>",
"unlock_date": "<string>",
"unlock_precision": "<string>"
}
],
"cliff_amount": 123,
"cliff_value": 123,
"value_to_market_cap": 123
},
"data_source": "<string>",
"latest_update_date": "<string>",
"linear_unlocks": {
"allocation_breakdown": [
{
"allocation_name": "<string>",
"cliff_amount": 123,
"cliff_value": 123,
"reference_price": 123,
"reference_price_updated_time": "<string>",
"standard_allocation_name": "<string>",
"unlock_date": "<string>",
"unlock_precision": "<string>"
}
],
"linear_amount": 123,
"linear_value": 123,
"value_to_market_cap": 123
},
"listed_method": "<string>",
"token_name": "<string>",
"token_symbol": "<string>",
"unlock_date": "<string>"
}
],
"error": {
"code": "RESOURCE_NOT_FOUND",
"details": [
{
"field": "<string>",
"got": "<string>",
"reason": "<string>"
}
],
"docs_url": "<string>",
"examples": [
"<string>"
],
"hint": "<string>",
"message": "The requested resource was not found.",
"suggestions": [
"<string>"
]
},
"metadata": "<unknown>",
"pagination": "<unknown>",
"request_id": "<string>",
"success": true
}{
"data": "<unknown>",
"error": {
"code": "RESOURCE_NOT_FOUND",
"details": [
{
"field": "<string>",
"got": "<string>",
"reason": "<string>"
}
],
"docs_url": "<string>",
"examples": [
"<string>"
],
"hint": "<string>",
"message": "The requested resource was not found.",
"suggestions": [
"<string>"
]
},
"metadata": "<unknown>",
"pagination": "<unknown>",
"request_id": "<string>",
"success": true
}{
"data": "<unknown>",
"error": {
"code": "RESOURCE_NOT_FOUND",
"details": [
{
"field": "<string>",
"got": "<string>",
"reason": "<string>"
}
],
"docs_url": "<string>",
"examples": [
"<string>"
],
"hint": "<string>",
"message": "The requested resource was not found.",
"suggestions": [
"<string>"
]
},
"metadata": "<unknown>",
"pagination": "<unknown>",
"request_id": "<string>",
"success": true
}{
"data": "<unknown>",
"error": {
"code": "RESOURCE_NOT_FOUND",
"details": [
{
"field": "<string>",
"got": "<string>",
"reason": "<string>"
}
],
"docs_url": "<string>",
"examples": [
"<string>"
],
"hint": "<string>",
"message": "The requested resource was not found.",
"suggestions": [
"<string>"
]
},
"metadata": "<unknown>",
"pagination": "<unknown>",
"request_id": "<string>",
"success": true
}Authorizations
API Key authentication. Example: "your-api-key-here"
Query Parameters
Token identifier (e.g., arbitrum, optimism, sui)
Start date (YYYY-MM-DD format)
End date (YYYY-MM-DD format)

