Data sourced from public government portals under NDSAP (National Data Sharing & Accessibility Policy).·This is NOT an official government website.·Powered by Article 19(1)(a) — Right to Information.
⌘K

Developers

Read-only JSON access to the same data this site renders, for all 16 districts of Manipur. There is no API key, no OAuth flow, and no SDK to install — every endpoint is a plain GET you can call from anything that speaks HTTP.

Quickstart

List the districts and their slugs:

curl https://www.yourmanipur.com/api/districts

Then fetch one of them:

curl https://www.yourmanipur.com/api/districts/imphal-west

Live power outages, including recently resolved notices:

curl 'https://www.yourmanipur.com/api/power-outages?includePast=1'

Every response is JSON. There are no query parameters other than includePast on the outage endpoint and deviceId on the feedback list.

Authentication

None. There are no API keys to request, no accounts, and no OAuth. Requests are served from the same origin that serves the website, and the endpoints are open to any client. Please be considerate: these are the same queries the public pages run, against a volunteer-funded database.

Endpoints

EndpointReturns
GET/api/districtsAll 16 districts, with a record count per dataset. Start here — every other path keys on the slug values this returns.
GET/api/districts/{slug}One district, with a short preview of each dataset and the total behind it. The preview is capped — read `_previews` to see by how much — and it is never the whole dataset. Use the dataset path below for that.
GET/api/districts/{slug}/{dataset}One dataset in full, paginated. dataset is schemes, crops, news, budgets or leaders. Never truncates silently: `pagination.total` is the real count. Add ?category=Central to narrow schemes by category prefix.
GET/api/power-outagesLive MSPDCL outage notices. Add ?includePast=1 for resolved ones too.
GET/api/whats-changedA short feed of the most notable recent changes, with severity.
GET/api/data-countTotal records held, and when the site last refreshed successfully.
GET/api/statusFreshness and last outcome per data source. Check this before quoting a figure.
GET/api/feedbackOpen feature requests with vote counts.
POST/api/feedbackReport a wrong figure or suggest a feature. Please only submit on behalf of a person.
POST/api/feedback/voteToggle a vote on a feature request. One vote per device id.

Errors

Every error — including a request to an API path that does not exist — comes back as application/problem+json, shaped as RFC 9457 problem details. You never have to parse HTML or match English prose to find out what went wrong; code is stable and resolution says what to do next.

GET /api/districts/not-a-district

404 Not Found
Content-Type: application/problem+json; charset=utf-8

{
  "type": "https://www.yourmanipur.com/developers#district_not_found",
  "title": "Not found",
  "status": 404,
  "detail": "No district has the slug \"not-a-district\".",
  "instance": "/api/districts/not-a-district",
  "code": "district_not_found",
  "resolution": "District slugs are listed at https://www.yourmanipur.com/api/districts, for example imphal-west."
}

Branch on the code, not on the wording. The codes currently in use:

  • endpoint_not_found — 404 — no such API path.
  • district_not_found — 404 — no district has that slug.
  • dataset_not_found — 404 — no dataset has that name. The datasets are schemes, crops, news, budgets and leaders.
  • invalid_limit — 400 — limit must be a whole number between 1 and 500.
  • invalid_offset — 400 — offset must be a whole number of rows to skip, 0 or more.
  • category_not_supported — 400 — the category filter is available on schemes only.
  • dataset_unavailable — 503 — that district's rows for that dataset could not be read.
  • feature_not_found — 404 — no feature request has that id.
  • invalid_json — 400 — the request body was not valid JSON.
  • unknown_feedback_kind — 400 — kind must be `issue` or `feature`.
  • invalid_body — 400 — body must be 10–4000 characters.
  • invalid_title — 400 — a feature needs a 4–140 character title.
  • invalid_email — 400 — the optional email field did not parse.
  • invalid_feedback_id — 400 — feedbackId must be a positive integer.
  • missing_device_id — 400 — deviceId must be 8–64 characters of A–Z a–z 0–9 or hyphen.
  • daily_limit_reached — 429 — five submissions per device per day.
  • method_not_allowed — 405 — that verb is not supported on this path.
  • districts_unavailable — 503 — the districts table could not be read.
  • district_unavailable — 503 — that district's record could not be read.
  • outages_unavailable — 503 — outage notices could not be read.
  • changes_unavailable — 503 — the change feed could not be assembled.
  • feedback_unavailable — 503 — the feedback table could not be read.

Judging freshness

Most datasets refresh daily and outage notices hourly. Before quoting a figure, check /api/status, which reports the last outcome and timestamp per data source, and /api/data-count for the most recent successful refresh across everything.

An empty array means the site has not verified that data — not that the answer is zero. Please report it as unavailable rather than absent.

Attribution

Your Manipur is an independent citizen project. It is NOT an official government website and is not affiliated with the Government of Manipur or the Government of India. Each record links to the government portal or document it came from, or carries the source it was read from. Attribute the original publisher, not this site — this is an aggregator, and the authority is the department that published the number.

Machine-readable files

  • /openapi.json — OpenAPI 3.1 document describing every endpoint, parameter and error code on this page.
  • /llms.txt — what this site covers, when to use it, and how to call it.
  • /sitemap.xml — every indexable URL.

Sending Accept: text/markdown to any page on this site returns that page as Markdown instead of HTML.