{"openapi":"3.1.0","info":{"title":"PatternPlus API","version":"1.0","description":"Free crypto data as daily JSON files: token unlocks and how each is known, a dated event calendar, the move after every event, pattern base rates, and predictions with their record. No key. Free with a visible \"Data: PatternPlus\" link to https://pattern.plus (CC BY 4.0).","license":{"name":"CC BY 4.0","url":"https://creativecommons.org/licenses/by/4.0/"}},"externalDocs":{"description":"Docs","url":"https://pattern.plus/developers"},"servers":[{"url":"https://pattern.plus/api/v1"}],"paths":{"/index.json":{"get":{"operationId":"index","summary":"This list","description":"This list: every file and what it holds.","responses":{"200":{"description":"The file.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/Envelope"},{"type":"object","properties":{"data":{"type":"array","items":{"type":"object","properties":{"file":{"type":"string"},"url":{"type":"string","format":"uri"},"holds":{"type":"string"}}}}}}]}}}}}}},"/calendar.json":{"get":{"operationId":"calendar","summary":"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","description":"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.","responses":{"200":{"description":"The file.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/Envelope"},{"type":"object","properties":{"data":{"type":"array","items":{"type":"object","properties":{"date":{"type":"string","format":"date"},"kind":{"type":"string","description":"unlock, listing, futures_listing, delisting, hack, raise, vote, upgrade, halving, burn, funding_low, funding_high, or one measured on Bitcoin: fomc, cpi, jobs, ppi, pce, gdp, retail, opex (options expiry), mint (big stablecoin print)"},"token":{"type":["string","null"],"description":"The coin's id (its page and file names use it)."},"symbol":{"type":["string","null"]},"name":{"type":["string","null"]},"title":{"type":"string"},"venue":{"type":["string","null"],"description":"The exchange, for listings and delistings."},"page":{"type":["string","null"],"format":"uri"},"amount":{"type":"number","description":"Unlocks: tokens released that day."},"pct_circulating":{"type":"number","description":"Unlocks: percent of the circulating supply."},"value_usd":{"type":"integer","description":"Unlocks: the amount at today's price."},"categories":{"type":"array","items":{"type":"string"},"description":"Unlocks: whose tokens (team, investors, ...)."},"basis":{"type":"array","items":{"type":"string"},"description":"Unlocks: how each part is known."},"past_events_like_it":{"type":"object","properties":{"pattern":{"type":["string","null"]},"horizons":{"type":"object","properties":{"1d":{"$ref":"#/components/schemas/Odds"},"7d":{"$ref":"#/components/schemas/Odds"},"30d":{"$ref":"#/components/schemas/Odds"},"90d":{"$ref":"#/components/schemas/Odds"}},"description":"Per horizon measured (1d, 7d, 30d, 90d): what followed the past cases."},"page":{"type":["string","null"],"format":"uri"}}}},"required":["date","kind","title"]}}}}]}}}}}}},"/unlocks.json":{"get":{"operationId":"unlocks","summary":"Token unlocks in the next 180 days, one row per coin and day","description":"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.","responses":{"200":{"description":"The file.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/Envelope"},{"type":"object","properties":{"data":{"type":"array","items":{"type":"object","properties":{"date":{"type":"string","format":"date"},"token":{"type":"string"},"symbol":{"type":"string"},"name":{"type":"string"},"amount":{"type":"number","description":"Tokens released that day."},"pct_circulating":{"type":"number","description":"Percent of the circulating supply."},"pct_total":{"type":"number","description":"Percent of the total supply."},"value_usd":{"type":"integer","description":"The amount at today's price."},"categories":{"type":"array","items":{"type":"string"}},"types":{"type":"array","items":{"type":"string"},"description":"cliff or linear"},"basis":{"type":"array","items":{"type":"string"},"description":"How each part is known."},"file":{"type":"string","format":"uri","description":"The coin's whole schedule."}},"required":["date","token","amount","basis"]}}}}]}}}}}}},"/unlocks/{slug}.json":{"get":{"operationId":"unlock","summary":"One coin's whole unlock schedule, past and future, row by row, with its sources (every coin listed with an unlocks file in tokens","description":"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).","responses":{"200":{"description":"The file.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/Envelope"},{"type":"object","properties":{"data":{"type":"object","properties":{"token":{"type":"string"},"symbol":{"type":"string"},"name":{"type":"string"},"page":{"type":"string","format":"uri"},"basis":{"type":"array","items":{"type":"string"}},"sources":{"type":"array","items":{"type":"object","properties":{"title":{"type":["string","null"]},"url":{"type":["string","null"]}}},"description":"The project documents a schedule comes from."},"next_unlock":{"type":["object","null"],"properties":{"date":{"type":"string","format":"date"},"amount":{"type":"number"},"pct_circulating":{"type":"number"}},"description":"null when none is left."},"schedule":{"type":"array","items":{"type":"object","properties":{"date":{"type":"string","format":"date"},"amount":{"type":["number","null"]},"pct_circulating":{"type":["number","null"]},"pct_total":{"type":["number","null"]},"category":{"type":["string","null"]},"type":{"type":["string","null"]},"basis":{"type":"string"},"note":{"type":["string","null"]}}}},"allocations":{"type":"array","items":{"type":"object","properties":{"category":{"type":"string"},"pct":{"type":["number","null"]},"amount":{"type":["number","null"]}}}}},"required":["token","schedule"]}}}]}}}},"404":{"description":"No schedule for this coin."}},"parameters":[{"name":"slug","in":"path","required":true,"schema":{"type":"string"},"description":"The coin's id, as tokens.json lists it (its unlocks field)."}]}},"/predictions.json":{"get":{"operationId":"predictions","summary":"Every current prediction","description":"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.","responses":{"200":{"description":"The file.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/Envelope"},{"type":"object","properties":{"data":{"type":"object","properties":{"date":{"type":["string","null"],"format":"date","description":"The day the predictions were made."},"disclaimer":{"type":"string"},"predictions":{"type":"array","items":{"type":"object","properties":{"token":{"type":"string"},"slug":{"type":"string"},"symbol":{"type":"string"},"date":{"type":"string","format":"date"},"horizon":{"type":"string","description":"1d, 7d or 30d"},"p_up":{"type":["number","null"],"description":"The chance the price is higher at the horizon (0-1)."},"p_lo":{"type":["number","null"]},"p_hi":{"type":["number","null"]},"strength":{"type":["string","null"]},"typical":{"type":["number","null"],"description":"The median move of the past cases."},"p10":{"type":["number","null"]},"p90":{"type":["number","null"]},"n":{"type":["integer","null"],"description":"Past cases behind it."},"price_now":{"type":["number","null"],"description":"The price it was made at."}}}},"calibration":{"type":"object","additionalProperties":{"type":"object","properties":{"n":{"type":["number","null"]},"hit_rate":{"type":["number","null"]},"n_calls":{"type":["number","null"]},"brier":{"type":["number","null"]},"brier_base":{"type":["number","null"]},"cov50":{"type":["number","null"]},"cov80":{"type":["number","null"]}}},"description":"Per horizon: how past calls did (hit rate, Brier score against the base rate, range coverage)."}}}}}]}}}}}}},"/patterns.json":{"get":{"operationId":"patterns","summary":"Every pattern we count","description":"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.","responses":{"200":{"description":"The file.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/Envelope"},{"type":"object","properties":{"data":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"kind":{"type":"string"},"name":{"type":"string"},"conditions":{"type":"object","description":"What an event must be to count."},"n":{"type":["integer","null"]},"n_measured":{"type":["integer","null"]},"horizons":{"type":"object","properties":{"1d":{"$ref":"#/components/schemas/Odds"},"7d":{"$ref":"#/components/schemas/Odds"},"30d":{"$ref":"#/components/schemas/Odds"},"90d":{"$ref":"#/components/schemas/Odds"}},"description":"Per horizon measured (1d, 7d, 30d, 90d): what followed the past cases."},"best_30d":{"type":["number","null"]},"worst_30d":{"type":["number","null"]},"median_vs_btc_30d":{"type":["number","null"]},"newer_cases":{"type":["string","null"],"description":"Whether the edge held on cases newer than the ones it was found on."},"page":{"type":"string","format":"uri"}},"required":["id","kind","horizons"]}}}}]}}}}}}},"/effects.json":{"get":{"operationId":"effects","summary":"Every event of the last 365 days and the price move after it","description":"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.","responses":{"200":{"description":"The file.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/Envelope"},{"type":"object","properties":{"data":{"type":"array","items":{"type":"object","properties":{"date":{"type":"string","format":"date"},"kind":{"type":"string"},"token":{"type":["string","null"]},"symbol":{"type":["string","null"]},"venue":{"type":["string","null"]},"title":{"type":["string","null"]},"pct":{"type":["number","null"]},"move":{"type":"object","properties":{"1d":{"type":["number","null"]},"7d":{"type":["number","null"]},"30d":{"type":["number","null"]},"90d":{"type":["number","null"]}},"description":"The price move after the event (0.042 is 4.2%)."},"vs_btc_30d":{"type":["number","null"],"description":"The 30-day move minus Bitcoin's."}},"required":["date","kind","move"]}}}}]}}}}}}},"/tokens.json":{"get":{"operationId":"tokens","summary":"Every coin on the site","description":"Every coin on the site: name, ticker, rank, chain and contract, its page, and which files cover it.","responses":{"200":{"description":"The file.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/Envelope"},{"type":"object","properties":{"data":{"type":"array","items":{"type":"object","properties":{"token":{"type":"string"},"symbol":{"type":"string"},"name":{"type":"string"},"rank":{"type":["integer","null"]},"chain":{"type":["string","null"]},"contract":{"type":["string","null"]},"category":{"type":["string","null"]},"page":{"type":"string","format":"uri"},"unlocks":{"type":["string","null"],"format":"uri","description":"Its unlocks file, when it has a schedule."},"predicted":{"type":"boolean","description":"Whether it has a current prediction."}},"required":["token","symbol","page"]}}}}]}}}}}}}},"components":{"schemas":{"Envelope":{"type":"object","properties":{"api":{"type":"string"},"version":{"type":"integer"},"file":{"type":"string"},"as_of":{"type":"string","format":"date","description":"The date the data is about."},"rebuilt":{"type":"string","description":"When the file was made."},"attribution":{"type":"object","properties":{"text":{"type":"string"},"url":{"type":"string","format":"uri"},"required":{"type":"string"}},"description":"The one rule: show it."},"license":{"type":"object","properties":{"name":{"type":"string"},"url":{"type":"string","format":"uri"}}},"docs":{"type":"string","format":"uri"},"count":{"type":"integer","description":"How many rows data holds."}},"required":["version","file","as_of","attribution","license","data"]},"Odds":{"type":"object","properties":{"higher":{"type":"number","description":"How often the price was higher (0-1)."},"ci90":{"type":"array","items":{"type":["number","null"]},"description":"90% interval of that share."},"median_move":{"type":["number","null"]},"n":{"type":["integer","null"],"description":"Past cases measured."}}}}}}