- Docs
- Api%2Freference%2Fexplorer%2FListStateChangesPublic
List an object's history
Everything that has ever happened to one object, newest first: what was done, by whom, when, and which batch made it permanent. Each entry records the owner before and after, the fingerprints of the object before and after, and the batch that settled it — enough to follow a ticket from the moment it was issued to the moment it was used, and to prove every step along the way. This is the object's public audit history. No sign-in is needed.
Path Parameters
Identifier of the smart object.
Query Parameters
Return only the resource with this identifier. Equivalent to fetching it by path, but usable together with the other list filters.
How many items to return in one page. The default and the maximum are both
25; a larger value is rejected with 400.
25int641 <= value <= 25Cursor for the next page, taken verbatim from the next field of the previous
response. Keep every other query parameter the same between pages: sortBy
and order are part of what the cursor means. An absent or empty next in a
response means there are no more pages.
The value is opaque. Do not parse it or build one yourself.
Sort direction. Defaults to desc, newest first.
"desc""asc" | "desc"Field used to sort the result. Supported fields depend on the endpoint; use
when_created for chronological ordering where it is available. The default
is the resource identifier, and identifiers break ties so cursor paging stays
stable.
Return only the change made by this action.
Return only changes settled in this batch.
Return only changes of this kind: create when the object came into
being, update when it changed, delete when it was destroyed.
Return only changes made by this action, such as transfer or redeem.
Return only changes after this point in the object's life. Each change raises the object's count by one, so this walks its history in order.
Return only changes before this point in the object's life.
Return the change that started from this fingerprint.
Return the change that produced this fingerprint.
Happened strictly after this moment.
date-timeHappened strictly before this moment.
date-timeHappened at or after this moment.
date-timeHappened at or before this moment.
date-timeResponse Body
application/json
application/json
application/json
application/json
curl -X GET "https://api.dual.network/public/objects/665f1c2d4b1a2c3d4e5f6a90/state-changes"{
"state_changes": [
{
"id": "665f1c2d4b1a2c3d4e5f6c90",
"object_id": "665f1c2d4b1a2c3d4e5f6a90",
"wallet_id": "665f1c2d4b1a2c3d4e5f6a01",
"action_id": "665f1c2d4b1a2c3d4e5f6e02",
"action_name": "transfer",
"change_type": "update",
"prev_owner": "0x1234567890abcdef1234567890abcdef12345678",
"current_owner": "0xfedcba9876543210fedcba9876543210fedcba98",
"prev_nonce": 2,
"next_nonce": 3,
"prev_state_hash": "0x9f8e7d6c5b4a39281706f5e4d3c2b1a09f8e7d6c5b4a39281706f5e4d3c2b1a0",
"next_state_hash": "0xa1b2c3d4e5f60718293a4b5c6d7e8f90a1b2c3d4e5f60718293a4b5c6d7e8f90",
"prev_content_hash": "0x8e7d6c5b4a39281706f5e4d3c2b1a09f8e7d6c5b4a39281706f5e4d3c2b1a09f",
"next_content_hash": "0xb2c3d4e5f60718293a4b5c6d7e8f90a1b2c3d4e5f60718293a4b5c6d7e8f90a1",
"prev_integrity_hash": "0xd4e5f60718293a4b5c6d7e8f90a1b2c3d4e5f60718293a4b5c6d7e8f90a1b2c3",
"next_integrity_hash": "0xc3d4e5f60718293a4b5c6d7e8f90a1b2c3d4e5f60718293a4b5c6d7e8f90a1b2",
"merkle_proof": [],
"batch_id": "665f1c2d4b1a2c3d4e5f6a20",
"when_created": "2026-05-11T18:24:00Z"
}
]
}{
"code": 3,
"message": "Key: 'limit' Error:Field validation for 'limit' failed on the 'lte' tag"
}{
"code": 5,
"message": "object not found"
}{
"code": 13,
"message": "internal error"
}