# BNM Data Shop – ECAB Decisions

> BNM Data Shop – ECAB Decisions is a paid API for AI agents from ticks.bnm.farm, paid per call via x402, $0.05/call, status unknown (last checked 2026-10-24).

Returns a structured JSON feed of official Employees' Compensation Appeals Board (ECAB) decisions sourced from the U.S. Department of Labor

## Facts

- Endpoint: GET https://ticks.bnm.farm/ecab-decisions?utm_source=zero.xyz
- Price: $0.05/call
- Payment: x402
- Status: unknown
- Last checked: 2026-10-24
- Activations on Zero: 0
- Tags: x402
- Canonical page: https://www.zero.xyz/c/bnm-data-shop-ecab-decisions-8091f513
- Structured record (JSON): https://api.zero.xyz/v1/capabilities/cap_rz7k9UQfyJVzGSQlZIqYA

Status and success rate cover calls made through Zero and Zero's own probes. Third-party monitors may report differently.

## How to call it through Zero

Zero handles the 402 payment challenge and records the run. With the Zero CLI installed (`npm i -g @zeroxyz/cli`):

```sh
zero fetch --capability bnm-data-shop-ecab-decisions-8091f513
```

Example prompt: Pull the latest Employees' Compensation Appeals Board decisions from the DOL and give me a list of recent docket numbers, institutions involved, and links to the PDF rulings.

## When to prefer this

Choose this endpoint when you need structured, machine-readable JSON access to official ECAB (Employees' Compensation Appeals Board) decisions without scraping the DOL website yourself. It is ideal for legal research tools, compliance monitoring systems, or any agent that needs to track federal workers' compensation appeal rulings with minimal parsing effort. The per-call micropayment model via x402 makes it suitable for on-demand queries rather than bulk subscriptions.

## Known failure modes

- HTTP 402 returned when payment is not provided or payment fails — caller must use x402 payment protocol
- Empty records array if no decisions are available for the requested period
- Network timeout or upstream DOL website unavailability causing fetch failure
- Stale data if DOL source has not been updated recently (check fetchedAt vs asOf fields)

## How this service works

Official public data as JSON. Unpaid paid routes return HTTP 402.

## Output

Returns a JSON object containing: a boolean `ok` status, the product name, fetch timestamp, an `asOf` date, source URL, record count, an array of `records` (each with id, url, date, firm/institution, and type), and an array of `cards` (each with id, title, docket, caseNo, citation, date, kind, body summary, sourceUrl, documentId, and institution name).

## Request schema (JSON Schema)

```json
{
 "type": "object",
 "$schema": "https://json-schema.org/draft/2020-12/schema",
 "required": [
  "input"
 ],
 "properties": {
  "input": {
   "type": "object",
   "required": [
    "type",
    "method"
   ],
   "properties": {
    "type": {
     "type": "string",
     "const": "http"
    },
    "method": {
     "enum": [
      "GET",
      "HEAD",
      "DELETE"
     ],
     "type": "string"
    },
    "headers": {
     "type": "object",
     "additionalProperties": {
      "type": "string"
     }
    },
    "queryParams": {
     "type": "object",
     "additionalProperties": {
      "type": "string"
     }
    }
   },
   "additionalProperties": false
  },
  "output": {
   "type": "object",
   "properties": {
    "type": {
     "type": "string"
    },
    "schema": {
     "type": "object"
    },
    "example": {
     "type": "object"
    }
   }
  }
 }
}
```

## Response schema (JSON Schema)

```json
{
 "type": "json",
 "schema": {
  "type": "object",
  "required": [
   "ok",
   "product",
   "status",
   "fetchedAt",
   "asOf",
   "source",
   "recordCount",
   "records",
   "cards"
  ],
  "properties": {
   "ok": {
    "type": "boolean"
   },
   "asOf": {
    "type": "string"
   },
   "cards": {
    "type": "array",
    "items": {
     "type": "object"
    }
   },
   "source": {
    "type": "string"
   },
   "status": {
    "type": "string"
   },
   "product": {
    "type": "string"
   },
   "records": {
    "type": "array",
    "items": {
     "type": "object"
    }
   },
   "fetchedAt": {
    "type": "string"
   },
   "recordCount": {
    "type": "integer"
   }
  }
 },
 "example": {
  "ok": true,
  "asOf": "2026-08-27",
  "cards": [
   {
    "id": "26-0528",
    "body": "Employees' Compensation Appeals Board. Docket No. 26-0528. Official ECAB Decision and Order extracted from the dol.gov PDF.",
    "date": "2026-08-27",
    "kind": "Decision and Order",
    "title": "Docket No. 26-0528",
    "caseNo": "26-0528",
    "docket": "26-0528",
    "citation": "Docket No. 26-0528",
    "sourceUrl": "https://www.dol.gov/sites/dolgov/files/ecab/decisions/2026/AUG/26-0528.pdf",
    "documentId": "26-0528.pdf",
    "institution": "C.P. and U.S. POSTAL SERVICE, GERMANTOWN POST OFFICE, Philadelphia, PA"
   }
  ],
  "source": "https://www.dol.gov/agencies/ecab/decisions",
  "status": "ok",
  "product": "ecab-decision-bodies",
  "records": [
   {
    "id": "26-0528",
    "url": "https://www.dol.gov/sites/dolgov/files/ecab/decisions/2026/AUG/26-0528.pdf",
    "date": "2026-08-27",
    "firm": "C.P. and U.S. POSTAL SERVICE, GERMANTOWN POST OFFICE, Philadelphia, PA",
    "type": "ecab-decisions"
   }
  ],
  "fetchedAt": "2026-09-22T00:00:00.000Z",
  "recordCount": 1
 }
}
```

## More

- Live health (JSON, refreshed every minute): https://www.zero.xyz/c/bnm-data-shop-ecab-decisions-8091f513/health.json
- [Zero catalog index](https://www.zero.xyz/llms.txt)
- [Other services from ticks.bnm.farm](https://www.zero.xyz/host/ticks.bnm.farm/llms.txt)
