Free API · v1
Free crypto data API
Token unlocks and how each one is known, a dated event calendar, the price move after every event, pattern base rates, and predictions with their record. Plain JSON files, no key, no sign-up, rebuilt every day.
The one rule
Show “Data: PatternPlus” linked to pattern.plus wherever you show or pass on the data. That's the whole price. Commercial use is fine: the data is CC BY 4.0.
<a href="https://pattern.plus">Data: PatternPlus</a>
The files
https://pattern.plus/api/v1/index.json- This list: every file and what it holds.
https://pattern.plus/api/v1/calendar.json- Every dated event in the next 90 days (token unlocks, exchange listings and delistings, DAO votes, network upgrades, Fed rate decisions, US CPI, jobs, PPI, PCE, GDP and retail sales releases, Bitcoin options expiries) and, where we count it, what past events like it did next.
https://pattern.plus/api/v1/unlocks.json- Token unlocks in the next 180 days, one row per coin and day: tokens, share of the circulating and total supply, value at today's price, and how we know it.
https://pattern.plus/api/v1/unlocks/{slug}.json- One coin's whole unlock schedule, past and future, row by row, with its sources (every coin listed with an unlocks file in tokens.json). 57 coins have one today.
https://pattern.plus/api/v1/predictions.json- Every current prediction: the chance a coin is higher in 1, 7 and 30 days, its likely range, the past cases behind it, and how often such calls were right.
https://pattern.plus/api/v1/patterns.json- Every pattern we count: how many past events matched, how often the price was higher 1, 7, 30 and 90 days later, the median move, and whether the edge held up on newer cases.
https://pattern.plus/api/v1/effects.json- Every event of the last 365 days and the price move after it: 1, 7, 30 and 90 days, and against Bitcoin over 30 days.
https://pattern.plus/api/v1/tokens.json- Every coin on the site: name, ticker, rank, chain and contract, its page, and which files cover it.
Quick start
curl https://pattern.plus/api/v1/unlocks.json
const res = await fetch("https://pattern.plus/api/v1/calendar.json");
const {data, as_of} = await res.json(); // every event in the next 90 days, as of as_of
import requests
unlocks = requests.get("https://pattern.plus/api/v1/unlocks.json").json()["data"]
The whole API is described in OpenAPI 3.1 at https://pattern.plus/api/v1/openapi.json: import it into Postman or Insomnia, generate a client, or hand it to an AI agent as tools.
Every file looks like this
- data: the rows. Everything else describes them.
- as_of: the date the data is about; rebuilt: when the file was made.
- attribution and license: the rule above, in every file.
- count: how many rows; version: 1 (new fields can appear; a field is never renamed or removed within v1).
- Moves and chances are fractions:
0.042is 4.2%. Fields namedpct_…are already percent:2.1is 2.1%. - Every unlock row says how we know it (basis): the project's own documents (checked by hand, or matched to the circulating supply history), on-chain vesting contracts (Sablier, Hedgey, UNCX, Team Finance, Streamflow, Jupiter Lock), or projected from the circulating supply's own regular steps.
From tonight's unlocks.json
{
"api": "PatternPlus API",
"version": 1,
"file": "unlocks",
"as_of": "2026-10-04",
"rebuilt": "2026-10-04T21:07:30+00:00",
"attribution": {
"text": "Data: PatternPlus",
"url": "https://pattern.plus",
"required": "Show \"Data: PatternPlus\" linked to https://pattern.plus wherever you show or pass on this data."
},
"license": {
"name": "CC BY 4.0",
"url": "https://creativecommons.org/licenses/by/4.0/"
},
"docs": "https://pattern.plus/developers",
"count": 246,
"data": [
{
"date": "2026-10-05",
"token": "well-moonwell",
"symbol": "WELL",
"name": "Moonwell",
"amount": 101147.48,
"pct_circulating": 0.0025,
"pct_total": 0.002,
"value_usd": 230,
"categories": [
"Sablier vesting"
],
"types": [
"cliff"
],
"basis": [
"on-chain vesting (Sablier)"
],
"file": "https://pattern.plus/api/v1/unlocks/well-moonwell.json"
},
{
"date": "2026-10-06",
"token": "ena-ethena",
"symbol": "ENA",
"name": "Ethena",
"amount": 267187500.0,
"pct_circulating": 2.6466,
"pct_total": 1.7812,
"value_usd": 63418283,
"categories": [
"Projected monthly release"
],
"types": [
"cliff"
],
"basis": [
"projected from the circulating supply's own regular steps"
],
"file": "https://pattern.plus/api/v1/unlocks/ena-ethena.json"
}
]
}
From tonight's calendar.json
{
"api": "PatternPlus API",
"version": 1,
"file": "calendar",
"as_of": "2026-10-04",
"rebuilt": "2026-10-04T21:07:30+00:00",
"attribution": {
"text": "Data: PatternPlus",
"url": "https://pattern.plus",
"required": "Show \"Data: PatternPlus\" linked to https://pattern.plus wherever you show or pass on this data."
},
"license": {
"name": "CC BY 4.0",
"url": "https://creativecommons.org/licenses/by/4.0/"
},
"docs": "https://pattern.plus/developers",
"count": 131,
"data": [
{
"date": "2026-10-05",
"kind": "unlock",
"token": "well-moonwell",
"symbol": "WELL",
"name": "Moonwell",
"title": "0.0% of supply unlocks",
"venue": null,
"page": "https://pattern.plus/token/well-moonwell",
"amount": 101147.48,
"pct_circulating": 0.0025,
"value_usd": 230,
"categories": [
"Sablier vesting"
],
"basis": [
"on-chain vesting (Sablier)"
]
},
{
"date": "2026-10-06",
"kind": "unlock",
"token": "ena-ethena",
"symbol": "ENA",
"name": "Ethena",
"title": "2.6% of supply unlocks",
"venue": null,
"page": "https://pattern.plus/token/ena-ethena",
"amount": 267187500.0,
"pct_circulating": 2.6466,
"value_usd": 63418283,
"categories": [
"Projected monthly release"
],
"basis": [
"projected from the circulating supply's own regular steps"
],
"past_events_like_it": {
"pattern": "unlock-cap-mid-cat-other-sz-gt2",
"horizons": {
"1d": {
"higher": 0.3846,
"ci90": [
0.2016,
0.6074
],
"median_move": -0.0195,
"n": 13
},
"7d": {
"higher": 0.2308,
"ci90": [
0.0962,
0.4581
],
"median_move": -0.0937,
"n": 13
},
"30d": {
"higher": 0.3333,
"ci90": [
0.1595,
0.5685
],
"median_move": -0.1145,
"n": 12
},
"90d": {
"higher": 0.2,
"ci90": [
0.0686,
0.4592
],
"median_move": -0.085,
"n": 10
}
},
"page": "https://pattern.plus/pattern/unlock-cap-mid-cat-other-sz-gt2"
}
}
]
}
Good to know
- The files change once a day, around 04:00 UTC. Cache them; calling more often returns the same file.
- They're served from Cloudflare's edge, and any website can read them from the browser (CORS is open).
- Predictions say what past patterns did next. They're not financial advice and they can stop working;
predictions.jsoncarries their record so you can judge them. - Need live prices, alerts or webhooks? That's coming with Pro.