Advertisement
We understand ads are no fun, but they are what makes Gridcoinstats possible.
No ad to show here right now. We understand ads are no fun, but they are what makes Gridcoinstats possible.
The ads are blocked in your browser. We understand ads are no fun, but they are what makes Gridcoinstats possible.
Advertisement
We understand ads are no fun, but they are what makes Gridcoinstats possible.
No ad to show here right now. We understand ads are no fun, but they are what makes Gridcoinstats possible.
The ads are blocked in your browser. We understand ads are no fun, but they are what makes Gridcoinstats possible.
Gridcoinstats API
read-onlyPublic, read-only statistics of the Gridcoin chain, from the cache database of Gridcoinstats. It never calls the wallet, so it keeps answering when the wallet is down. For live wallet data there is the wallet API (/wallet/v3). Answers are JSON:API documents (application/vnd.api+json). Amounts are decimal strings with 8 decimals (GRC); times are Unix seconds with an _iso twin (UTC); a value the cache does not have is null, never 0. The API has feeds and snapshots, with a hard cap: there is no lookup of a single older block or transaction by id, and no paged list of a whole table. The path's v4 is the generation of the cache database it is built for.
It is for what a page needs to follow the chain as it moves, and for sites that list coins: a live feed of the newest blocks and transactions, the pool, the network figures, the coin supply and how current the data is. For what only the wallet knows there is the wallet API.
curl -s https://api.gridcoinstats.eu/gridcoinstats/v4/mainnet/status
Conventions
Answers are JSON:API documents (application/vnd.api+json). Every answer has jsonapi.version, data, links.self and meta.network (null for the BOINC status) and meta.version; a feed also has meta.indexedHeight, the newest block the figures are from.
Amounts are decimal strings with 8 decimals in GRC ("515348757.64213040"), built from the base units without a float. Times are Unix seconds with an _iso twin in UTC (2026-10-13T07:49:04Z). A value the cache does not have is null, never 0.
Feeds have a hard cap. The blocks, the transactions and the pool give the newest page[size] items (default 25, at most 100) and nothing else: another page, a sort order or a filter the endpoint does not take is a 400, so a client cannot walk the chain through the API.
Caching. Every read sends Cache-Control: public, max-age=N, stale-while-revalidate=M and an ETag; ask again with If-None-Match and an unchanged answer is a 304. Cloudflare keeps the answers for their max-age, which each endpoint below states.
Read only, open to any site. GET, HEAD and OPTIONS are answered; any other method is a 405. CORS is open (Access-Control-Allow-Origin: *), so a page on another site can read it.
Errors and limits
An error is a JSON:API document with an errors list: status, title, detail, and for a wrong query parameter code and source.parameter.
| Status | When |
|---|---|
| 400 | A parameter the endpoint does not take, or a value out of range or of the wrong kind (`page[number]=2` on a feed, `filter[kind]=x`). |
| 405 | Any method but GET, HEAD and OPTIONS: the API only reads. `Allow: GET, HEAD, OPTIONS`. |
| 429 | More than 60 requests a minute from one IP (`Retry-After` says how long to wait). |
| 503 | The cache database cannot be read (the details are in the log, not in the answer), or it is not a v4 database. |
The limit is 60 requests a minute from one IP address, all endpoints together; the answers carry X-RateLimit-Limit, X-RateLimit-Remaining and X-RateLimit-Reset, and a 429 has Retry-After. Only the requests that reach our server count: Cloudflare keeps an answer for its max-age. Poll no faster than the max-age of the endpoint.
Description
What the API is and links to its parts. No database.
GET /gridcoinstats/v4
The API. The description of the API with links to the networks and to the BOINC status. It does not touch a database and is outside the rate limit. Kept for 1 h.
curl -s "https://api.gridcoinstats.eu/gridcoinstats/v4"
An answer
{
"jsonapi": {
"version": "1.1"
},
"data": {
"type": "api",
"id": "gridcoinstats",
"attributes": {
"name": "Gridcoinstats API",
"version": "4.2.1",
"networks": [
"mainnet",
"testnet"
]
}
},
"links": {
"self": "/gridcoinstats/v4",
"mainnet": "/gridcoinstats/v4/mainnet",
"testnet": "/gridcoinstats/v4/testnet",
"boinc": "/gridcoinstats/v4/boinc"
},
"meta": {
"version": "4.2.1"
}
}
The 5 attributes
| AttributeType | Type | What |
|---|---|---|
| namestring | string | The name of the API. |
| versionstring | string | The API's own version. |
| networksarray | array | The networks the API has: `mainnet` and `testnet`. |
| descriptionstring | string | What the description is of (a network or the BOINC status). |
| networkstring | string | The network of a network description. |
GET /gridcoinstats/v4/{network}
A network. The description of one network, with the link to its status. No database. Kept for 1 h.
| ParameterIn · type | In | Type | What |
|---|---|---|---|
| networkpath, required · string: mainnet, testnet | path, required | string: mainnet, testnet | The network. |
curl -s "https://api.gridcoinstats.eu/gridcoinstats/v4/mainnet"
An answer
{
"jsonapi": {
"version": "1.1"
},
"data": {
"type": "api",
"id": "gridcoinstats",
"attributes": {
"name": "Gridcoinstats API",
"description": "Gridcoin chain statistics from the Gridcoinstats cache database",
"version": "4.2.1",
"network": "mainnet"
}
},
"meta": {
"network": "mainnet",
"version": "4.2.1"
},
"links": {
"self": "/gridcoinstats/v4/mainnet",
"status": "/gridcoinstats/v4/mainnet/status"
}
}
The 5 attributes
| AttributeType | Type | What |
|---|---|---|
| namestring | string | The name of the API. |
| versionstring | string | The API's own version. |
| networksarray | array | The networks the API has: `mainnet` and `testnet`. |
| descriptionstring | string | What the description is of (a network or the BOINC status). |
| networkstring | string | The network of a network description. |
Status
How current the data is.
GET /gridcoinstats/v4/{network}/status
Status and lag. The newest indexed block, the heartbeat of the writer scripts and how far the data is behind the chain. A page asks this and decides from `indexed_height` what else to fetch. Kept for 5 s.
| ParameterIn · type | In | Type | What |
|---|---|---|---|
| networkpath, required · string: mainnet, testnet | path, required | string: mainnet, testnet | The network. |
curl -s "https://api.gridcoinstats.eu/gridcoinstats/v4/mainnet/status"
An answer
{
"jsonapi": {
"version": "1.1"
},
"data": {
"type": "status",
"id": "gridcoinstats",
"attributes": {
"server_time": 1793343759,
"indexed_height": 4122905,
"indexed_block_time": 1793343568,
"indexed_block_time_iso": "2026-10-30T06:59:28Z",
"sync": {
"index": {
"state": "ok",
"height": 4122905,
"updated_time": 1793343735,
"updated_time_iso": "2026-10-30T07:02:15Z"
},
"cache": {
"state": "ok",
"height": 4122905,
"updated_time": 1793343736,
"updated_time_iso": "2026-10-30T07:02:16Z"
},
"mempool": {
"state": "ok",
"height": null,
"updated_time": 1793343756,
"updated_time_iso": "2026-10-30T07:02:36Z"
},
"chain": {
"height": 4122905,
"updated_time": 1793343735,
"updated_time_iso": "2026-10-30T07:02:15Z"
},
"cache_behind_blocks": 0,
"cache_target": 4122905,
"behind_blocks": 0,
"lag_blocks": 0
},
"boinc": {
"state": "ok",
"updated_time": 1793343729,
"updated_time_iso": "2026-10-30T07:02:09Z",
"snapshot_time": 1793342104
},
"health": {
"level": "good",
"words": "everything runs",
"wallet": {
"level": "good",
"height": 4122905,
"block_time": 1793343568,
"block_age": 191,
"asked_age": 24
},
"cache": {
"level": "good",
"height": 4122905,
"late": 0,
"problem": null,
"note": "same block"
},
"boinc": {
"level": "good",
"snapshot_time": 1793342104,
"snapshot_age": 1655,
"problem": null,
"note": null
}
}
}
},
"meta": {
"indexedHeight": 4122905,
"network": "mainnet",
"version": "4.2.1"
},
"links": {
"self": "/gridcoinstats/v4/mainnet/status"
}
}
The 7 attributes
| AttributeType | Type | What |
|---|---|---|
| server_timeinteger | integer | The Unix time at which the answer was made (an answer kept at the edge is up to 15 seconds old, which this shows). |
| indexed_heightinteger or null | integer or null | The newest block the cache has. |
| indexed_block_timeinteger or null | integer or null | Its time, Unix seconds. |
| indexed_block_time_isostring or null | string or null | Its time, UTC, as text. |
| syncobject or null | object or null | What a monitor alerts on: the `index`, `cache` and `mempool` scripts (each `null` until it has reported), and how far behind the chain the data is. |
| boincobject or null | object or null | The BOINC indexer's heartbeat: `state`, `updated_time`, `updated_time_iso` and `snapshot_time` (the newest user snapshot it consumed). `null` when it has not reported. |
| healthobject | object | How the wallet, the cache index and the BOINC index stand, worked out on the server by one set of limits: `level` (`good`, `notice` or `warning`, the worst of the three), `words`, and for `wallet`, `cache` and `boinc` a `level` and what it is at. |
Chain
Feeds and figures of the chain, for one network.
GET /gridcoinstats/v4/{network}/network
The network figures. The figures of the front page's status row from the newest block. All null while the cache is empty. Kept for 30 s.
| ParameterIn · type | In | Type | What |
|---|---|---|---|
| networkpath, required · string: mainnet, testnet | path, required | string: mainnet, testnet | The network. |
curl -s "https://api.gridcoinstats.eu/gridcoinstats/v4/mainnet/network"
An answer
{
"jsonapi": {
"version": "1.1"
},
"data": {
"type": "network",
"id": "current",
"attributes": {
"height": 4122905,
"time": 1793343568,
"time_iso": "2026-10-30T06:59:28Z",
"difficulty": "13.636711672718",
"coin_supply": "542067145.65583341",
"blocks_24h": 889,
"stakers_24h": 411,
"researchers_24h": 183,
"superblock_height": 4122152,
"superblock_time": 1793270064,
"superblock_time_iso": "2026-10-29T10:34:24Z"
}
},
"meta": {
"indexedHeight": 4122905,
"network": "mainnet",
"version": "4.2.1"
},
"links": {
"self": "/gridcoinstats/v4/mainnet/network"
}
}
The 11 attributes
| AttributeType | Type | What |
|---|---|---|
| heightinteger or null | integer or null | The newest block. |
| timeinteger or null | integer or null | Its time, Unix seconds. |
| time_isostring or null | string or null | Its time, UTC, as text. |
| difficultystring or null | string or null | Its difficulty, a decimal string. |
| coin_supplystring or null | string or null | The wallet's money supply at it, GRC. |
| blocks_24hinteger or null | integer or null | The blocks of the 24 hours before the newest block. |
| stakers_24hinteger or null | integer or null | The distinct staker addresses in those 24 hours. |
| researchers_24hinteger or null | integer or null | The distinct CPIDs in those 24 hours. |
| superblock_heightinteger or null | integer or null | The newest superblock; `null` before the first. |
| superblock_timeinteger or null | integer or null | Its time, Unix seconds. |
| superblock_time_isostring or null | string or null | Its time, UTC, as text. |
GET /gridcoinstats/v4/{network}/supply
The coin supply. The coin supply for the sites that list coins: the total supply as the wallet counts it, what is burnt and the circulating supply. All null while the cache is empty. Kept for 30 s.
| ParameterIn · type | In | Type | What |
|---|---|---|---|
| networkpath, required · string: mainnet, testnet | path, required | string: mainnet, testnet | The network. |
curl -s "https://api.gridcoinstats.eu/gridcoinstats/v4/mainnet/supply"
An answer
{
"jsonapi": {
"version": "1.1"
},
"data": {
"type": "supply",
"id": "current",
"attributes": {
"height": 4122905,
"time": 1793343568,
"time_iso": "2026-10-30T06:59:28Z",
"total_supply": "542067145.65583341",
"burnt_supply": "35263.82439756",
"circulating_supply": "542031881.83143585"
}
},
"meta": {
"indexedHeight": 4122905,
"network": "mainnet",
"version": "4.2.1"
},
"links": {
"self": "/gridcoinstats/v4/mainnet/supply"
}
}
The 6 attributes
| AttributeType | Type | What |
|---|---|---|
| heightinteger or null | integer or null | The newest block. |
| timeinteger or null | integer or null | Its time, Unix seconds. |
| time_isostring or null | string or null | Its time, UTC, as text. |
| total_supplystring or null | string or null | The wallet's money supply at that block, GRC. The wallet counts the value of its unspendable outputs in it, `OP_RETURN` (burn) outputs included. |
| burnt_supplystring or null | string or null | The value of every `OP_RETURN` output so far, GRC (none of them is ever spent). |
| circulating_supplystring or null | string or null | `total_supply` less `burnt_supply`, GRC. Gridcoin has no premine and nothing locked, so the burnt coins are the only ones out of circulation. There is no maximum supply. |
GET /gridcoinstats/v4/{network}/blocks
The latest blocks. The latest blocks, newest first: a live feed, one query on the primary key. There is no way to read one older block by its height or hash. Kept for 5 s.
| ParameterIn · type | In | Type | What |
|---|---|---|---|
| networkpath, required · string: mainnet, testnet | path, required | string: mainnet, testnet | The network. |
| page[size]query · integer (default 25) | query | integer (default 25) | How many items, the newest first. At most 100. A feed has no other page: `page[number]` above 1, a sort order or a filter it does not take is a 400. |
curl -sg "https://api.gridcoinstats.eu/gridcoinstats/v4/mainnet/blocks?page[size]=5"
An answer
{
"jsonapi": {
"version": "1.1"
},
"data": [
{
"type": "block",
"id": "4122905",
"attributes": {
"height": 4122905,
"hash": "f200a37af392724d7394f5c2b9f2496b71631c5f1d05e31454beecb0d08ce486",
"time": 1793343568,
"time_iso": "2026-10-30T06:59:28Z",
"version": 14,
"size": 538,
"difficulty": "13.636711672718",
"mint_type": "MINT_POS_RR",
"is_superblock": false,
"superblock_version": null,
"magnitude": 1280,
"tx_count": 2,
"output_address_count": 1,
"coin_supply": "542067145.65583341",
"volume_output": "3258.12937539",
"volume_transfer": "0.00000000",
"volume_fee": "0.00000000",
"volume_mint_por": "6.35093333",
"volume_mint_block": "82.64466526",
"staker_address": "SKCqWjfAygVvATpQudwB9DhQpeoR5L7GyC",
"staker_cpid": "bc0621a4ac4610ffa400a0d298c02e23"
}
}
],
"meta": {
"indexedHeight": 4122905,
"network": "mainnet",
"version": "4.2.1"
},
"links": {
"self": "/gridcoinstats/v4/mainnet/blocks"
}
}
The 21 attributes
| AttributeType | Type | What |
|---|---|---|
| heightinteger | integer | The height of the block. |
| hashstring | string | The hash of the block, 64 hex characters. |
| timeinteger | integer | The time of the block, Unix seconds. |
| time_isostring | string | The time of the block, UTC, as text. |
| versioninteger | integer | The block's version. |
| sizeinteger | integer | The size of the block in bytes. |
| difficultystring | string | The block's difficulty, a decimal string (the wallet's number as its shortest plain decimal). |
| mint_typestring | string | What the block minted: `MINT_POS_RR` (a stake with a research reward), `MINT_POS` (a stake without one), `MINT_POW`, `MINT_GEN` or `COINBASE`. |
| is_superblockboolean | boolean | Whether the block is a superblock. The old superblocks are counted too: those before block 1,034,768 (testnet 196,562), which the wallet's own `getblock` does not flag, are read from the block's claim (from 4.1.0). |
| superblock_versioninteger or null | integer or null | The superblock's version: 1 the legacy form packed in the claim string, 2 and 3 the later formats; null for a block that is not a superblock, or a superblock whose version the cache does not have (from 4.1.0). |
| magnitudeinteger or null | integer or null | The claim's magnitude. |
| tx_countinteger | integer | The transactions in the block. |
| output_address_countinteger | integer | The distinct addresses the block's transactions pay. |
| coin_supplystring | string | The wallet's money supply at the block, GRC (the wallet counts its unspendable outputs in it). |
| volume_outputstring | string | Everything the block's transactions pay out, coins staked back included, GRC. |
| volume_transferstring | string | What was sent as transfers, GRC. |
| volume_feestring | string | The fees, GRC. |
| volume_mint_porstring | string | The research reward, GRC (0 for a block without one). |
| volume_mint_blockstring | string | Everything the block minted, the research reward included, GRC. |
| staker_addressstring or null | string or null | The address that staked the block. |
| staker_cpidstring or null | string or null | The CPID of the claim, 32 hex characters. |
GET /gridcoinstats/v4/{network}/transactions
The latest transactions. The latest transactions, newest first: a live feed like the blocks. There is no way to read one transaction by its id. Kept for 30 s.
| ParameterIn · type | In | Type | What |
|---|---|---|---|
| networkpath, required · string: mainnet, testnet | path, required | string: mainnet, testnet | The network. |
| page[size]query · integer (default 25) | query | integer (default 25) | How many items, the newest first. At most 100. A feed has no other page: `page[number]` above 1, a sort order or a filter it does not take is a 400. |
| filter[kind]query · string: transfer, contract | query | string: transfer, contract | Only `transfer` or `contract` transactions. |
curl -sg "https://api.gridcoinstats.eu/gridcoinstats/v4/mainnet/transactions?page[size]=5"
An answer
{
"jsonapi": {
"version": "1.1"
},
"data": [
{
"type": "transaction",
"id": "511353f744d4cde5fb8c832a74623ff3305bb353d16787217e9dcada083be13e",
"attributes": {
"txid": "511353f744d4cde5fb8c832a74623ff3305bb353d16787217e9dcada083be13e",
"height": 4122905,
"time": 1793343568,
"time_iso": "2026-10-30T06:59:28Z",
"tx_type": "MINT_POS_RR",
"input_count": 1,
"output_count": 2,
"input_address_count": 1,
"output_address_count": 1,
"input_volume": "3175.48471013",
"output_volume": "3258.12937539",
"fee_volume": "0.00000000",
"burn_volume": "0.00000000",
"transfer_volume": "0.00000000",
"stake_volume": "3175.48471013",
"coindays_destroyed": "99022.20"
}
}
],
"meta": {
"indexedHeight": 4122905,
"network": "mainnet",
"version": "4.2.1"
},
"links": {
"self": "/gridcoinstats/v4/mainnet/transactions"
}
}
The 16 attributes
| AttributeType | Type | What |
|---|---|---|
| txidstring | string | The transaction id, 40 hex characters. |
| heightinteger | integer | The block the transaction is in. |
| timeinteger | integer | The time of the transaction, Unix seconds. |
| time_isostring | string | The time, UTC, as text. |
| tx_typestring | string | Our classification of the transaction: `MINT_POS`, `MINT_POS_RR`, `TRANSFER`, `MULTISIG`, `BURN`, `CONTRACT_*` and so on (`type` is reserved by JSON:API). |
| input_countinteger | integer | The inputs. |
| output_countinteger | integer | The outputs. |
| input_address_countinteger | integer | The distinct addresses the inputs came from. |
| output_address_countinteger | integer | The distinct addresses the outputs pay. |
| input_volumestring | string | The sum of the inputs, GRC. |
| output_volumestring | string | The sum of the outputs, GRC. |
| fee_volumestring | string | The fee, GRC. |
| burn_volumestring | string | What was burnt, GRC. |
| transfer_volumestring | string | What was sent to other addresses, GRC. |
| stake_volumestring | string | The coins that staked, GRC. |
| coindays_destroyedstring | string | The coin days the transaction destroyed, a decimal string. |
GET /gridcoinstats/v4/{network}/mempool
The transactions waiting for a block. The transactions that wait for a block, newest first (by when our node first saw them), and the pool in figures. Stakes are never in the pool. When the watcher is not running `meta.watch.known` is `false`, `data` is empty and the figures are `null`. Kept for 5 s.
| ParameterIn · type | In | Type | What |
|---|---|---|---|
| networkpath, required · string: mainnet, testnet | path, required | string: mainnet, testnet | The network. |
| page[size]query · integer (default 25) | query | integer (default 25) | How many items, the newest first. At most 100. A feed has no other page: `page[number]` above 1, a sort order or a filter it does not take is a 400. |
curl -sg "https://api.gridcoinstats.eu/gridcoinstats/v4/mainnet/mempool?page[size]=5"
An answer
{
"jsonapi": {
"version": "1.1"
},
"data": [
{
"type": "pool-transaction",
"id": "3a1e5a5dc486f561deb33f53019d085b27c217a41c65ac6d1e4555fbbc2f8898",
"attributes": {
"txid": "3a1e5a5dc486f561deb33f53019d085b27c217a41c65ac6d1e4555fbbc2f8898",
"first_seen": 1793343626,
"first_seen_iso": "2026-10-30T07:00:26Z",
"time": 1793343616,
"time_iso": "2026-10-30T07:00:16Z",
"tx_type": "TRANSFER",
"size": 841,
"input_count": 4,
"output_count": 7,
"output_volume": "36.48016048",
"moved_volume": "36.48016048",
"fee_volume": "0.00100000",
"fee_per_kb": "0.00118906",
"from_address": "SK7WASoXZFQrQLwTmabkS3Co8RUq6UevDU",
"from_more": 3,
"to_address": "SC46xoiGeoYhVnw5YSBTTHMR3kUZNGdSr4",
"to_more": 6
}
}
],
"meta": {
"watch": {
"known": true,
"looked_at": 1793343756,
"looked_at_iso": "2026-10-30T07:02:36Z"
},
"count": 2,
"output_volume": "45.61807205",
"longest_wait": 146,
"usual_wait": 77,
"fee_histogram": {
"unit": "fee per kilobyte, in GRC",
"buckets": [
{
"from": "0.00000000",
"to": "0.00100000",
"count": 0
},
{
"from": "0.00100000",
"to": "0.00200000",
"count": 2
},
{
"from": "0.00200000",
"to": "0.00500000",
"count": 0
},
{
"from": "0.00500000",
"to": "0.01000000",
"count": 0
},
{
"from": "0.01000000",
"to": "0.05000000",
"count": 0
},
{
"from": "0.05000000",
"to": null,
"count": 0
}
],
"unknown": 0
},
"recently_taken": [
{
"txid": "6c0a0731531dedf937c7ffdf118428378b18439521b499898f6bcbe6f20e6c75",
"tx_type": "TRANSFER",
"height": 4122901,
"taken_at": 1793343400,
"taken_at_iso": "2026-10-30T06:56:40Z",
"waited": 30
},
{
"txid": "c7e9fe0ceb8f5aaccc42039cbddef80f745e8ff216c226b1d0225fcc4fad31fc",
"tx_type": "TRANSFER",
"height": 4122898,
"taken_at": 1793343156,
"taken_at_iso": "2026-10-30T06:52:36Z",
"waited": 27
}
],
"network": "mainnet",
"version": "4.2.1"
},
"links": {
"self": "/gridcoinstats/v4/mainnet/mempool"
}
}
The 17 attributes
| AttributeType | Type | What |
|---|---|---|
| txidstring | string | The transaction id. |
| first_seeninteger | integer | When our node first saw it, Unix seconds (the wallet does not say when it did; the poller looks every 3 seconds). |
| first_seen_isostring | string | The same, UTC, as text. |
| timeinteger | integer | The transaction's own time, Unix seconds. |
| time_isostring | string | The same, UTC, as text. |
| tx_typestring | string | `TRANSFER`, or `CONTRACT_*` as for a confirmed transaction. Stakes are never in the pool. |
| sizeinteger | integer | The size in bytes. |
| input_countinteger | integer | The inputs. |
| output_countinteger | integer | The outputs. |
| output_volumestring | string | The sum of all outputs, change included, GRC. |
| moved_volumestring or null | string or null | What goes to addresses that are not one of the inputs', the change left out, GRC; `null` when an input could not be read (never a guess). |
| fee_volumestring or null | string or null | The fee, GRC. |
| fee_per_kbstring or null | string or null | The fee for each started kilobyte, GRC; `null` when the fee is not known. |
| from_addressstring or null | string or null | The address of the first input; `null` when it could not be found. |
| from_moreinteger | integer | How many inputs more. |
| to_addressstring or null | string or null | The first output address that is not the sender's; `null` when there is none. |
| to_moreinteger | integer | How many outputs more. |
BOINC
How far the BOINC indexer has come. Not about a network.
GET /gridcoinstats/v4/boinc
The BOINC status description. No database; `meta.network` is `null`: the BOINC data belongs to no network. Kept for 1 h.
curl -s "https://api.gridcoinstats.eu/gridcoinstats/v4/boinc"
An answer
{
"jsonapi": {
"version": "1.1"
},
"data": {
"type": "api",
"id": "gridcoinstats-boinc",
"attributes": {
"name": "Gridcoinstats BOINC status",
"description": "How far the BOINC indexer has read the statistics of the whitelisted projects",
"version": "4.2.1"
}
},
"meta": {
"network": null,
"version": "4.2.1"
},
"links": {
"self": "/gridcoinstats/v4/boinc",
"status": "/gridcoinstats/v4/boinc/status"
}
}
The 5 attributes
| AttributeType | Type | What |
|---|---|---|
| namestring | string | The name of the API. |
| versionstring | string | The API's own version. |
| networksarray | array | The networks the API has: `mainnet` and `testnet`. |
| descriptionstring | string | What the description is of (a network or the BOINC status). |
| networkstring | string | The network of a network description. |
GET /gridcoinstats/v4/boinc/status
How far the BOINC indexer has come. The indexer's state and, for each project, the newest team, user and host snapshot it read. Kept for 15 s.
curl -s "https://api.gridcoinstats.eu/gridcoinstats/v4/boinc/status"
An answer
{
"jsonapi": {
"version": "1.1"
},
"data": {
"type": "boinc-status",
"id": "gridcoinstats",
"attributes": {
"indexer": {
"state": "ok",
"updated_time": 1793343729,
"updated_time_iso": "2026-10-30T07:02:09Z"
},
"last_consumed_time": 1793342467,
"last_consumed_time_iso": "2026-10-30T06:41:07Z",
"projects": [
{
"name": "asteroids@home",
"team": {
"consumed_time": 1793332622,
"consumed_time_iso": "2026-10-30T03:57:02Z",
"snapshot_time": 1793311981,
"snapshot_time_iso": "2026-10-29T22:13:01Z",
"items": 2223
},
"user": {
"consumed_time": 1793332694,
"consumed_time_iso": "2026-10-30T03:58:14Z",
"snapshot_time": 1793311817,
"snapshot_time_iso": "2026-10-29T22:10:17Z",
"items": 165073
},
"host": {
"consumed_time": 1793333023,
"consumed_time_iso": "2026-10-30T04:03:43Z",
"snapshot_time": 1793311980,
"snapshot_time_iso": "2026-10-29T22:13:00Z",
"items": 411884
}
},
{
"name": "denis@home",
"team": {
"consumed_time": 1793332618,
"consumed_time_iso": "2026-10-30T03:56:58Z",
"snapshot_time": 1793265909,
"snapshot_time_iso": "2026-10-29T09:25:09Z",
"items": 533
},
"user": {
"consumed_time": 1793332659,
"consumed_time_iso": "2026-10-30T03:57:39Z",
"snapshot_time": 1793265903,
"snapshot_time_iso": "2026-10-29T09:25:03Z",
"items": 1208
},
"host": {
"consumed_time": 1793332739,
"consumed_time_iso": "2026-10-30T03:58:59Z",
"snapshot_time": 1793265908,
"snapshot_time_iso": "2026-10-29T09:25:08Z",
"items": 10895
}
}
]
}
},
"meta": {
"projects": 16,
"network": null,
"version": "4.2.1"
},
"links": {
"self": "/gridcoinstats/v4/boinc/status"
}
}
The 4 attributes
| AttributeType | Type | What |
|---|---|---|
| indexerobject or null | object or null | The BOINC indexer: `state`, `updated_time`, `updated_time_iso`. `null` on a database that is not a BOINC v4 database. |
| last_consumed_timeinteger or null | integer or null | When the indexer last read a file, Unix seconds. |
| last_consumed_time_isostring or null | string or null | The same, UTC, as text. |
| projectsarray | array | For each project the newest file read of `team`, `user` and `host`: its `snapshot_time` (when the project last changed it) and `consumed_time` (when the indexer read it). A project whose `consumed_time` stands still while the others move has stopped publishing or fails. |
Advertisement
We understand ads are no fun, but they are what makes Gridcoinstats possible.
No ad to show here right now. We understand ads are no fun, but they are what makes Gridcoinstats possible.
The ads are blocked in your browser. We understand ads are no fun, but they are what makes Gridcoinstats possible.
Advertisement
We understand ads are no fun, but they are what makes Gridcoinstats possible.
No ad to show here right now. We understand ads are no fun, but they are what makes Gridcoinstats possible.
The ads are blocked in your browser. We understand ads are no fun, but they are what makes Gridcoinstats possible.
Advertisement
We understand ads are no fun, but they are what makes Gridcoinstats possible.
No ad to show here right now. We understand ads are no fun, but they are what makes Gridcoinstats possible.
The ads are blocked in your browser. We understand ads are no fun, but they are what makes Gridcoinstats possible.
Advertisement
We understand ads are no fun, but they are what makes Gridcoinstats possible.
No ad to show here right now. We understand ads are no fun, but they are what makes Gridcoinstats possible.
The ads are blocked in your browser. We understand ads are no fun, but they are what makes Gridcoinstats possible.
