Skip to content
Cirrus home
Sign in

Reference

Activity log

Everything that happened on your accounts, in plain English.

List activity #

GET /v1/activity scope read

One trading day (IST) of the activity log, newest first, in pages.

More about this

Filters combine (all must match); comma-separated lists match any of their values. Follow next_cursor (same filters) for older records of the same day. Older days are read from the archive (source: archive).

Parameters

  • date query · string

    Trading day YYYY-MM-DD (IST); today when absent.

  • account query · string

    Only records touching this account.

  • kind query · string

    Comma-separated ActivityKind values (e.g. place,cancel).

  • category query · string

    Comma-separated ActivityCategory values (e.g. orders,protection).

  • outcome query · string

    Comma-separated ActivityOutcome values (e.g. failed,partial).

  • q query · string

    Case-insensitive text in the summary or trading symbol (at most 64 characters).

  • cursor query · string

    next_cursor of the previous page.

  • limit query · integer (int32)

    Page size, at least 1 (default 50; above 200 means 200).

Errors

HTTPCodeWhen
400invalid_query

The query string does not fit the route's parameters.

401unauthorized

No credential, or the credential is invalid, expired or revoked.

403forbidden

The credential may not use this route (missing scope, app-session-only route, IP not allowed).

422invalid_request

The request is well-formed but not valid; field names the input.

422archive_day_too_large

That day's archived activity is too large to serve at once.

429rate_limited

Too many requests for this credential (or too many failed attempts); retry after the Retry-After header (seconds; error.retry_after_ms has the exact wait).

503service_unavailable

A dependency is temporarily unavailable, or the feature is off on this server; retry later.

All fields (request and response schema)

Loading fields…

GET
curl "https://cirrus.pocketful.in/v1/activity" \
  -H "Authorization: token $CIRRUS_API_KEY"
Response · 200
{
  "status": "success",
  "data": {
    "items": [
      {
        "id": "01M3PGPRWR6RMS9VYDQ90Q95M0",
        "username": "user-01M3PGPRRXJXKS3Q5N25300QP8",
        "at": "2026-09-29T12:02:21.716530834Z",
        "kind": "place",
        "category": "orders",
        "source": {
          "type": "app",
          "name": null
        },
        "request_id": "01M3PGPRWMV115PQ1R6W895V26",
        "instrument": {
          "tradingsymbol": "RELIANCE-EQ",
          "exchange": "NSE",
          "instrument_token": "CT:TEST:RELIANCE"
        },
        "side": "BUY",
        "order_type": "LIMIT",
        "product": "DELIVERY",
        "quantity": 1,
        "price": 2500,
        "trigger_price": null,
        "summary": "Buy 1 RELIANCE-EQ at ₹2,500 (Limit) in 1 account",
        "message": null,
        "outcome": "ok",
        "duration_ms": 3,
        "accounts": [
          {
            "account": "P1",
            "broker": "paper",
            "status": "placed",
            "order_ids": [
              "PAPER-1"
            ],
            "message": null,
            "broker_message": null,
            "duration_ms": 1,
            "route": "direct"
          }
        ]
      }
    ],
    "next_cursor": null,
    "source": "hot"
  },
  "error": null
}

One activity record #

GET /v1/activity/{id} scope read

The record with its timeline: every step of the orders it touched (from the order journal), oldest first.

More about this

Archived records are found by the day in their id.

Parameters

  • id path · string required

    Record id (a ULID).

Errors

HTTPCodeWhen
401unauthorized

No credential, or the credential is invalid, expired or revoked.

403forbidden

The credential may not use this route (missing scope, app-session-only route, IP not allowed).

404activity_not_found

No activity record with this id for the caller.

422archive_day_too_large

That day's archived activity is too large to serve at once.

429rate_limited

Too many requests for this credential (or too many failed attempts); retry after the Retry-After header (seconds; error.retry_after_ms has the exact wait).

503service_unavailable

A dependency is temporarily unavailable, or the feature is off on this server; retry later.

All fields (request and response schema)

Loading fields…

GET
curl "https://cirrus.pocketful.in/v1/activity/<id>" \
  -H "Authorization: token $CIRRUS_API_KEY"
Response · 200
{
  "status": "success",
  "data": {
    "id": "01M3PGPRWRQPP9GNWXSEW2GAFV",
    "username": "user-01M3PGPRRYG21TSFPDP2ERRR0C",
    "at": "2026-09-29T12:02:21.716502084Z",
    "kind": "place",
    "category": "orders",
    "source": {
      "type": "app",
      "name": null
    },
    "request_id": "01M3PGPRWMR7F3JB6C1HH2DTQF",
    "instrument": {
      "tradingsymbol": "RELIANCE-EQ",
      "exchange": "NSE",
      "instrument_token": "CT:TEST:RELIANCE"
    },
    "side": "BUY",
    "order_type": "LIMIT",
    "product": "DELIVERY",
    "quantity": 1,
    "price": 2500,
    "trigger_price": null,
    "summary": "Buy 1 RELIANCE-EQ at ₹2,500 (Limit) in 1 account",
    "message": null,
    "outcome": "ok",
    "duration_ms": 3,
    "accounts": [
      {
        "account": "P1",
        "broker": "paper",
        "status": "placed",
        "order_ids": [
          "PAPER-1"
        ],
        "message": null,
        "broker_message": null,
        "duration_ms": 1,
        "route": "direct"
      }
    ],
    "timeline": [
      {
        "at": "2026-09-29T12:02:22.825542Z",
        "account": "P1",
        "order_id": "PAPER-1",
        "state": "OPEN",
        "message": null,
        "filled_qty": 0,
        "average_price": null
      },
      {
        "at": "2026-09-29T12:02:23.825542Z",
        "account": "P1",
        "order_id": "PAPER-1",
        "state": "FILLED",
        "message": null,
        "filled_qty": 1,
        "average_price": 2499.5
      }
    ]
  },
  "error": null
}