Miner NFT dataLink to this section
TL;DRLink to this section
- Read SQK issuance, Miner NFT positions, owner activity, and metadata from confirmation-safe snapshots.
- Portfolio and activity requests require a lowercase, nonzero owner address; follow their returned cursors to read more pages.
- An unavailable response is not an empty portfolio or zero issuance. Metadata can be available without an image.
- These v2 resources describe the pinned Mining4 API, not Mining5 support or a production deployment.
Endpoints and versionsLink to this section
GET /v2/public/squeeks/state— token issuance and optional collection mint state.GET /v2/public/squeeks/portfolio— an owner's Miner NFT positions and reward summary.GET /v2/public/squeeks/activity— confirmation-safe activity involving an owner.GET /v2/public/squeeks/metadata/:tokenId— one token's metadata and optional images.
All four resources return schemaVersion: 2. See response conventions for decimal strings, timestamps and token units; SQK amounts here use 18 decimals.
Every JSON example below is illustrative, not deployed or observed. example-installation, example-release, addresses, hashes, configuration values, and activity IDs are fictitious; they are not deployment or launch information.
Economy stateLink to this section
Read the SQK issuance frontier and, when present, the collection's mint lifecycle at the safe Ethereum block. Issuance is a Mining accounting view, not the latest Core work frontier.
RequestLink to this section
curl --fail-with-body \
"${API_BASE_URL:?Set API_BASE_URL}/v2/public/squeeks/state"
ParametersLink to this section
This endpoint accepts no query parameters. Any query parameter is rejected, including an installation or owner selector.
ResponseLink to this section
| Field / type | Meaning |
|---|---|
status: available or unavailable |
Selects the response variant; unavailable has no issuance fields. |
generatedAt: timestamp |
Required only on the available variant; when the snapshot response was generated. |
release, chain, identities: objects |
Release identity, safe Ethereum provenance, and the contract identities used for this snapshot. |
asset: object |
SQK address, literal symbol SQK, and numeric decimals 18. |
issuance: object |
Minted supply, remaining mint capacity, and the rounds/Squeek blocks through which Mining has processed issuance. All members are decimal strings. |
collection: optional object |
Mint phase, pause flag, allocation/minted counts, public mint price, and nullable allowlist timestamps. Absent is not null and does not mean zero collection activity. |
reason: unavailable-only string |
Why a usable snapshot cannot be served. Unavailable release is required but nullable. |
issuance.mintedThroughBlock counts completed Squeek blocks processed for issuance, not Ethereum blocks. mintedThroughRound is the Mining issuance frontier; lastAppliedRound is its last applied reward round. Neither substitutes for the live Core settlement frontier.
The schema download describes structure. The API additionally checks the configured release and graph, a nonzero safe block hash and implementation identity, the 12-confirmation boundary (indexedThroughBlock - safeThroughBlock >= 11), and a safe block at or after the economy deployment. It requires asset.address to match the configured token, mintedBaseUnits to equal tokenSupplyBaseUnits, and mintedThroughRound >= lastAppliedRound.
Illustrative response
This complete available response includes the optional collection object. Its allowlist timestamps are explicitly null, rather than omitted.
{
"schemaVersion": 2,
"installationId": "example-installation",
"status": "available",
"generatedAt": "2026-01-07T00:00:02Z",
"release": {
"id": "example-release",
"protocolRevision": "mining-4",
"rewardModelRevision": "q128-weighted-2"
},
"chain": {
"target": "anvil",
"chainId": "31337",
"confirmations": "12",
"deploymentBlock": "10",
"economyDeploymentBlock": "20",
"indexedThroughBlock": "111",
"safeThroughBlock": "100",
"safeBlockHash": "0x1111111111111111111111111111111111111111111111111111111111111111",
"safeBlockTimestamp": "2026-01-07T00:00:00Z"
},
"identities": {
"core": "0x1111111111111111111111111111111111111111",
"tokenFactory": "0x2222222222222222222222222222222222222222",
"mining": "0x3333333333333333333333333333333333333333",
"token": "0x4444444444444444444444444444444444444444",
"collection": "0x5555555555555555555555555555555555555555",
"miningImplementation": "0x6666666666666666666666666666666666666666",
"miningImplementationVersion": "4",
"miningStorageLayoutDigest": "0x2222222222222222222222222222222222222222222222222222222222222222"
},
"asset": {
"address": "0x4444444444444444444444444444444444444444",
"symbol": "SQK",
"decimals": 18
},
"issuance": {
"mintedBaseUnits": "1000000000000000000",
"tokenSupplyBaseUnits": "1000000000000000000",
"unmintedCapacityBaseUnits": "9000000000000000000",
"mintedThroughBlock": "1",
"mintedThroughRound": "864",
"lastAppliedRound": "864"
},
"collection": {
"phase": "public",
"paused": false,
"publicMinted": "1",
"publicAllocation": "9000",
"reserveMinted": "0",
"protocolReserve": "999",
"publicPriceBaseUnits": "10000000000000000",
"allowlistStart": null,
"allowlistEnd": null
}
}
A complete illustrative unavailable response:
{
"schemaVersion": 2,
"installationId": "example-installation",
"status": "unavailable",
"reason": "indexer_disabled",
"release": null
}
Freshness and unavailable statesLink to this section
The endpoint returns Cache-Control: no-store. The API can still reuse its server-side state snapshot for five seconds by default; no-store does not promise a new upstream read for each request.
Available data is bounded by chain.safeThroughBlock and chain.safeBlockTimestamp, not by the current request time. Collection phase is evaluated at that safe timestamp, so a timed phase transition need not wait for a new collection event.
The response schema accepts indexer_disabled, not_yet_safe, indexer_unavailable, indexer_mismatch, unsupported_contract_version, and projection_rebuilding. The pinned route produces the first four: it does not emit the last two as distinct reasons. An unavailable result is HTTP 200 and must not be rendered as a zero supply.
ErrorsLink to this section
Any query parameter returns HTTP 400 with {"error":"invalid_query"}. Normal route responses, including query errors and unavailable variants, use no-store; upstream read/validation failures become indexer_unavailable, and identity mismatches become indexer_mismatch. See common errors for failures handled outside this route.
Owner portfolioLink to this section
Read one owner's live Miner NFT positions, mining power, and rewards at a safe block. The summary and seven-day earnings cover all currently held positions, not just the returned page.
RequestLink to this section
The owner below is a fictitious, nonzero address.
curl --fail-with-body --get \
"${API_BASE_URL:?Set API_BASE_URL}/v2/public/squeeks/portfolio" \
--data-urlencode 'owner=0x7777777777777777777777777777777777777777' \
--data-urlencode 'limit=25'
ParametersLink to this section
| Parameter / type | Meaning |
|---|---|
owner: required string |
Exactly 0x followed by 40 lowercase hexadecimal characters; the zero address is rejected. No checksum-case conversion is performed. |
limit: optional string |
Canonical decimal integer 1–100; raw HTTP default is 25. Leading zeros, signs, spaces, fractions, and empty values are rejected. |
cursor: optional string |
Omit for the first page. When supplied, 1–512 characters from A–Z, a–z, 0–9, _, or -; use the returned opaque nextCursor. |
Only these three query keys are accepted, each at most once. Keep the same owner and endpoint when following a cursor; omit cursor rather than sending an empty string or null text.
ResponseLink to this section
| Field / type | Meaning |
|---|---|
owner: address |
Required on available responses and checked against the requested owner. |
generatedAt, release, chain, identities |
Generation time, release identity, safe Ethereum provenance, and contract graph. |
configuration: object |
Genesis Unix-seconds string, round-duration string, numeric maximum level, claim-limit string, SQK units, and every configured level's weight/cooldown. |
mining: object |
Mining issuance round frontier, current round at the safe timestamp, completed Squeek block height, last applied reward round, and total mining power. All are decimal strings. |
summary: object |
Position count, active/target mining power, claimable rewards, owner-earned rewards, and seven-day earnings across all held positions. All are decimal strings. |
earnings: array of exactly 7 objects |
UTC date and earnedBaseUnits for each day, oldest first, ending on the safe block's UTC date. Zero-earning days remain present. |
positions: array, at most 100 |
This page's positions, each with token ID, level, active/target power, pending activation, merge eligibility, reward amounts, ownership start, and metadata availability. |
nextCursor: string or null |
Required; null means no further page in this snapshot. |
status, reason, release |
Unavailable uses the small variant shown below, not an empty positions array; its release is required and nullable. |
Within each position, pendingRound and pendingActivationSource are required and nullable together. pendingActivationSource is mint or merge when non-null; mergeState is ready, cooldown, pending, or terminal, and metadataStatus is available or unavailable.
The structural schema is not the entire contract: levels must contain exactly 1 through maximumLevel once in ascending order, roundDuration and claimLimit must be positive, and claimLimit cannot exceed 32. Positions must have strictly increasing positive token IDs, no duplicates, and matching nullability for the pending fields. The API also checks the release, graph, safe-chain binding, and requested owner.
Reward amounts are truncated to whole token base units after accounting in finer precision. Do not assume a sum of independently rounded position or day values exactly equals a rounded summary total.
Illustrative response
This complete available example contains one position and all seven day rows. The level configuration is fictitious, not a launch specification.
{
"schemaVersion": 2,
"installationId": "example-installation",
"status": "available",
"generatedAt": "2026-01-07T00:00:02Z",
"release": {
"id": "example-release",
"protocolRevision": "mining-4",
"rewardModelRevision": "q128-weighted-2"
},
"owner": "0x7777777777777777777777777777777777777777",
"chain": {
"target": "anvil",
"chainId": "31337",
"confirmations": "12",
"deploymentBlock": "10",
"economyDeploymentBlock": "20",
"indexedThroughBlock": "111",
"safeThroughBlock": "100",
"safeBlockHash": "0x1111111111111111111111111111111111111111111111111111111111111111",
"safeBlockTimestamp": "2026-01-07T00:00:00Z"
},
"identities": {
"core": "0x1111111111111111111111111111111111111111",
"tokenFactory": "0x2222222222222222222222222222222222222222",
"mining": "0x3333333333333333333333333333333333333333",
"token": "0x4444444444444444444444444444444444444444",
"collection": "0x5555555555555555555555555555555555555555",
"miningImplementation": "0x6666666666666666666666666666666666666666",
"miningImplementationVersion": "4",
"miningStorageLayoutDigest": "0x2222222222222222222222222222222222222222222222222222222222222222"
},
"configuration": {
"genesisTimestamp": "1767225600",
"roundDuration": "600",
"maximumLevel": 2,
"claimLimit": "32",
"tokenSymbol": "SQK",
"tokenDecimals": 18,
"levels": [
{ "level": 1, "weight": "1", "cooldownBlocks": "1" },
{ "level": 2, "weight": "2", "cooldownBlocks": "0" }
]
},
"mining": {
"settledThroughRound": "864",
"currentRound": "865",
"completedBlockHeight": "1",
"lastAppliedRound": "864",
"totalWeight": "1"
},
"summary": {
"positionCount": "1",
"activeWeight": "1",
"targetWeight": "1",
"claimableBaseUnits": "1000000000000000000",
"earnedBaseUnits": "1000000000000000000",
"earnedSevenDayBaseUnits": "1000000000000000000"
},
"earnings": [
{ "date": "2026-01-01", "earnedBaseUnits": "0" },
{ "date": "2026-01-02", "earnedBaseUnits": "0" },
{ "date": "2026-01-03", "earnedBaseUnits": "0" },
{ "date": "2026-01-04", "earnedBaseUnits": "0" },
{ "date": "2026-01-05", "earnedBaseUnits": "0" },
{ "date": "2026-01-06", "earnedBaseUnits": "1000000000000000000" },
{ "date": "2026-01-07", "earnedBaseUnits": "0" }
],
"positions": [
{
"tokenId": "1",
"level": 1,
"activeWeight": "1",
"targetWeight": "1",
"pendingRound": null,
"pendingActivationSource": null,
"mergeState": "ready",
"nextMergeBlock": "1",
"blocksUntilMerge": "0",
"claimableBaseUnits": "1000000000000000000",
"earnedBaseUnits": "1000000000000000000",
"earnedSevenDayBaseUnits": "1000000000000000000",
"ownershipStartedAt": "2026-01-01T00:00:00Z",
"metadataStatus": "available"
}
],
"nextCursor": null
}
A complete illustrative unavailable response:
{
"schemaVersion": 2,
"installationId": "example-installation",
"status": "unavailable",
"reason": "not_yet_safe",
"release": {
"id": "example-release",
"protocolRevision": "mining-4",
"rewardModelRevision": "q128-weighted-2"
}
}
Freshness and unavailable statesLink to this section
Responses use Cache-Control: no-store. Pagination holds the safe-block snapshot encoded in the returned cursor; start again without a cursor for a newer snapshot.
An available owner with no live positions has zero summary amounts, an empty positions array, all seven zero-earning day rows, and nextCursor: null. An empty later page does not imply that the owner has no positions; inspect summary.positionCount. Unavailable has none of those fields and must not be treated as an empty portfolio.
The schema's reasons are indexer_disabled, not_yet_safe, indexer_unavailable, indexer_mismatch, unsupported_contract_version, and projection_rebuilding; the pinned route directly emits only the first four. metadataStatus: unavailable on a position does not make its reward data unavailable.
ErrorsLink to this section
Invalid, missing, duplicate, or unknown query parameters return HTTP 400 with {"error":"invalid_query"}. A cursor passing the public character/length check can still fail upstream decoding; the pinned public route then returns HTTP 200 with status: unavailable and reason: indexer_unavailable, not a guaranteed HTTP 400.
Owner or graph mismatches produce indexer_mismatch; other upstream read/validation failures produce indexer_unavailable. These route responses use no-store. See common errors for errors outside the route.
Owner activityLink to this section
Read confirmation-safe Miner NFT activity involving an owner, including transfers where the owner is the counterparty. This is an owner-specific history, not the system-wide activity feed.
RequestLink to this section
The owner below is a fictitious, nonzero address.
curl --fail-with-body --get \
"${API_BASE_URL:?Set API_BASE_URL}/v2/public/squeeks/activity" \
--data-urlencode 'owner=0x7777777777777777777777777777777777777777' \
--data-urlencode 'limit=25'
ParametersLink to this section
| Parameter / type | Meaning |
|---|---|
owner: required string |
Exactly 0x plus 40 lowercase hexadecimal characters; must be nonzero. |
limit: optional string |
Canonical integer 1–100; the raw HTTP default is 25. No leading zeros, signs, spaces, fractions, or empty values. |
cursor: optional string |
Omit initially; otherwise use this endpoint's returned opaque cursor, 1–512 characters matching [A-Za-z0-9_-]+. |
Only owner, limit, and cursor are allowed, each at most once. Keep the owner unchanged when paging; portfolio cursors are not activity cursors.
ResponseLink to this section
| Field / type | Meaning |
|---|---|
generatedAt, owner, release, chain, identities |
Required on available responses: generation time, requested owner, release, safe-chain provenance, and graph identity. |
activity: array, at most 100 |
Events in descending Ethereum block, transaction-index, and log-index order. |
activity[].kind: string |
Schema permits mint, merge, claim, transfer, and checkpoint; the pinned projection emits the first four. |
activity[].tokenIds: decimal-string array |
At most 32 token IDs per event. |
activity[].amountBaseUnits, from, to, level, effectiveRound, nextMergeBlock |
Required, nullable event-specific values. level is numeric when present; round/block/amount values are decimal strings. |
activity[].source: object |
Ethereum block number/hash/timestamp, transaction hash/index, log index, and literal confirmationStatus: safe. |
total: optional decimal string |
Total safe events involving this owner in the snapshot, not this page's length. It may be absent, but is not nullable. |
nextCursor: string or null |
Required continuation cursor; null ends the snapshot's pages. |
status, reason, release |
Unavailable uses a separate small object; its release is required and nullable. |
The schema is structural. The API also requires unique activity IDs, strict descending event order, event block numbers no higher than the safe block, and a matching owner, release, graph, and safe-chain binding. Missing total means the total is unknown: do not substitute zero or invent a last page.
Illustrative response
This complete available response shows one transfer. Nullable event fields remain present.
{
"schemaVersion": 2,
"installationId": "example-installation",
"status": "available",
"generatedAt": "2026-01-07T00:00:02Z",
"owner": "0x7777777777777777777777777777777777777777",
"release": {
"id": "example-release",
"protocolRevision": "mining-4",
"rewardModelRevision": "q128-weighted-2"
},
"chain": {
"target": "anvil",
"chainId": "31337",
"confirmations": "12",
"deploymentBlock": "10",
"economyDeploymentBlock": "20",
"indexedThroughBlock": "111",
"safeThroughBlock": "100",
"safeBlockHash": "0x1111111111111111111111111111111111111111111111111111111111111111",
"safeBlockTimestamp": "2026-01-07T00:00:00Z"
},
"identities": {
"core": "0x1111111111111111111111111111111111111111",
"tokenFactory": "0x2222222222222222222222222222222222222222",
"mining": "0x3333333333333333333333333333333333333333",
"token": "0x4444444444444444444444444444444444444444",
"collection": "0x5555555555555555555555555555555555555555",
"miningImplementation": "0x6666666666666666666666666666666666666666",
"miningImplementationVersion": "4",
"miningStorageLayoutDigest": "0x2222222222222222222222222222222222222222222222222222222222222222"
},
"activity": [
{
"id": "example-transfer-1",
"kind": "transfer",
"tokenIds": ["1"],
"amountBaseUnits": null,
"from": "0x7777777777777777777777777777777777777777",
"to": "0x8888888888888888888888888888888888888888",
"level": null,
"effectiveRound": null,
"nextMergeBlock": null,
"source": {
"blockNumber": "99",
"blockHash": "0x3333333333333333333333333333333333333333333333333333333333333333",
"blockTimestamp": "2026-01-06T23:59:48Z",
"transactionHash": "0x4444444444444444444444444444444444444444444444444444444444444444",
"transactionIndex": "0",
"logIndex": "0",
"confirmationStatus": "safe"
}
}
],
"total": "1",
"nextCursor": null
}
A complete illustrative unavailable response:
{
"schemaVersion": 2,
"installationId": "example-installation",
"status": "unavailable",
"reason": "indexer_unavailable",
"release": {
"id": "example-release",
"protocolRevision": "mining-4",
"rewardModelRevision": "q128-weighted-2"
}
}
Freshness and unavailable statesLink to this section
Responses use Cache-Control: no-store. Returned cursors preserve a safe-block snapshot; omit the cursor to start a fresh history read.
An available empty activity array means there are no events on that page, not that the indexer failed. An owner with no safe events can have activity: [], total: "0", and nextCursor: null; absence of the optional total does not itself establish a zero count.
The unavailable schema accepts indexer_disabled, not_yet_safe, indexer_unavailable, indexer_mismatch, unsupported_contract_version, and projection_rebuilding. The pinned route directly produces the first four, with HTTP 200 rather than an empty history.
ErrorsLink to this section
Invalid, missing, duplicate, or unknown query parameters return HTTP 400 with {"error":"invalid_query"}. A syntactically accepted cursor rejected during upstream decoding becomes HTTP 200 unavailable with reason: indexer_unavailable in this route.
Owner/graph mismatches become indexer_mismatch; other upstream failures become indexer_unavailable. These responses use no-store. See common errors for failures handled outside the route.
Token metadataLink to this section
Read one live token's safe metadata, attributes, and optional images. A release query scopes the request to the API's current release; it is not a historical-release selector.
RequestLink to this section
An unscoped request:
curl --fail-with-body \
"${API_BASE_URL:?Set API_BASE_URL}/v2/public/squeeks/metadata/1"
For a release-scoped request, set RELEASE_ID to the release ID returned by the API, not the fictitious example-release used below:
curl --fail-with-body --get \
"${API_BASE_URL:?Set API_BASE_URL}/v2/public/squeeks/metadata/1" \
--data-urlencode "release=${RELEASE_ID:?Set RELEASE_ID from the API response}"
ParametersLink to this section
| Parameter / type | Meaning |
|---|---|
tokenId: required path string |
Canonical positive decimal 1–9999, matching [1-9][0-9]*; no zero, leading zeros, signs, or fractions. |
release: optional query string |
Must exactly equal the API's configured release ID. Omit to request the unscoped representation. Empty, duplicate, unknown, or historical releases are not accepted. |
No other query keys are accepted. A release-scoped request is invalid if there is no configured release against which to validate it.
ResponseLink to this section
| Field / type | Meaning |
|---|---|
generatedAt, release, chain, identities |
Available-response generation time, release, safe Ethereum provenance, and contract identities. |
tokenId: decimal string |
The requested token ID; checked against the upstream response. |
collection: address |
The collection contract address, not the optional collection-state object returned by the state endpoint. |
name, description: strings |
Token display name (1–128 characters) and description (1–2048 characters). |
attributes: array, at most 32 |
Each attribute has traitType (1–64 characters) and string value (1–128 characters). |
imageDataUri: optional string |
Base64 SVG data URI, at most 240,000 characters. Optional is not nullable. |
cardImageUrl: optional string |
HTTPS card-image URL, at most 2048 characters. Optional is not nullable. |
status, reason, release |
Unavailable has no token metadata fields; its release is required and nullable. |
Both image fields may be absent in an available response. The schema does not require one image when the other is absent, and metadata availability does not prove that an external image URL is reachable.
Beyond structural validation, the API checks the requested token, configured collection/release, contract graph, and safe-chain provenance. The upstream projection requires a live safe position and current safe metadata; a token outside that usable snapshot is not returned as an empty metadata object.
Illustrative response
This complete available, release-scoped example intentionally has neither image field. With a matching release query it meets the bounded cache predicate even without cardImageUrl.
{
"schemaVersion": 2,
"installationId": "example-installation",
"status": "available",
"generatedAt": "2026-01-07T00:00:02Z",
"tokenId": "1",
"chain": {
"target": "anvil",
"chainId": "31337",
"confirmations": "12",
"deploymentBlock": "10",
"economyDeploymentBlock": "20",
"indexedThroughBlock": "111",
"safeThroughBlock": "100",
"safeBlockHash": "0x1111111111111111111111111111111111111111111111111111111111111111",
"safeBlockTimestamp": "2026-01-07T00:00:00Z"
},
"identities": {
"core": "0x1111111111111111111111111111111111111111",
"tokenFactory": "0x2222222222222222222222222222222222222222",
"mining": "0x3333333333333333333333333333333333333333",
"token": "0x4444444444444444444444444444444444444444",
"collection": "0x5555555555555555555555555555555555555555",
"miningImplementation": "0x6666666666666666666666666666666666666666",
"miningImplementationVersion": "4",
"miningStorageLayoutDigest": "0x2222222222222222222222222222222222222222222222222222222222222222"
},
"release": {
"id": "example-release",
"protocolRevision": "mining-4",
"rewardModelRevision": "q128-weighted-2"
},
"collection": "0x5555555555555555555555555555555555555555",
"name": "Illustrative Miner #1",
"description": "Fictitious metadata example; not a minted or deployed NFT.",
"attributes": [
{ "traitType": "Example trait", "value": "Illustrative value" }
]
}
A complete illustrative unavailable response:
{
"schemaVersion": 2,
"installationId": "example-installation",
"status": "unavailable",
"reason": "not_yet_safe",
"release": {
"id": "example-release",
"protocolRevision": "mining-4",
"rewardModelRevision": "q128-weighted-2"
}
}
Freshness and unavailable statesLink to this section
The metadata response is not immutable. Its generatedAt and safe-chain provenance can change as the API serves newer snapshots, even when the request names the same release and token.
Image selection happens before the cache decision:
- With a matching
release,cardImageUrlis retained. The inlineimageDataUriis removed only whencardImageUrlexists; without a card URL, an existing SVG remains. - Without a
releasequery,cardImageUrlis removed and an existingimageDataUriis retained. - Neither form creates an image if both fields are absent.
The response uses Cache-Control: private, max-age=300 only when the release query has been validated, the response is available, and the resulting response has no imageDataUri. Every other case uses no-store. A matching release alone is insufficient, and the cache condition does not require a card URL.
A syntactically valid token can return not_yet_safe when metadata or its live position is missing from the safe snapshot, or metadata predates the current metadata epoch. That is HTTP 200 unavailable, not HTTP 404 and not an available object with empty strings.
The unavailable schema accepts indexer_disabled, not_yet_safe, indexer_unavailable, indexer_mismatch, unsupported_contract_version, and projection_rebuilding; the pinned public route directly emits the first four. A nullable unavailable release does not change the meaning of the unavailable status.
ErrorsLink to this section
Unknown or duplicate query keys return HTTP 400 {"error":"invalid_query"}. A noncanonical or out-of-range token ID returns HTTP 400 {"error":"invalid_token_id"}; a supplied release that cannot be matched to the configured release returns HTTP 400 {"error":"invalid_query"}. Query-key validation runs before token validation, which runs before release matching.
These validation errors and all unavailable bodies use no-store. Token/graph mismatches become HTTP 200 unavailable with reason: indexer_mismatch; other upstream failures use indexer_unavailable. See common errors for failures handled outside this route.
SourceLink to this section
Based on system/API source 9e38b931, which binds these resources to mining-4, q128-weighted-2, and Mining implementation version 4. The downloadable schemas describe response structure, not every cross-field check or deployment evidence; see source and release scope.
Related pagesLink to this section
- Public API — endpoint directory, common units, and shared errors.
- Use the public API — requests, pagination and unavailable results.
- Ownership and transfers — the owner-facing consequences; contract mechanics there describe Mining5, not this API's Mining4 snapshot.
- Verify visuals and metadata — independent onchain checks using the intended deployment's source.
- Source and release scope — source identity and deployment limits.