Subrecipient Watch

API

The same data as the web page, in JSON. Keys are for customers on a contract: ask us for one.

Send your key in the X-API-Key header. The full reference lists every field and lets you try calls.

Add subrecipients

curl -X POST https://subrecipientwatch.com/v1/subrecipients \
  -H "X-API-Key: YOUR_KEY" -H "Content-Type: application/json" \
  -d '{"subrecipients": [{"uei": "ABCD1234EFGH", "name": "Example Food Bank", "aln": "10.568"}]}'

See where everyone stands

curl https://subrecipientwatch.com/v1/status -H "X-API-Key: YOUR_KEY"

Main endpoints

CallWhat it does
POST /v1/import?filename=list.csvRead a spreadsheet sent as the raw body, without saving it
GET /v1/search?name=...Find a UEI from part of a name. Only finds organizations with an audit on file
GET, POST /v1/subrecipientsList or add subrecipients
DELETE /v1/subrecipients/{uei}Remove one
GET, PUT /v1/profileThe names you go by
GET /v1/names-seenNames your subrecipients use for pass-through agencies
GET /v1/statusEvery status from saved data, most urgent first
POST /v1/checkReload from the clearinghouse and save a record for each
GET /v1/todosWhat to do, soonest deadline first
GET /v1/alertsAudits accepted since you started watching
PUT /v1/decisions/{report_id}Record a management decision
GET /v1/records, /v1/verify-recordsYour records, and a check of the whole chain

Limits and errors

Each subrecipient in a request counts toward your per-minute limit. Going over returns 429 with a Retry-After header. A bad key returns 401. If the clearinghouse can't be reached, your list still saves and the response's problem field says why.