DevelopersDocsAPI reference

API family

Monitoring API

Watch a case or a person and get an event when the next date moves, an order lands, a case is listed or a new case is filed. Prices per month.

A watch tells you when something changes, so you do not poll. Make a watch, register a webhook endpoint, and we send a signed call when an event happens. Watches need the scope watches:write. Prices are in credits (1 credit is ₹1 before GST); see pricing.

How a watch is billed. It is charged for the month it is created in, and then on the 1st of each month it is still active. Delete a watch before the 1st and it is not charged again. There is no refund for the month already charged. A test watch is free.

#The watch object

{
  "object": "watch",
  "id": "wch_41",
  "kind": "case",
  "cnr": "SBXX010000032026",
  "status": "active",
  "livemode": false,
  "charged_month": "2026-12",
  "created_at": "2026-12-01T10:20:00+05:30",
  "cancelled_at": null,
  "error": null
}

A party watch has name and state where a case watch has cnr. status is active or cancelled. charged_month (yyyy-MM) is the last month billed. error says why we could not read the court record yet; we keep trying.

#Watch a case

POST /watches with kind: case · ₹15, then ₹10 from 1,000 a month, ₹6 from 10,000 a month per case a month

Field Meaning
kind case.
cnr The case's CNR. In the sandbox, a sandbox CNR.

You get case.updated, case.next_date_changed, case.disposed, order.published and causelist.listed for this case. An order dated more than a day before you made the watch is old news and is not sent.

curl -X POST https://adv.heliosynctech.com/api/v1/watches \
  -H "Authorization: Bearer $AOS_KEY" -H "Content-Type: application/json" \
  -H "Idempotency-Key: e1f3a5c7-9b2d-4f6a-8c0e-2d4f6a8c0e77" \
  -d '{ "kind": "case", "cnr": "SBXX010000032026" }'

The answer is 201 with the watch object. Watching a case you already watch gives 409 watch_exists. A malformed CNR gives 400 invalid_cnr.

#Watch a person or a company

POST /watches with kind: party · ₹30, then ₹20 from 1,000 a month, ₹12 from 10,000 a month per person or company a month

You get party.new_case when a name that matches appears in a cause list for a case it was not in before. Matching is by name and scored, so send state to cut false matches. A name watch needs a paid account (403 paid_account_required otherwise). Each case is reported once.

Field Meaning
kind party.
name The person's or company's name, at least 3 characters. Not only words like "Ltd" or "M/s".
state Optional: only cases in this State.
curl -X POST https://adv.heliosynctech.com/api/v1/watches \
  -H "Authorization: Bearer $AOS_KEY" -H "Content-Type: application/json" \
  -H "Idempotency-Key: f2a4b6d8-0c3e-4a5b-9d1f-3e5a7c9b1d88" \
  -d '{ "kind": "party", "name": "Sandbox Lender Finance Ltd", "state": "Delhi" }'
{
  "object": "watch",
  "id": "wch_42",
  "kind": "party",
  "name": "Sandbox Lender Finance Ltd",
  "state": "Delhi",
  "status": "active",
  "livemode": false,
  "charged_month": "2026-12",
  "created_at": "2026-12-01T10:22:00+05:30",
  "cancelled_at": null,
  "error": null
}

#List watches

GET /watches · free

Newest first. status is active (the default), cancelled or all; kind is case or party. See pagination.

curl "https://adv.heliosynctech.com/api/v1/watches?limit=20" -H "Authorization: Bearer $AOS_KEY"
{
  "object": "list",
  "data": [
    { "object": "watch", "id": "wch_41", "kind": "case", "cnr": "SBXX010000032026", "status": "active", "livemode": false, "charged_month": "2026-12", "created_at": "2026-12-01T10:20:00+05:30", "cancelled_at": null, "error": null }
  ],
  "has_more": false,
  "next_cursor": null
}

#Get a watch

GET /watches/{id} · free

curl https://adv.heliosynctech.com/api/v1/watches/wch_41 -H "Authorization: Bearer $AOS_KEY"

The response is the watch object. An unknown id, or one from the other mode, gives 404 watch_not_found.

#Delete a watch

DELETE /watches/{id} · free

Stops the watch. No future month is charged; the month already charged is not refunded. Deleting a watch that is already cancelled does nothing more.

curl -X DELETE https://adv.heliosynctech.com/api/v1/watches/wch_41 -H "Authorization: Bearer $AOS_KEY"
{
  "object": "watch",
  "id": "wch_41",
  "kind": "case",
  "cnr": "SBXX010000032026",
  "status": "cancelled",
  "livemode": false,
  "charged_month": "2026-12",
  "created_at": "2026-12-01T10:20:00+05:30",
  "cancelled_at": "2026-12-03T09:00:00+05:30",
  "error": null,
  "deleted": true
}

#Test a watch

A test watch reads the Sandbox High Court, which has no clock of its own: its date is the AOS-Sandbox-Date header. So events do not appear by themselves. They appear when the sandbox date moves forward.

  1. Watch SBXX010000032026, which gets a new order every sandbox day.
  2. Make GET /events or GET /watches with a later AOS-Sandbox-Date than the watch was made on. That call first works out what changed between the two days (a new next date, a disposal, each new order) and writes the events, then answers.
  3. Read the events from the same call, or receive them on your test webhook endpoint.

A watch made on a day sees nothing until the date moves on. Send an earlier date and the watch starts again from there.

curl -X POST https://adv.heliosynctech.com/api/v1/watches -H "Authorization: Bearer $AOS_KEY" -H "Content-Type: application/json" \
  -H "AOS-Sandbox-Date: 2026-12-01" -d '{ "kind": "case", "cnr": "SBXX010000032026" }'

curl "https://adv.heliosynctech.com/api/v1/events?type=order.published" -H "Authorization: Bearer $AOS_KEY" \
  -H "AOS-Sandbox-Date: 2026-12-02"

The second call returns one order.published event: the order of 2026-12-02.

Party watches have no sandbox clock. In test mode a party watch emits nothing on its own. Send its event yourself with POST /sandbox/events and { "type": "party.new_case" }; see sandbox. The whole path is in case watch with webhooks.

#Webhook endpoints and the event log

These are free and have their own pages: webhooks (POST/GET/DELETE /webhook-endpoints, POST /webhook-endpoints/{id}/test) and events (GET /events).