Public APILink to this section
TL;DRLink to this section
- Read measurements, settlement and Miner NFT data with public GET requests; no API key or wallet is required.
- HTTP 200 can contain unavailable data, not an empty result or a zero balance.
- This source snapshot supports Mining4 integration, not the separate Mining5 contract source.
In this sectionLink to this section
Use the API base URL supplied for your approved environment. This reference does not designate a current public service endpoint; browser requests must pass that environment's CORS origin policy.
- Use the public API Start with an HTTP request, inspect the response and handle pagination without a private SDK.
- Work and system data Read telemetry, module snapshots, observations, process state and statistics.
- Settlement and activity Read confirmation-safe onchain state, settlement history and public events.
- Miner NFT data Read economy state, owner portfolios, owner activity and token metadata.
Each endpoint reference keeps its request, parameters, response, freshness and errors together. Complete JSON Schemas describe nested fields, required properties, nullable values and response variants; endpoint notes explain additional relationships and source limitations.
Response conventionsLink to this section
- Check the route version and
schemaVersion; do not interpret a v3 response as v4. - Keep large integer counters, IDs and amounts as decimal strings or
BigInt, not floating-point numbers. - Preserve installation, release, contract and source identities alongside the data. A recent
generatedAtdoes not mean the indexed chain has advanced. - Branch on the resource's availability fields before using its values. Process subobjects can be unavailable independently; telemetry uses
offline,staleandonlinerather than the chain-response union. - Use API values for display. Verify the deployment, read current ownership and simulate before signing a transaction.
Units and timestamps
| Value | Meaning |
|---|---|
schemaVersion |
Numeric response contract version. |
| Decimal-string counters and IDs | Exact nonnegative integers unless the endpoint specifies a narrower range. |
generatedAt, observedAt, receivedAt, activity timestamps |
ISO-8601 timestamps with an offset. |
genesisTimestamp, roundDuration, onchain event blockTimestamp |
Decimal-string Unix seconds or durations in seconds, not milliseconds. |
| SQK amounts, supply and cap | 18-decimal SQK base units; 1000000000000000000 base units is 1 SQK. |
Collection publicPriceBaseUnits |
ETH price in wei, not SQK. |
blockHeight, completedBlockHeight, nextMergeBlock, cooldownBlocks |
Squeek/Core block heights or counts. |
safeThroughBlock, indexedThroughBlock, ethereumBlockNumber, source blockNumber |
Ethereum block heights. |
rpmMilli |
Thousandths of a revolution per minute. |
speedMmPerSecond, distanceMm |
Millimetres per second and millimetres. |
coverageBps |
Basis points, 0–10000, not a percent or work count. |
Using the response schemas
The linked schemas use JSON Schema draft 2020-12 and resolve all $ref references within the downloaded file. They describe response structure; endpoint notes also specify ordering, cross-field relationships and other semantic constraints.
Enable the standard date, date-time and uuid format checks in your validator. Register uint64-decimal and uint256-decimal as canonical unsigned decimal strings from zero through 2^64 - 1 and 2^256 - 1, respectively; a string-length check alone does not enforce these bounds.
ErrorsLink to this section
An HTTP failure has an error string, not the endpoint's successful response shape. For example, this illustrative HTTP 400 body means the query must be corrected:
{"error":"invalid_query"}
HTTP failure codes
| HTTP status and error | Handling |
|---|---|
400 invalid_query |
Correct the endpoint's parameters, owner, page size or release scope. |
400 invalid_token_id |
Use a canonical token ID from 1 through 9999. |
400 invalid_installation_id |
Correct the installation identifier. |
400 invalid_cursor |
Restart pagination in its original scope. |
403 cors_origin_not_allowed |
Use an approved browser origin; credentials do not bypass CORS. |
503 indexer_busy |
The indexer-backed read could not obtain admission; retry later. |
503 database_busy |
A database-backed read could not obtain capacity or access. |
503 database_unavailable |
The database connection failed; retain the error state. |
503 public_stats_rebuilding |
The statistics projection is not ready; do not show an empty history as success. |
504 request_timeout |
The server deadline expired; distinguish this from a client timeout. |
500 internal_error |
An unexpected server failure; retain the error state and bound retries. |
All four 503 errors above include Retry-After: 2 and Cache-Control: no-store. Respect the delay and bound retries; the 400, 403, 500 and 504 paths do not promise those headers.
HTTP 200 with an unavailable payload is a valid read result, not an HTTP failure. Use that endpoint's reason and retain unavailable state rather than inventing zero balances or empty history.
HTTP 304 has no JSON body: reuse the body saved with the matching ETag, only on endpoints that support conditional requests. Invalid JSON, a schema mismatch or a transport timeout is an error, not valid empty data.
SourceLink to this section
Based on system/API source 9e38b931. Downloadable response schemas describe this snapshot, not a deployment attestation; see source and release scope.