List actions

Everything your organization has done, newest first — the audit trail. Each entry records what was done, who signed it, what it affected, what it cost, and which batch settled it. `status` follows an action to the chain: `pending` while it is waiting to be settled, `completed` once its batch is anchored, `failed` if settling could not be completed. The answer is scoped to the organization your token or key belongs to, so `org_id` is not needed and changes nothing for an ordinary caller. Use `account`, `wallet_id` or the other filters to narrow it further. For the whole network, with no sign-in, call `GET /public/action-logs`.

GET
/ebus/action-logs
AuthorizationBearer <token>

The access token returned after a successful sign-in, sent as Authorization: Bearer <access_token>.

It identifies the person and the organization they are working in, and it lasts about fifteen minutes. When it runs out, use their refresh token at POST /auth/refresh-token instead of asking them to sign in again.

In: header

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.

org_id?string

Return only resources associated with this organization. On protected endpoints, authorization may restrict or replace this value with the credential's active organization.

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.

action_id?string

Return only this action.

hash?string

Return only the action with this hash.

batch_id?string

Return only actions settled in this batch.

wallet_id?string

Return only actions run by this wallet.

object_id?string

Return only actions that touched this object.

account?string

Return only actions run from this address.

status?string

Return only actions in this state: pending, completed or failed.

when_created[$gt]?string

Run strictly after this moment.

Formatdate-time
when_created[$lt]?string

Run strictly before this moment.

Formatdate-time
when_created[$gte]?string

Run at or after this moment.

Formatdate-time
when_created[$lte]?string

Run at or before this moment.

Formatdate-time

Response Body

application/json

application/json

application/json

application/json

curl -X GET "https://api.dual.network/ebus/action-logs"
{
  "action_logs": [
    {
      "id": "665f1c2d4b1a2c3d4e5f6e02",
      "name": "transfer",
      "account": "0x1234567890abcdef1234567890abcdef12345678",
      "controller": "0x9876543210fedcba9876543210fedcba98765432",
      "hash": "0xbb22cc33dd44ee55ff6677889900aabbccddeeff00112233445566778899aabb",
      "message_hash": "0xcc33dd44ee55ff6677889900aabbccddeeff00112233445566778899aabbcc33",
      "nonce": 4,
      "version": 2,
      "status": "completed",
      "batch_id": "665f1c2d4b1a2c3d4e5f6a20",
      "affected_objects": [
        {
          "id": "665f1c2d4b1a2c3d4e5f6a90",
          "template_id": "665f1c2d4b1a2c3d4e5f6a99",
          "state_change_id": "665f1c2d4b1a2c3d4e5f6c90",
          "change_type": "update",
          "prev_state_hash": "0x9f8e7d6c5b4a39281706f5e4d3c2b1a09f8e7d6c5b4a39281706f5e4d3c2b1a0",
          "next_state_hash": "0xa1b2c3d4e5f60718293a4b5c6d7e8f90a1b2c3d4e5f60718293a4b5c6d7e8f90",
          "prev_integrity_hash": "0xd4e5f60718293a4b5c6d7e8f90a1b2c3d4e5f60718293a4b5c6d7e8f90a1b2c3",
          "integrity_hash": "0xc3d4e5f60718293a4b5c6d7e8f90a1b2c3d4e5f60718293a4b5c6d7e8f90a1b2"
        }
      ],
      "auth": {
        "type": "eoa"
      },
      "params": {},
      "token_price": "0.041233000000",
      "base_fee": "0.010000",
      "base_fee_wei": "242527830000000",
      "dynamic_fee": "0.004000",
      "dynamic_fee_wei": "97011130000000",
      "total_fee": "0.014000",
      "total_fee_wei": "339538960000000",
      "when_created": "2026-05-11T18:24:00Z",
      "when_modified": "2026-05-11T18:31:12Z"
    }
  ]
}
{
  "code": 3,
  "message": "Key: 'limit' Error:Field validation for 'limit' failed on the 'lte' tag"
}

{
  "code": 16,
  "message": "no auth provided"
}

{
  "code": 13,
  "message": "internal error"
}