openapi: 3.0.2
info:
title: Coin Metrics API v4 Blockchain Explorer Job API
description: '[Coin Metrics Homepage](https://coinmetrics.io/)
[API Backward Compatibility Policy](https://docs.coinmetrics.io/access-our-data/api#backward-compatibility)
[Python API Client](https://coinmetrics.github.io/api-client-python/site/index.html)
HTTP API root endpoint URL is `https://api.coinmetrics.io/v4`. Coin Metrics' paid product.
WebSocket API root endpoint is `wss://api.coinmetrics.io/v4`. Coin Metrics' paid product.
The Community HTTP API root endpoint URL is `https://community-api.coinmetrics.io/v4`. API key is not required when accessing community endpoints. Available to the community under the [Creative Commons](https://creativecommons.org/licenses/by-nc/4.0/) license.
# Authentication
# Response headers
Note that Coin Metrics API responses have a `CF-RAY` HTTP header e.g. `88a6ec1d2f930774-IAD` which can be used for diagnostic purposes. When raising Support requests, please ensure to provide the value of this header. '
termsOfService: https://coinmetrics.io/api/terms
contact:
name: Coin Metrics Support
url: https://coinmetrics.io/support/
email: support@coinmetrics.io
license:
name: Apache 2.0
url: https://www.apache.org/licenses/LICENSE-2.0.html
version: 4.0.0
servers:
- url: https://api.coinmetrics.io/v4
- url: wss://api.coinmetrics.io/v4
- url: https://community-api.coinmetrics.io/v4
tags:
- name: Blockchain Explorer Job
description: Endpoints for creating async jobs for blockchain entities.
paths:
/blockchain-job/account-balances:
servers:
- url: https://api.coinmetrics.io/v4
put:
summary: Account balances
description: Creates asynchronous job for retrieving account balances data.
Use the [/jobs](#operation/getJobById) endpoint to poll job's status. The result file when downloaded will contain a newline-delimited JSON stream of [BlockchainJobAccountBalance](#schema/BlockchainJobAccountBalance) objects.
operationId: putBlockchainJobAccountBalances
tags:
- Blockchain Explorer Job
requestBody:
content:
application/x-www-form-urlencoded:
schema:
$ref: '#/components/schemas/BlockchainJobAccountBalancesRequest'
x-codeSamples:
- label: Shell
source: "curl -X PUT --compressed \"https://api.coinmetrics.io/v4/blockchain-job/account-balances?api_key=\" \\\n --header \"Content-Type: application/x-www-form-urlencoded\" \\\n --data-urlencode \"assets=sol\" \\\n --data-urlencode \"accounts=account1,account2\" \\\n --data-urlencode \"at_time=2024-07-04T00:00:00.000000000Z\"\n"
- label: Python
source: "import requests\ndata = {\n \"assets\": \"sol\",\n \"accounts\": \"account1,account2\",\n \"at_time\": \"2024-07-04T00:00:00.000000000Z\"\n}\nresponse = requests.put('https://api.coinmetrics.io/v4/blockchain-job/account-balances?api_key=',data=data).json()\nprint(response)\n"
responses:
'200':
$ref: '#/components/responses/CreatedJobDetails'
'401':
$ref: '#/components/responses/Unauthorized'
'403':
$ref: '#/components/responses/BlockchainForbidden'
security:
- api_key: []
/blockchain-job/balance-updates:
servers:
- url: https://api.coinmetrics.io/v4
put:
summary: Balance updates
description: Creates asynchronous job for retrieving balance updates data. Both `start_*` and `end_*` parameters must be specified (time or height).
Use the [/jobs](#operation/getJobById) endpoint to poll job's status. The result file when downloaded will contain a newline-delimited JSON stream of [BlockchainJobBalanceUpdate](#schema/BlockchainJobBalanceUpdate) objects.
operationId: putBlockchainJobBalanceUpdates
tags:
- Blockchain Explorer Job
requestBody:
content:
application/x-www-form-urlencoded:
schema:
$ref: '#/components/schemas/BlockchainJobBalanceUpdatesRequest'
x-codeSamples:
- label: Shell
source: "curl -X PUT --compressed \"https://api.coinmetrics.io/v4/blockchain-job/balance-updates?api_key=\" \\\n --header \"Content-Type: application/x-www-form-urlencoded\" \\\n --data-urlencode \"assets=sol\" \\\n --data-urlencode \"accounts=account1,account2\" \\\n --data-urlencode \"start_time=2023-07-04T00:00:00.000000000Z\" \\\n --data-urlencode \"end_time=2024-07-04T00:00:00.000000000Z\"\n"
- label: Python
source: "import requests\ndata = {\n \"assets\": \"sol\",\n \"accounts\": \"account1,account2\",\n \"start_time\": \"2023-07-04T00:00:00.000000000Z\",\n \"end_time\": \"2024-07-04T00:00:00.000000000Z\"\n}\nresponse = requests.put('https://api.coinmetrics.io/v4/blockchain-job/balance-updates?api_key=',data=data).json()\nprint(response)\n"
responses:
'200':
$ref: '#/components/responses/CreatedJobDetails'
'401':
$ref: '#/components/responses/Unauthorized'
'403':
$ref: '#/components/responses/BlockchainForbidden'
security:
- api_key: []
/blockchain-job/transactions:
servers:
- url: https://api.coinmetrics.io/v4
put:
summary: Transactions
description: Creates asynchronous job for retrieving transactions data.
Use the [/jobs](#operation/getJobById) endpoint to poll job's status. The result file when downloaded will contain a newline-delimited JSON stream of [BlockchainJobTransactionInfo](#schema/BlockchainJobTransactionInfo) objects.
operationId: putBlockchainJobTransactions
tags:
- Blockchain Explorer Job
requestBody:
content:
application/x-www-form-urlencoded:
schema:
$ref: '#/components/schemas/BlockchainJobTransactionsRequest'
x-codeSamples:
- label: Shell
source: "curl -X PUT --compressed \"https://api.coinmetrics.io/v4/blockchain-job/transactions?api_key=\" \\\n --header \"Content-Type: application/x-www-form-urlencoded\" \\\n --data-urlencode \"assets=sol\" \\\n --data-urlencode \"txids=txid1,txid2\"\n"
- label: Python
source: "import requests\ndata = {\n \"assets\": \"sol\",\n \"txids\": \"txid1,txid2\"\n}\nresponse = requests.put('https://api.coinmetrics.io/v4/blockchain-job/transactions?api_key=',data=data).json()\nprint(response)\n"
responses:
'200':
$ref: '#/components/responses/CreatedJobDetails'
'401':
$ref: '#/components/responses/Unauthorized'
'403':
$ref: '#/components/responses/BlockchainForbidden'
security:
- api_key: []
components:
schemas:
BlockchainTransactionId:
description: Identifier (txid) of the transaction.
type: string
BlockchainJobStartSlot:
description: The start slot indicates the beginning slot for the set of data that are returned.
Inclusive by default. Mutually exclusive with `start_time`/`end_time` and `start_height`/`end_height`.
When specified, `end_slot` parameter is mandatory.
Not compatible with requests containing more than one asset.
type: integer
format: int64
BlockchainJobBalanceUpdatesRequest:
properties:
assets:
$ref: '#/components/schemas/BlockchainJobAssets'
accounts:
$ref: '#/components/schemas/BlockchainJobAccounts'
start_time:
$ref: '#/components/schemas/BlockchainJobStartTime'
end_time:
$ref: '#/components/schemas/BlockchainJobEndTime'
start_height:
$ref: '#/components/schemas/BlockchainJobStartHeight'
end_height:
$ref: '#/components/schemas/BlockchainJobEndHeight'
start_slot:
$ref: '#/components/schemas/BlockchainJobStartSlot'
end_slot:
$ref: '#/components/schemas/BlockchainJobEndSlot'
required:
- assets
- accounts
BlockchainJobAccountBalancesRequest:
properties:
assets:
$ref: '#/components/schemas/BlockchainJobAssets'
accounts:
$ref: '#/components/schemas/BlockchainJobAccounts'
at_time:
$ref: '#/components/schemas/BlockchainJobAtTime'
at_slot:
$ref: '#/components/schemas/BlockchainJobAtSlot'
at_height:
$ref: '#/components/schemas/BlockchainJobAtHeight'
required:
- assets
- accounts
BlockchainJobStartTime:
description: 'Start of the time interval.
Multiple formats of ISO 8601 are supported: `2006-01-20T00:00:00Z`, `2006-01-20T00:00:00.000Z`, `2006-01-20T00:00:00.123456Z`, `2006-01-20T00:00:00.123456789Z`, `2006-01-20`, `20060120`.
Inclusive by default. Mutually exclusive with `start_height`/`end_height` and `start_slot`/`end_slot`.
When specified, `end_time` parameter is mandatory.
UTC timezone by default. `Z` suffix is optional.'
type: string
format: date-time
BlockchainJobStartHeight:
description: The start height indicates the beginning block height for the set of data that are returned.
Inclusive by default. Mutually exclusive with `start_time`/`end_time` and `start_slot`/`end_slot`.
When specified, `end_height` parameter is mandatory.
Not compatible with requests containing more than one asset.
type: integer
format: int64
BlockchainJobEndSlot:
description: The end slot indicates the ending slot for the set of data that are returned.
Inclusive by default. Mutually exclusive with `start_time`/`end_time` and `start_height`/`end_height`.
When specified, `start_slot` parameter is mandatory.
Not compatible with requests containing more than one asset.
type: integer
format: int64
BlockchainJobAccounts:
description: Account ids. For ETH_CL, this can either be a validator public key or a validator index.
type: array
items:
$ref: '#/components/schemas/BlockchainJobAccount'
ErrorResponse:
properties:
error:
$ref: '#/components/schemas/ErrorObject'
required:
- error
type: object
BlockchainJobAtTime:
description: 'Indicates the point in time for which the set of account balances will be returned.
Multiple formats of ISO 8601 are supported: `2006-01-20T00:00:00Z`, `2006-01-20T00:00:00.000Z`, `2006-01-20T00:00:00.123456Z`, `2006-01-20T00:00:00.123456789Z`, `2006-01-20`, `20060120`.
UTC timezone by default. `Z` suffix is optional.
Mutually exclusive with `at_height` and `at_slot`.
Specifying either `at_time` or `at_height` / `at_slot` parameter is mandatory.
'
type: string
format: date-time
BlockchainJobAtSlot:
description: Indicates the slot for which the set of account balances will be returned.
Mutually exclusive with `at_height` and `at_time`.
Specifying either `at_slot` or `at_height` / `at_time` parameter is mandatory.
Not compatible with requests containing more than one asset.
type: integer
format: int64
BlockchainTransactionIds:
description: Transactions ids.
type: array
items:
$ref: '#/components/schemas/BlockchainTransactionId'
CreatedJobDetailsResponse:
properties:
job_id:
type: string
description: Job ID.
job_url:
type: string
description: Job URL.
required:
- job_id
- job_url
BlockchainJobAssets:
description: Comma separated list of assets, or wildcard (*) for all supported assets.
items:
$ref: '#/components/schemas/AssetId'
BlockchainJobEndHeight:
description: The end height indicates the ending block height for the set of data that are returned.
Inclusive by default. Mutually exclusive with `start_time`/`end_time` and `start_slot`/`end_slot`.
When specified, `start_height` parameter is mandatory.
Not compatible with requests containing more than one asset.
type: integer
format: int64
ErrorObject:
properties:
type:
description: Error type string. Can be used for error identification.
type: string
message:
description: Human-friendly error description. Can be amended without prior notification. Do not use for error identification in your code.
type: string
required:
- type
- description
type: object
AssetId:
description: Unique name of the asset.
type: string
BlockchainJobAtHeight:
description: Indicates the block height for which the set of account balances will be returned.
Mutually exclusive with `at_slot` and `at_time`.
Specifying either `at_height` or `at_slot` / `at_time` parameter is mandatory.
Not compatible with requests containing more than one asset.
type: integer
format: int64
BlockchainJobAccount:
description: Account id. For ETH_CL, this can either be a validator public key or a validator index.
type: string
BlockchainJobTransactionsRequest:
properties:
assets:
$ref: '#/components/schemas/BlockchainJobAssets'
txids:
$ref: '#/components/schemas/BlockchainTransactionIds'
required:
- assets
- txids
BlockchainJobEndTime:
description: 'End of the time interval.
Multiple formats of ISO 8601 are supported: `2006-01-20T00:00:00Z`, `2006-01-20T00:00:00.000Z`, `2006-01-20T00:00:00.123456Z`, `2006-01-20T00:00:00.123456789Z`, `2006-01-20`, `20060120`.
Inclusive by default. Mutually exclusive with `start_height`/`end_height` and `start_slot`/`end_slot`.
When specified, `start_time` parameter is mandatory.
UTC timezone by default. `Z` suffix is optional.'
type: string
format: date-time
responses:
BlockchainForbidden:
content:
application/json:
example:
error:
type: forbidden
message: Requested resource is not available with supplied credentials.
schema:
$ref: '#/components/schemas/ErrorResponse'
description: Requested resource is not available with supplied credentials.
CreatedJobDetails:
description: Details of just created job.
content:
application/json:
example:
job_id: ZjRjZDE2N2EtYzljYy00MjQ5LTk4ZWYtOTlkZDljZTE1ZDU3OjgzNTZkODQyLTA5ODMtNGM2NC1hMGE5LWY5MzBhZTMxODFiZg
job_url: https://api.coinmetrics.io/v4/jobs?api_key=&ids=ZjRjZDE2N2EtYzljYy00MjQ5LTk4ZWYtOTlkZDljZTE1ZDU3OjgzNTZkODQyLTA5ODMtNGM2NC1hMGE5LWY5MzBhZTMxODFiZg
schema:
$ref: '#/components/schemas/CreatedJobDetailsResponse'
Unauthorized:
description: Requested resource requires authorization.
content:
application/json:
examples:
unauthorized:
summary: Unauthorized error response.
value:
error:
type: unauthorized
message: Requested resource requires authorization.
wrong_credentials:
summary: Wrong credentials error response.
value:
error:
type: wrong_credentials
message: Supplied credentials are not valid.
schema:
$ref: '#/components/schemas/ErrorResponse'
securitySchemes:
api_key:
description: Coin Metrics API key can be specified as `?api_key=` query parameter.
in: query
name: api_key
type: apiKey
x-tagGroups:
- name: General
tags:
- Rate limits
- name: Reference Data
tags:
- Reference Data
- Profile
- Taxonomy
- Taxonomy Metadata
- name: Catalog
tags:
- Catalog
- Full catalog
- Catalog v2
- Full catalog v2
- name: Timeseries
tags:
- Timeseries
- Timeseries stream
- name: Universal blockchain explorer
tags:
- List of blockchain entities v2
- Full blockchain entities v2
- Blockchain Explorer Job
- Blockchain Explorer Job Results
- name: Tools
tags:
- Chain Monitor tools
- name: Security Master
tags:
- Security Master
- name: Constituents
tags:
- Constituent Snapshots
- Constituent Timeframes
- name: Blockchain Metadata
tags:
- Blockchain Metadata
- name: Jobs
tags:
- Jobs