---
updatedAt: 2026-10-02T12:55:07.000Z
agentTools:
  projectIndex: https://docs.ccview.io/llms.txt
---

# Updates Stream

updatesCreated pushes every ledger update, with the transaction content when it is public and the verdict metadata when it is not.

`updatesCreated` emits a batch of ledger updates recorded at the same moment, that is committed transactions on a Canton synchronizer, as CC View indexes them. Each event carries an array of updates. It is the widest stream: transfers, token instructions, traffic purchases, governance votes, reward issuance and app-specific contracts all arrive here.

Use it for transaction monitoring, compliance screening and forensics, where you need to see every action a party takes, including the ones that are not simple transfers.

## Public and private updates

Canton keeps transaction content private to the parties involved. CC View therefore knows two kinds of updates, and the event tells you which one you got:

* **Public update.** The transaction content is visible to CC View, for example a Canton Coin transfer or a DSO governance action. The event carries `public` with the main action and a summary of every ledger event in the update.
* **Private update.** The content is confidential. What CC View knows comes from the synchronizer and the mediator: which parties submitted it, through which venue, how much traffic it consumed and whether it was accepted. The event carries `private`.

An event carries one of the two. The other is `null`. Use the `dataScope` filter to receive only one kind.

## Subscribe

Public updates on mainnet, with the action and the event summaries:

```graphql
subscription Updates {
  updatesCreated(filter: { network: "mainnet", dataScope: PUBLIC }) {
    recordTime
    updateId
    migrationId
    actingParties
    instruments
    public {
      primaryAction
      eventsSummaries
    }
  }
}
```

