Activity log
Everything that happened on your accounts, in plain English.
List activity #
/v1/activity scope readOne 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
ActivityKindvalues (e.g.place,cancel). - category query · string
Comma-separated
ActivityCategoryvalues (e.g.orders,protection). - outcome query · string
Comma-separated
ActivityOutcomevalues (e.g.failed,partial). - q query · string
Case-insensitive text in the summary or trading symbol (at most 64 characters).
- cursor query · string
next_cursorof the previous page. - limit query · integer (int32)
Page size, at least 1 (default 50; above 200 means 200).
Errors
| HTTP | Code | When |
|---|---|---|
| 400 | invalid_query | The query string does not fit the route's parameters. |
| 401 | unauthorized | No credential, or the credential is invalid, expired or revoked. |
| 403 | forbidden | The credential may not use this route (missing scope, app-session-only route, IP not allowed). |
| 422 | invalid_request | The request is well-formed but not valid; |
| 422 | archive_day_too_large | That day's archived activity is too large to serve at once. |
| 429 | rate_limited | Too many requests for this credential (or too many failed attempts); retry after the |
| 503 | service_unavailable | A dependency is temporarily unavailable, or the feature is off on this server; retry later. |
All fields (request and response schema)
Loading fields…
curl "https://cirrus.pocketful.in/v1/activity" \
-H "Authorization: token $CIRRUS_API_KEY"import os
import requests
response = requests.get(
"https://cirrus.pocketful.in/v1/activity",
headers={
"Authorization": f"token {os.environ['CIRRUS_API_KEY']}",
},
timeout=10,
)
print(response.status_code, response.json())const response = await fetch('https://cirrus.pocketful.in/v1/activity', {
method: 'GET',
headers: {
Authorization: `token ${process.env.CIRRUS_API_KEY}`,
},
});
const body = await response.json();
console.log(response.status, body);{
"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 #
/v1/activity/{id} scope readThe 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
| HTTP | Code | When |
|---|---|---|
| 401 | unauthorized | No credential, or the credential is invalid, expired or revoked. |
| 403 | forbidden | The credential may not use this route (missing scope, app-session-only route, IP not allowed). |
| 404 | activity_not_found | No activity record with this id for the caller. |
| 422 | archive_day_too_large | That day's archived activity is too large to serve at once. |
| 429 | rate_limited | Too many requests for this credential (or too many failed attempts); retry after the |
| 503 | service_unavailable | A dependency is temporarily unavailable, or the feature is off on this server; retry later. |
All fields (request and response schema)
Loading fields…
curl "https://cirrus.pocketful.in/v1/activity/<id>" \
-H "Authorization: token $CIRRUS_API_KEY"import os
import requests
response = requests.get(
"https://cirrus.pocketful.in/v1/activity/<id>",
headers={
"Authorization": f"token {os.environ['CIRRUS_API_KEY']}",
},
timeout=10,
)
print(response.status_code, response.json())const response = await fetch('https://cirrus.pocketful.in/v1/activity/<id>', {
method: 'GET',
headers: {
Authorization: `token ${process.env.CIRRUS_API_KEY}`,
},
});
const body = await response.json();
console.log(response.status, body);{
"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
}