Skip to content
BankPulseBETARegulatory intelligence for Indian banking
Section · Developers

Using BankPulse as data, not just a website

BankPulse turns RBI master directions into plain-English points for bankers. This page covers the 11 public resources and endpoints BankPulse already serves live. Most are read-only; one, Ask BankPulse, answers questions. This is a first, honest slice of a fuller API this site is still building.

What is decided, and what is not. Authentication: none -- every path below is a public request today, no key or token required anywhere.. Quotas: not yet defined for the 10 GET resources; /api/ask has one real limit, 60/hour per hashed IP (see its own x-rate-limit).. Change policy: Pre-1.0 (this document is at 0.4.0-slice4). Checked against git history before writing this: every resource and field published in the first version of this document (10 Sep 2026) is still present, unchanged, today -- only new resources have been added (ask_index_meta.json through sitemap.xml on day one, POST /api/ask and /changes.json 12 Sep, /changes/index.json same day). No field has ever been removed or renamed. That said, no formal notice period for a future removal is agreed yet -- while this document is below version 1.0, a field could in principle change without notice, even though none has. A firm minimum-notice commitment for after 1.0 is a founder decision, not yet made.. Licence: "Free to use. No RBI text is copied here." Quotas on the read-only resources, and full redistribution terms beyond that one sentence, are not yet decided -- see the corrections link below if your use needs a clear answer on either.

Every point BankPulse publishes comes from the Reserve Bank of India's own documents at rbi.org.in. No RBI text is copied here.

The machine-readable contract

Everything on this page is generated from one file a machine can read directly: openapi.json (OpenAPI 3.1.0). If this page and that file ever disagree, the file is correct -- this page is only its plain-English reading.

Bulk snapshot

documents.json and mydesk.json are already full corpus dumps. Nothing in them is paged, and nothing is sampled. Both are checked at build time. See each resource's own x-bulk-snapshot note below. No separate bulk-download file or endpoint exists. These two do not need one. A change feed exists too: /changes.json, first published on 12 September 2026. It only adds to its end.

It never rewrites itself. Every recorded change is one numbered event. So a machine can remember the last number it read. It can ask again later and take only what is above that number. A once-a-day bundle exists too. /changes/index.json lists every day. Each day has its own /changes/YYYY-MM-DD.json file. Signed webhooks still do not exist. That is a real gap, and it is not claimed here.

The 11 resources

POST /api/askJSON

Ask BankPulse a question; answered ONLY from BankPulse's own stored plain-English points, never from the model's memory.

Rate limit: 60 requests per hour per hashed requester IP. The limit is RATE_PER_HOUR in src/ask.js. Over the limit the request returns 429-refused below.

GET /ask_index_meta.jsonJSON

Freshness manifest for the answer index that /ask.html searches.

GET /changes.jsonJSON

Every change BankPulse has recorded, one numbered event each, newest first.

GET /changes/index.jsonJSON

Every day the change feed has a bundle for, oldest first, each with a link to that day's own file.

GET /coverage.jsonJSON

Every RBI source BankPulse reads, how often, and when it was last read.

GET /documents.jsonJSON

Every RBI document BankPulse tracks, one row each.

Bulk snapshot: Yes. Every one of the 2022 tracked documents is in this file's "documents" array today. This is checked at build time: the array length equals "tracked". It is not a page and not a sample. No separate dump file or endpoint exists. This GET request already is the full snapshot. It is refreshed on every rebuild (see "generated_at").

GET /feed.xmlXML

RSS 2.0 feed of BankPulse Daily Brief editions.

GET /llms.txttext

Plain-text summary of BankPulse for AI agents and crawlers.

GET /mydesk.jsonJSON

Every RBI document, mapped to the desks and institution kinds it reaches.

Bulk snapshot: Yes. Its "documents" array also holds all 2022 tracked documents. This is checked at build time against documents.json's count. Only the fields differ: desk and institution mapping instead of status and label. It is refreshed on every rebuild (see "generated_ist").

GET /news.jsonJSON

RBI-and-banking news items BankPulse's news page shows.

GET /sitemap.xmlXML

Standard XML sitemap of every live BankPulse URL.

SDK examples

These are real, runnable requests. No key, signup or account is needed for the 10 read-only GET resources below. They use the same https://bankpulse.ai server as the rest of this page. POST /api/ask costs a live model call. Its example is shown here, but it is not run for you. The request shape is exactly what src/ask.js accepts (see /openapi.json).

POST /api/askexample

curl

curl -X POST https://bankpulse.ai/api/ask \
  -H "Content-Type: application/json" \
  -d '{"q": "What is the minimum capital requirement for a small finance bank?"}'

Python

import requests
r = requests.post(
    "https://bankpulse.ai/api/ask",
    json={"q": 'What is the minimum capital requirement for a small finance bank?'},
)
print(r.json())

GET /ask_index_meta.jsonexample

curl

curl https://bankpulse.ai/ask_index_meta.json

Python

import requests
r = requests.get("https://bankpulse.ai/ask_index_meta.json")
data = r.json()
print(data)

GET /changes.jsonexample

curl

curl https://bankpulse.ai/changes.json

Python

import requests
r = requests.get("https://bankpulse.ai/changes.json")
data = r.json()
print(data)

GET /changes/index.jsonexample

curl

curl https://bankpulse.ai/changes/index.json

Python

import requests
r = requests.get("https://bankpulse.ai/changes/index.json")
data = r.json()
print(data)

GET /coverage.jsonexample

curl

curl https://bankpulse.ai/coverage.json

Python

import requests
r = requests.get("https://bankpulse.ai/coverage.json")
data = r.json()
print(data)

GET /documents.jsonexample

curl

curl https://bankpulse.ai/documents.json

Python

import requests
r = requests.get("https://bankpulse.ai/documents.json")
data = r.json()
print(data)

GET /feed.xmlexample

curl

curl https://bankpulse.ai/feed.xml

Python

import requests
r = requests.get("https://bankpulse.ai/feed.xml")
print(r.text)

GET /llms.txtexample

curl

curl https://bankpulse.ai/llms.txt

Python

import requests
r = requests.get("https://bankpulse.ai/llms.txt")
print(r.text)

GET /mydesk.jsonexample

curl

curl https://bankpulse.ai/mydesk.json

Python

import requests
r = requests.get("https://bankpulse.ai/mydesk.json")
data = r.json()
print(data)

GET /news.jsonexample

curl

curl https://bankpulse.ai/news.json

Python

import requests
r = requests.get("https://bankpulse.ai/news.json")
data = r.json()
print(data)

GET /sitemap.xmlexample

curl

curl https://bankpulse.ai/sitemap.xml

Python

import requests
r = requests.get("https://bankpulse.ai/sitemap.xml")
print(r.text)

Where to go

Coverage ledger

Every count published anywhere on this site, and where each one comes from.

Open coverage →

How we verify

The rules every page and every resource here is built and checked by.

Read the methodology →

Tell us about a problem

Found a resource behaving differently from what this page says? Tell us.

Open corrections →