[Open in GraphiQL ↗](https://ccview.io/graphiql?query=subscription%20Updates%20%7B%0A%20%20updatesCreated%28filter%3A%20%7B%20network%3A%20%22mainnet%22%2C%20dataScope%3A%20PUBLIC%20%7D%29%20%7B%0A%20%20%20%20recordTime%0A%20%20%20%20updateId%0A%20%20%20%20migrationId%0A%20%20%20%20actingParties%0A%20%20%20%20instruments%0A%20%20%20%20public%20%7B%0A%20%20%20%20%20%20primaryAction%0A%20%20%20%20%20%20eventsSummaries%0A%20%20%20%20%7D%0A%20%20%7D%0A%7D)

## Filter

All fields are optional and combine with AND. See [Filters](/reference/streams#filters) for the shared rules.

| Field           | Type               | Matches                                                                                                                       |
| :-------------- | :----------------- | :---------------------------------------------------------------------------------------------------------------------------- |
| `network`       | `String`           | `mainnet`, `testnet` or `devnet`                                                                                              |
| `dataScope`     | `UpdatesDataScope` | `PUBLIC` delivers only updates with a `public` payload, `PRIVATE` only updates with a `private` payload. Omit to receive both |
| `actingParties` | `[String!]`        | Party IDs. An update matches when any of them acted in it                                                                     |
| `instruments`   | `[String!]`        | Instrument (asset issuer) party IDs. An update matches when it touches any of them                                            |

## Event fields

| Field                    | Type            | Meaning                                                                                                                                                                                                                                                                                                                                     |
| :----------------------- | :-------------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| `network`                | `String!`       | Network the update belongs to                                                                                                                                                                                                                                                                                                               |
| `updateId`               | `String!`       | Daml update ID in multihash format: `1220` followed by 64 lowercase hex characters, 68 characters in total                                                                                                                                                                                                                                  |
| `migrationId`            | `Int!`          | Synchronizer migration the update was recorded under. Together with `updateId` it identifies the update on the ledger                                                                                                                                                                                                                       |
| `recordTime`             | `String!`       | Ledger record time, ISO 8601 UTC                                                                                                                                                                                                                                                                                                            |
| `actingParties`          | `[String!]!`    | Party IDs that acted in the update                                                                                                                                                                                                                                                                                                          |
| `instruments`            | `[String!]!`    | Instrument (asset issuer) party IDs touched by the update. Empty when the update does not touch a token                                                                                                                                                                                                                                     |
| `public`                 | `UpdatePublic`  | Set for public updates, otherwise `null`                                                                                                                                                                                                                                                                                                    |
| `public.primaryAction`   | `String!`       | The main action of the transaction. Uses the same taxonomy as [Get update details](/reference/update_details_v1): `transfer`, `token_instruction`, `token_allocation`, `transfer_command`, `traffic_purchase`, `preapproval`, `validator_activity`, `activity_marker`, `governance`, `rewards`, `mining_round`, `amulet_lifecycle`, `other` |
| `public.eventsSummaries` | `String!`       | JSON-encoded array with one summary per ledger event in the update. Parse it with your JSON library                                                                                                                                                                                                                                         |
| `private`                | `UpdatePrivate` | Set for private updates, otherwise `null`                                                                                                                                                                                                                                                                                                   |
| `private.provider`       | `String!`       | Provider party ID of the venue (featured app) that submitted the transaction                                                                                                                                                                                                                                                                |
| `private.senders`        | `[String!]!`    | Party IDs that submitted the transaction                                                                                                                                                                                                                                                                                                    |
| `private.tokens`         | `String`        | JSON-encoded map of the tokens involved, when CC View can tell. Otherwise `null`                                                                                                                                                                                                                                                            |
| `private.trafficInBytes` | `Int`           | Synchronizer traffic the transaction consumed, in bytes                                                                                                                                                                                                                                                                                     |
| `private.verdictResult`  | `String!`       | The mediator's verdict for the transaction                                                                                                                                                                                                                                                                                                  |

## Example message

A public transfer and a private app transaction in one batch. Values are illustrative.

```json
{
  "data": {
    "updatesCreated": [
      {
        "recordTime": "2026-09-30T14:03:11.482913130Z",
        "updateId": "122050503ac262ae61001e430f2ba3ff9b1854b74f78a1a1da1f8f9948640088591f",
        "migrationId": 4,
        "actingParties": ["alice::1220a3f0c2…", "bob::1220c81d9e…"],
        "instruments": [],
        "public": {
          "primaryAction": "transfer",
          "eventsSummaries": "[{\"type\":\"exercised\",\"template\":\"Splice.AmuletRules:AmuletRules\",\"choice\":\"AmuletRules_Transfer\"}]"
        },
        "private": null
      },
      {
        "recordTime": "2026-09-30T14:03:11.982004512Z",
        "updateId": "1220a7c4e1d9b2f6…",
        "migrationId": 4,
        "actingParties": ["venue-1::12203b7a0f…"],
        "instruments": ["issuer-x::1220d44c1a…"],
        "public": null,
        "private": {
          "provider": "venue-1::12203b7a0f…",
          "senders": ["venue-1::12203b7a0f…"],
          "tokens": null,
          "trafficInBytes": 18432,
          "verdictResult": "accepted"
        }
      }
    ]
  }
}
```

## Example: watch a venue's private activity

Filter on `dataScope: PRIVATE` and the venue's party ID. You will see every confidential transaction the venue submits, with its traffic cost and verdict, without seeing the content.

```graphql
subscription PrivateUpdates {
  updatesCreated(
    filter: { network: "mainnet", dataScope: PRIVATE, actingParties: ["venue-1::12203b7a…"] }
  ) {
    recordTime
    updateId
    actingParties
    private {
      provider
      senders
      trafficInBytes
      verdictResult
    }
  }
}
```

[Open in GraphiQL ↗](https://ccview.io/graphiql?query=subscription%20PrivateUpdates%20%7B%0A%20%20updatesCreated%28%0A%20%20%20%20filter%3A%20%7B%20network%3A%20%22mainnet%22%2C%20dataScope%3A%20PRIVATE%2C%20actingParties%3A%20%5B%22venue-1%3A%3A12203b7a%E2%80%A6%22%5D%20%7D%0A%20%20%29%20%7B%0A%20%20%20%20recordTime%0A%20%20%20%20updateId%0A%20%20%20%20actingParties%0A%20%20%20%20private%20%7B%0A%20%20%20%20%20%20provider%0A%20%20%20%20%20%20senders%0A%20%20%20%20%20%20trafficInBytes%0A%20%20%20%20%20%20verdictResult%0A%20%20%20%20%7D%0A%20%20%7D%0A%7D)

## Related REST endpoints

[Updates list](/reference/updates_list_v1) for history and backfill. [Get update details](/reference/update_details_v1) for the enriched view of one update, with a human-readable summary and the action classification. [Verdicts list](/reference/verdicts_v1) for mediator verdicts.