Events
Read curated, scored crypto events. Filter by coin, category, date range, or impact. Every event has an editorial title, date, linked coins, and (on Pro+) source proof and an impact score.
◆ Endpoints
GET
/v2/eventsList events
Returns a paginated list of upcoming events. Default sort is date asc (soonest first). The coins, categories, and date filters compose with AND.
◆ Parameters
| Field | In | Type | Required | Description |
|---|---|---|---|---|
| coins | query | string | no | Comma-separated coin **slugs** (e.g. `bitcoin,ethereum`). Tickers are accepted but **strongly discouraged**; symbols collide across coins (e.g. `UNI` resolves to several different projects). Use `GET /v2/coins` to look up canonical slugs. |
| categories | query | string | no | Comma-separated category ids. Case-insensitive. Use `GET /v2/categories` to look up the canonical id list. |
| from | query | iso8601 | no | Inclusive lower bound on `date`. Default = today. |
| to | query | iso8601 | no | Inclusive upper bound on `date`. Default = today + tier upcoming window (e.g. 7 days on Free, 90 days on Standard, full on Pro+). |
| impactMin | query | number | no | Lower bound on impact score (0.0–10.0). Pro+ only; ignored on Standard. |
| sortBy | query | string | no | Sort order. Default `date_asc` (soonest first).Default date_asc·Enum: date_asc · date_desc · created_desc · created_desc_and_updated_desc · impact_desc |
| limit | query | integer | no | Page size (1–100).Default 20 |
| cursor | query | string | no | Opaque pagination cursor returned in the previous response's `meta.cursor`. |
◆ Response item
| Field | Type | Description |
|---|---|---|
| id | string | Stable event identifier. |
| slug | string | URL-safe slug used on the public site. |
| title | string | Editorial title: neutral, factual, no marketing copy. |
| description | string | One-paragraph summary of what the event is and what's at stake. |
| date | iso8601 | Event start date in ISO-8601. **Do NOT render this directly when `isEstimated` is true** (see below). Use it for sorting / filtering / machine logic. |
| dateEnd | iso8601 | Range end date. Empty string on single-day events. Non-empty marks this as a multi-day window. |
| dateType | string | One of `date` · `month` · `quarter`. Indicates how the date was sourced. Range events use `date` with a non-empty `dateEnd`. Drives display reconstruction when `isEstimated` is true. |
| isEstimated | boolean | **True when the date is a hedge or a window-end.** `month` / `quarter` events auto-imply true; for `date` it depends on the source's wording (e.g. "around 15 May", "expected by Q2"). When true, treat `date` as imprecise and use `displayedDate` to render to users. |
| displayedDate | string | Pre-formatted human-readable date string (e.g. `Q2 2026`, `By 30 May`, `Aug 2026`, `01 Jun → 03 Jun`). Use this on user-facing UI; fall back to constructing your own from `dateType` + `date` + `dateEnd` + `isEstimated` only if you need a different format. |
| categories | string[] | Editorial categories from the canonical taxonomy (e.g. `Release`, `Regulation`, `Fork/Swap`). |
| coins | array<CoinRef> | Coins linked to this event. |
| impact | number | Editorial impact score, 0.0–10.0. `null` on Standard. Tiered (Low/Mid/High/Critical) on Pro. Precise on Elite+. |
| impactSummary | string | One-sentence editorial summary for the impact score (Pro+). |
| sourceUrl | string | URL of the original announcement (Pro+). |
| snapshotUrl | string | Screenshot proof of the source at the time of curation (Pro+). |
| lastVerifiedAt | iso8601 | When editorial last re-verified this event (Pro+). |
| createdAt | iso8601 | When the event was first added to the catalog. |
| updatedAt | iso8601 | When the event was last modified. |
◆ CoinRef
| Field | Type | Description |
|---|---|---|
| slug | string | Stable coin identifier. URL-safe; never changes. |
| symbol | string | Trading ticker (e.g. `BTC`). Uppercase, may collide across coins. |
| name | string | Display name (e.g. `Bitcoin`). |
◆ PaginationMeta
| Field | Type | Description |
|---|---|---|
| total | integer | Total number of records matching the filters. |
| limit | integer | Page size that was applied. |
| cursor | string | Opaque cursor; pass to the next request as `cursor` to fetch the next page. Null on the last page. |
◆ List wrapper
| Field | Type | Description |
|---|---|---|
| data | array<Event> | Page of events. |
| meta | object<PaginationMeta> | Pagination metadata. |
◆ Request
curl -X GET "https://api.coinmarketcal.com/v2/events?impactMin=7.5" \ -H "Authorization: Bearer $COINMARKETCAL_API_KEY" \ -H "Accept: application/json"
◆ Try it
Preview mode. Sample response only — no live API request.
Loading your keys…
Preview · no API quota used.
GET
/v2/events/{id}Fetch a single event
Returns the full event payload by id. Tier-gated fields (impact score, source proof) follow the caller's plan.
◆ Parameters
| Field | In | Type | Required | Description |
|---|---|---|---|---|
| id | path | string | yes | The event id, as returned by `GET /v2/events`. |
◆ Response
| Field | Type | Description |
|---|---|---|
| id | string | Stable event identifier. |
| slug | string | URL-safe slug used on the public site. |
| title | string | Editorial title: neutral, factual, no marketing copy. |
| description | string | One-paragraph summary of what the event is and what's at stake. |
| date | iso8601 | Event start date in ISO-8601. **Do NOT render this directly when `isEstimated` is true** (see below). Use it for sorting / filtering / machine logic. |
| dateEnd | iso8601 | Range end date. Empty string on single-day events. Non-empty marks this as a multi-day window. |
| dateType | string | One of `date` · `month` · `quarter`. Indicates how the date was sourced. Range events use `date` with a non-empty `dateEnd`. Drives display reconstruction when `isEstimated` is true. |
| isEstimated | boolean | **True when the date is a hedge or a window-end.** `month` / `quarter` events auto-imply true; for `date` it depends on the source's wording (e.g. "around 15 May", "expected by Q2"). When true, treat `date` as imprecise and use `displayedDate` to render to users. |
| displayedDate | string | Pre-formatted human-readable date string (e.g. `Q2 2026`, `By 30 May`, `Aug 2026`, `01 Jun → 03 Jun`). Use this on user-facing UI; fall back to constructing your own from `dateType` + `date` + `dateEnd` + `isEstimated` only if you need a different format. |
| categories | string[] | Editorial categories from the canonical taxonomy (e.g. `Release`, `Regulation`, `Fork/Swap`). |
| coins | array<CoinRef> | Coins linked to this event. |
| impact | number | Editorial impact score, 0.0–10.0. `null` on Standard. Tiered (Low/Mid/High/Critical) on Pro. Precise on Elite+. |
| impactSummary | string | One-sentence editorial summary for the impact score (Pro+). |
| sourceUrl | string | URL of the original announcement (Pro+). |
| snapshotUrl | string | Screenshot proof of the source at the time of curation (Pro+). |
| lastVerifiedAt | iso8601 | When editorial last re-verified this event (Pro+). |
| createdAt | iso8601 | When the event was first added to the catalog. |
| updatedAt | iso8601 | When the event was last modified. |
◆ CoinRef
| Field | Type | Description |
|---|---|---|
| slug | string | Stable coin identifier. URL-safe; never changes. |
| symbol | string | Trading ticker (e.g. `BTC`). Uppercase, may collide across coins. |
| name | string | Display name (e.g. `Bitcoin`). |
◆ Request
curl -X GET "https://api.coinmarketcal.com/v2/events/{id}" \ -H "Authorization: Bearer $COINMARKETCAL_API_KEY" \ -H "Accept: application/json"
◆ Try it
Preview mode. Sample response only — no live API request.
Loading your keys…
Preview · no API quota used.