Skip to content
Cirrus home
Sign in

Reference

Accounts and profile

Your linked broker accounts and who the credential belongs to.

Read the guide first

List linked broker accounts #

GET /v1/accounts scope read

Every broker account the user linked, sorted by id, with whether it can trade now (status), what it lacks (missing) and how order updates arrive (updates).

More about this

Never a credential.

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

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/accounts" \
  -H "Authorization: token $CIRRUS_API_KEY"
Response · 200
{
  "status": "success",
  "data": {
    "items": [
      {
        "account": "5P1",
        "broker": "5paisa",
        "broker_name": "5paisa",
        "tag": null,
        "multiplier": 1,
        "supported": true,
        "status": "login_required",
        "missing": [
          {
            "field": "static_ip",
            "label": "Static IP",
            "required": false
          }
        ],
        "updates": "stream",
        "static_ip": null,
        "last_login_at": null,
        "session_expires_at": null,
        "seat_assigned": null,
        "last_update_at": null,
        "protection": {
          "bracket": false,
          "cover": false,
          "gtt": false,
          "gtt_two_leg": false
        },
        "warnings": []
      },
      {
        "account": "MO1",
        "broker": "motilaloswal",
        "broker_name": "Motilal Oswal",
        "tag": null,
        "multiplier": 1,
        "supported": true,
        "status": "login_required",
        "missing": [
          {
            "field": "static_ip",
            "label": "Static IP",
            "required": false
          }
        ],
        "updates": "stream",
        "static_ip": null,
        "last_login_at": null,
        "session_expires_at": null,
        "seat_assigned": null,
        "last_update_at": null,
        "protection": {
          "bracket": false,
          "cover": false,
          "gtt": false,
          "gtt_two_leg": false
        },
        "warnings": []
      },
      {
        "account": "P1",
        "broker": "paper",
        "broker_name": "Paper",
        "tag": null,
        "multiplier": 1,
        "supported": true,
        "status": "ready",
        "missing": [],
        "updates": "postback",
        "static_ip": null,
        "last_login_at": null,
        "session_expires_at": null,
        "seat_assigned": null,
        "last_update_at": null,
        "protection": {
          "bracket": true,
          "cover": true,
          "gtt": true,
          "gtt_two_leg": true
        },
        "warnings": []
      },
      {
        "account": "P2",
        "broker": "paper",
        "broker_name": "Paper",
        "tag": null,
        "multiplier": 2,
        "supported": true,
        "status": "ready",
        "missing": [],
        "updates": "postback",
        "static_ip": null,
        "last_login_at": null,
        "session_expires_at": null,
        "seat_assigned": null,
        "last_update_at": null,
        "protection": {
          "bracket": true,
          "cover": true,
          "gtt": true,
          "gtt_two_leg": true
        },
        "warnings": []
      },
      {
        "account": "PF1",
        "broker": "pocketful",
        "broker_name": "Pocketful",
        "tag": null,
        "multiplier": 1,
        "supported": true,
        "status": "login_required",
        "missing": [],
        "updates": "stream",
        "static_ip": null,
        "last_login_at": null,
        "session_expires_at": null,
        "seat_assigned": null,
        "last_update_at": null,
        "protection": {
          "bracket": true,
          "cover": true,
          "gtt": true,
          "gtt_two_leg": false
        },
        "warnings": []
      },
      {
        "account": "TJ1",
        "broker": "tradejini",
        "broker_name": "Tradejini",
        "tag": null,
        "multiplier": 1,
        "supported": true,
        "status": "ready",
        "missing": [
          {
            "field": "static_ip",
            "label": "Static IP",
            "required": false
          }
        ],
        "updates": "stream",
        "static_ip": null,
        "last_login_at": null,
        "session_expires_at": "2026-10-12T11:31:53Z",
        "seat_assigned": null,
        "last_update_at": "2026-10-12T10:31:53.299825Z",
        "protection": {
          "bracket": true,
          "cover": true,
          "gtt": true,
          "gtt_two_leg": true
        },
        "warnings": []
      },
      {
        "account": "U1",
        "broker": "upstox",
        "broker_name": "Upstox",
        "tag": null,
        "multiplier": 1,
        "supported": true,
        "status": "login_required",
        "missing": [],
        "updates": "stream",
        "static_ip": null,
        "last_login_at": null,
        "session_expires_at": null,
        "seat_assigned": null,
        "last_update_at": null,
        "protection": {
          "bracket": false,
          "cover": false,
          "gtt": false,
          "gtt_two_leg": false
        },
        "warnings": []
      },
      {
        "account": "Z1",
        "broker": "zerodha",
        "broker_name": "Zerodha",
        "tag": null,
        "multiplier": 1,
        "supported": true,
        "status": "setup_incomplete",
        "missing": [
          {
            "field": "api_key",
            "label": "API Key",
            "required": true
          },
          {
            "field": "static_ip",
            "label": "Static IP",
            "required": false
          }
        ],
        "updates": "stream",
        "static_ip": null,
        "last_login_at": null,
        "session_expires_at": null,
        "seat_assigned": null,
        "last_update_at": null,
        "protection": {
          "bracket": false,
          "cover": false,
          "gtt": true,
          "gtt_two_leg": true
        },
        "warnings": []
      }
    ]
  },
  "error": null
}

One linked broker account #

GET /v1/accounts/{account} scope read

The account as in GET /v1/accounts, plus health: what its live worker last reported (order-update stream, polling, last book read, last broker error: its kind and last_error_message, safe to show the user).

Parameters

  • account path · string required

    Account id.

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

404account_not_found

No linked broker account with this id for the caller.

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/accounts/<account>" \
  -H "Authorization: token $CIRRUS_API_KEY"
Response · 200
{
  "status": "success",
  "data": {
    "account": "TJ1",
    "broker": "tradejini",
    "broker_name": "Tradejini",
    "tag": null,
    "multiplier": 1,
    "supported": true,
    "status": "ready",
    "missing": [
      {
        "field": "static_ip",
        "label": "Static IP",
        "required": false
      }
    ],
    "updates": "stream",
    "static_ip": null,
    "last_login_at": null,
    "session_expires_at": "2026-10-06T06:33:54Z",
    "seat_assigned": null,
    "last_update_at": "2026-10-06T05:33:54.471247Z",
    "protection": {
      "bracket": true,
      "cover": true,
      "gtt": true,
      "gtt_two_leg": true
    },
    "warnings": [],
    "health": {
      "stream": "up",
      "polls": false,
      "last_book_read_at": "2026-10-06T05:33:54.471247Z",
      "open_orders": 2,
      "last_error_kind": null,
      "last_error_message": null,
      "last_error_at": null
    }
  },
  "error": null
}

Who am I #

GET /v1/user/profile any credential

The user and the credential of this request (session, API key or partner app) with its scopes.

More about this

Any valid credential may call it, whatever its scopes. Never returns a secret.

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

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/user/profile" \
  -H "Authorization: token $CIRRUS_API_KEY"
Response · 200
{
  "status": "success",
  "data": {
    "username": "user-01M3PGPS465224YW0C5Z5DBNFB",
    "auth": {
      "kind": "api_key",
      "key_id": "ck_sVOtcTpQ3Y5d6VIRAE9Q",
      "name": "Reporting",
      "scopes": [
        "read"
      ],
      "ip_allowlist": [
        "203.0.113.7"
      ]
    }
  },
  "error": null
}