Skip to content

Query entities stored on Arkiv using standard JSON-RPC 2.0 calls. This page covers the available methods, query syntax, operators, pagination, and utility endpoints.

PropertyValue
Chain ID60138453025
HTTP RPChttps://kaolin.hoodi.arkiv.network/rpc
Explorerhttps://explorer.kaolin.hoodi.arkiv.network

All methods use standard JSON-RPC 2.0:

Terminal window
curl https://kaolin.hoodi.arkiv.network/rpc \
-H "content-type: application/json" \
-d '{"jsonrpc":"2.0","id":1,"method":"METHOD_NAME","params":[]}'

Query entities from the bitmap-backed SQLite store.

IndexTypeRequiredDescription
0stringYesQuery expression
1object/nullNoQuery options

Operators:

OperatorDescription
&&Logical AND
||Logical OR
!Negation
=, !=Equality / inequality
<, >, <=, >=Numeric comparisons
~Glob match
!~Negated glob match

Synthetic Attributes (use with $ prefix):

AttributeDescription
$ownerEntity owner address
$creatorEntity creator address (immutable)
$keyEntity key
$expirationExpiration block
$createdAtBlockBlock at creation
$sequence, $txIndex, $opIndexOrdering attributes
$allMatch all entities
FieldTypeDescription
atBlockhex stringQuery at a specific block (e.g., "0x1bc")
includeDataobjectControls which fields are returned
resultsPerPagehex stringPage size, max 200
cursorstringPagination cursor from previous response

includeData fields (all default to true when omitted):

key, contentType, payload, creator, owner, attributes, expiration

{
"jsonrpc": "2.0",
"id": 1,
"result": {
"data": [
{
"key": "0x...",
"value": "0x...",
"contentType": "application/json",
"expiresAt": 1200000,
"creator": "0x...",
"owner": "0x...",
"createdAtBlock": 401,
"lastModifiedAtBlock": 443,
"stringAttributes": [{ "key": "status", "value": "active" }],
"numericAttributes": [{ "key": "rarity", "value": 5 }]
}
],
"blockNumber": "0x1bc",
"cursor": "0x2a"
}
}

By attribute:

Terminal window
curl https://kaolin.hoodi.arkiv.network/rpc \
-H "content-type: application/json" \
-d '{
"jsonrpc":"2.0","id":1,
"method":"arkiv_query",
"params":[
"type = \"nft\" && status = \"active\"",
{"resultsPerPage":"0xa"}
]
}'

By owner:

Terminal window
curl https://kaolin.hoodi.arkiv.network/rpc \
-H "content-type: application/json" \
-d '{
"jsonrpc":"2.0","id":10,
"method":"arkiv_query",
"params":[
"$owner = \"0x2222222222222222222222222222222222222222\"",
null
]
}'

Numeric range:

Terminal window
curl https://kaolin.hoodi.arkiv.network/rpc \
-H "content-type: application/json" \
-d '{
"jsonrpc":"2.0","id":12,
"method":"arkiv_query",
"params":["price >= 100 && price <= 1000", null]
}'

Glob match with negation:

Terminal window
curl https://kaolin.hoodi.arkiv.network/rpc \
-H "content-type: application/json" \
-d '{
"jsonrpc":"2.0","id":13,
"method":"arkiv_query",
"params":["name ~ \"test*\" && !(status = \"deleted\")", null]
}'

Metadata only (omit payload):

Terminal window
curl https://kaolin.hoodi.arkiv.network/rpc \
-H "content-type: application/json" \
-d '{
"jsonrpc":"2.0","id":14,
"method":"arkiv_query",
"params":[
"$all",
{
"resultsPerPage":"0xa",
"includeData":{
"key":true,"attributes":true,"payload":false,
"contentType":true,"expiration":true,
"creator":true,"owner":true
}
}
]
}'

Use the returned cursor in the next request:

{
"method": "arkiv_query",
"params": [
"type = \"nft\"",
{ "cursor": "0x2a", "resultsPerPage": "0x2" }
]
}

When cursor is absent from the response, there are no more pages.

Returns the total number of entities currently stored. No parameters.

Terminal window
curl https://kaolin.hoodi.arkiv.network/rpc \
-H "content-type: application/json" \
-d '{"jsonrpc":"2.0","id":3,"method":"arkiv_getEntityCount","params":[]}'

Result: a plain JSON number (e.g., 18427).

Returns used storage-accounting slots. No parameters. Result is a hex string.

Returns timing for the current head block. No parameters.

{
"result": {
"current_block": 582143,
"current_block_time": 1742721127,
"duration": 2
}
}
  • current_block_time — Unix timestamp in seconds
  • duration — seconds since previous block