Skip to main content

Documentation Index

Fetch the complete documentation index at: https://docs.canton.network/llms.txt

Use this file to discover all available pages before exploring further.

The JSON API provides an HTTP/REST interface to the Canton Ledger API. In Canton 3.x, it is integrated directly into the participant node and translates JSON HTTP requests into gRPC Ledger API calls.

Quick Reference

PropertyValue
ProtocolHTTP/1.1 + JSON
Default port7575
Underlying APILedger API v2 (gRPC)
AuthenticationJWT Bearer tokens

When to Use the JSON API

The JSON API is the recommended access method when:
  • You’re building browser-based frontends or web applications
  • Your language/framework works better with HTTP/JSON than gRPC
  • You want simpler tooling for development and debugging (curl, Postman, etc.)
  • You’re using the TypeScript/JavaScript Wallet SDK
Use gRPC directly when:
  • You need maximum performance for high-throughput streaming
  • You’re using Java and want the native gRPC experience
  • You need access to gRPC-specific features not exposed via JSON

Key Endpoints

Version Check

curl http://localhost:7575/v2/version

Command Submission

This section was adapted from existing reviewed documentation. Source: canton/3.5/sdk/tutorials/json-api/canton_and_the_json_ledger_api.rst Reviewers: Skip this section. Remove markers after final approval.
curl localhost:7575/v2/commands/submit-and-wait \
  -H "Content-Type: application/json" \
  -d '{
    "commands": [
      {
        "CreateCommand": {
          "createArguments": {
            "issuer": "<partyId>",
            "owner": "<partyId>",
            "name": "Example Asset Name"
          },
          "templateId": "#json-tests:Main:Asset"
        }
      }
    ],
    "userId": "ledger-api-user",
    "commandId": "example-app-create-1234",
    "actAs": ["<partyId>"],
    "readAs": ["<partyId>"]
  }'
Other submission endpoints include /v2/commands/submit-and-wait-for-transaction (returns the full transaction) and /v2/commands/async/submit (returns immediately).

Active Contract Queries

This section was adapted from existing reviewed documentation. Source: canton/3.5/sdk/tutorials/json-api/canton_and_the_json_ledger_api.rst Reviewers: Skip this section. Remove markers after final approval.
curl localhost:7575/v2/state/active-contracts \
  -H "Content-Type: application/json" \
  -d '{
    "eventFormat": {
      "filtersByParty": {},
      "filtersForAnyParty": {
        "cumulative": [
          {
            "identifierFilter": {
              "WildcardFilter": {
                "value": {
                  "includeCreatedEventBlob": true
                }
              }
            }
          }
        ]
      },
      "verbose": false
    },
    "verbose": false,
    "activeAtOffset": 20
  }'

Transaction Streaming

The JSON API supports both HTTP POST and WebSocket connections for streaming updates. Use /v2/updates or /v2/updates/flats for flat transaction streams, and /v2/updates/trees for transaction trees. WebSocket connections use the daml.ws.auth subprotocol.

Configuration

The JSON API is configured via the http-ledger-api section of the participant node’s configuration. In cn-quickstart LocalNet deployments, it is pre-configured and available at http://localhost:7575. The OpenAPI and AsyncAPI specifications are available at runtime:
curl http://localhost:7575/docs/openapi
curl http://localhost:7575/docs/asyncapi

Authentication

Pass a JWT Bearer token in the Authorization header:
curl -H "Authorization: Bearer <token>" http://localhost:7575/v2/...
The token must be valid for the OIDC provider configured for your deployment.