List public objects

Objects on the network as anyone can see them — the view behind an explorer, a marketplace listing or a public gallery. Each object shows its name, description, picture, current owner and the details its template chooses to publish. Anything an organization keeps to itself is left out. Add `include=display` to get a ready-made way to show each object, in the look you name with `display_variant`. Open to everyone. No sign-in needed.

GET
/public/objects

Query Parameters

id?string

Return only the resource with this identifier. Equivalent to fetching it by path, but usable together with the other list filters.

limit?integer

How many items to return in one page. The default and the maximum are both 25; a larger value is rejected with 400.

Default25
Formatint64
Range1 <= value <= 25
autocomplete?string

Search the endpoint's supported text and identifier fields. Matching may be an exact identifier lookup or a case-insensitive prefix search, depending on the resource. Alphanumeric characters only.

next?string

Cursor 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.

order?string

Sort direction. Defaults to desc, newest first.

Default"desc"
Value in"asc" | "desc"
sortBy?string

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.

faces?booleanDeprecated

An older way of asking for how each object looks. Use include=display instead.

include?array<>

Ask for extras alongside each object. display adds a ready-made way to show it.

display_variant?string

Which look to resolve when you ask for include=display: a tile (card), a full page (detail) or a link preview (share).

Default"card"
Value in"card" | "detail" | "share"
actions?boolean

Also return what can be done with each object.

owner?string

Return only objects held by this address.

dropped?boolean

Return only objects left somewhere to be picked up (true), or only objects that have not been (false).

geo_hash?string

Return only objects dropped in this area. The longer the value, the smaller the area.

template_id?string

Return only objects made from this template.

when_created[$gt]?string

Created strictly after this moment.

Formatdate-time
when_created[$lt]?string

Created strictly before this moment.

Formatdate-time
when_created[$gte]?string

Created at or after this moment.

Formatdate-time
when_created[$lte]?string

Created at or before this moment.

Formatdate-time
when_modified[$gt]?string

Last changed strictly after this moment.

Formatdate-time
when_modified[$lt]?string

Last changed strictly before this moment.

Formatdate-time
when_modified[$gte]?string

Last changed at or after this moment.

Formatdate-time
when_modified[$lte]?string

Last changed at or before this moment.

Formatdate-time

Response Body

application/json

application/json

application/json

curl -X GET "https://api.dual.network/public/objects"
{
  "items": [
    {
      "object": {
        "id": "665f1c2d4b1a2c3d4e5f6a90",
        "template_id": "665f1c2d4b1a2c3d4e5f6a99",
        "owner": "0x1234567890abcdef1234567890abcdef12345678",
        "metadata": {
          "name": "Summer Festival 2026",
          "description": "Three days, four stages, one wristband."
        },
        "custom": {
          "tier": "general"
        },
        "nonce": 3,
        "version": 2,
        "state_hash": "0xa1b2c3d4e5f60718293a4b5c6d7e8f90a1b2c3d4e5f60718293a4b5c6d7e8f90",
        "content_hash": "0xb2c3d4e5f60718293a4b5c6d7e8f90a1b2c3d4e5f60718293a4b5c6d7e8f90a1",
        "integrity_hash": "0xc3d4e5f60718293a4b5c6d7e8f90a1b2c3d4e5f60718293a4b5c6d7e8f90a1b2",
        "prev_integrity_hash": "0xd4e5f60718293a4b5c6d7e8f90a1b2c3d4e5f60718293a4b5c6d7e8f90a1b2c3",
        "when_created": "2026-04-02T12:00:00Z",
        "when_modified": "2026-05-11T18:24:00Z"
      },
      "display": {
        "face_id": "665f1c2d4b1a2c3d4e5f6a50",
        "variant": "card",
        "media_type": "image/svg+xml",
        "href": "/public/objects/665f1c2d4b1a2c3d4e5f6a90/display/card",
        "revision": "665f1c2d4b1a2c3d4e5f6a50-2",
        "aspect_ratio": "1/1",
        "interactive": false
      }
    }
  ],
  "objects": []
}
{
  "code": 3,
  "message": "Key: 'limit' Error:Field validation for 'limit' failed on the 'lte' tag"
}
{
  "code": 13,
  "message": "internal error"
}