← Help centre

Integration API, version 1

Read-only, versioned REST for BI tools and other government systems (D-04, D-06). Everything the web app computes, the API serves from the same engine: amounts are naira with two decimal places, as strings, never floating point.

Getting started

  1. Ask a BIMMS administrator for a client. They choose the scopes you may read, optionally restrict you to one MDA, and can issue a test credential for integration work. The token is shown once.
  2. Send it on every request: Authorization: Bearer bimms_live_….
  3. Read the machine-readable reference at /api/v1/openapi.json (OpenAPI 3.1) or the tables below.
curl -H "Authorization: Bearer $BIMMS_TOKEN" \
  "https://bimms.gov.ng/api/v1/ceilings?year=2026&mdaId=12"
{
  "data": { "items": [ { "mdaId": "12", "year": 2026, "allowancePct": "50.00", "igr": "1200000000.00",
    "gru": "150000000.00", "crf": "0.00", "subvention": "500000000.00", "totalFunding": "1250000000.00",
    "budget": "1210000000.00", "headroom": "40000000.00", "isOverdrawn": false, "excess": "0.00" } ], "next": null },
  "meta": { "requestId": "…", "version": "v1" }
}

Conventions

Scopes

referencerevenueexpenditureceilingssubmissionsmtref

Endpoints

GET /api/v1/mdas

Every published MDA (the tenants of the federated installation). Scope reference. Paginated.

ParameterInTypeDescription
limitqueryinteger1 to 500, default 100
cursorquerystringThe `next` value of the previous page
FieldTypeDescription
idstringMDA id
codestringCode
namestringName
fundingTypestringself_funded, partially_funded or fully_funded

GET /api/v1/years

Fiscal years with the state of each exercise (Budget, MTREF, Performance) from the cycle calendar. Scope reference.

FieldTypeDescription
yearintegerFiscal year
exercisesarrayThe exercises of the year
FieldTypeDescription
exercisestringbudget, mtref or performance
isOpenbooleanOpen for entry
phasestringPhase label
deadlinestring (ISO 8601)Deadline, if set

GET /api/v1/accounts

Expenditure accounts with their sub-head, or the revenue accounts of each MDA. Scope reference. Paginated.

ParameterInTypeDescription
kindquerystringexpenditure (default) or revenue
mdaIdquerystringRestrict to one MDA (clients scoped to an MDA need not pass it)
limitqueryinteger1 to 500, default 100
cursorquerystringThe `next` value of the previous page
FieldTypeDescription
idstringAccount id
codestringCode
namestringName
typestringpersonnel, overhead, capital; or the revenue class igr, gru, crf
subheadstringSub-head name
mdaIdstringMDA (revenue accounts only)

GET /api/v1/revenue/projections

Monthly revenue projections per account for a year. Scope revenue. Paginated.

ParameterInTypeDescription
yearqueryintegerFiscal year (default: the open Budget year)
mdaIdquerystringRestrict to one MDA (clients scoped to an MDA need not pass it)
limitqueryinteger1 to 500, default 100
cursorquerystringThe `next` value of the previous page
FieldTypeDescription
idstringRow id
mdaIdstringMDA
accountIdstringRevenue account
accountCodestringAccount code
monthinteger1 to 12
yearintegerFiscal year
amountstring (₦, 2 dp)Projected amount (₦, two decimal places, as a string)

GET /api/v1/revenue/actuals

Monthly revenue actuals per account for a year. Scope revenue. Paginated.

ParameterInTypeDescription
yearqueryintegerFiscal year (default: the open Budget year)
mdaIdquerystringRestrict to one MDA (clients scoped to an MDA need not pass it)
limitqueryinteger1 to 500, default 100
cursorquerystringThe `next` value of the previous page
FieldTypeDescription
idstringRow id
mdaIdstringMDA
accountIdstringRevenue account
accountCodestringAccount code
monthinteger1 to 12
yearintegerFiscal year
amountstring (₦, 2 dp)Actual amount (₦, two decimal places, as a string)

GET /api/v1/expenditure/lines

Personnel, overhead and capital lines (account-based) of one MDA for a year. Scope expenditure.

ParameterInTypeDescription
yearqueryintegerFiscal year (default: the open Budget year)
mdaId *querystringThe MDA
typequerystringpersonnel, overhead or capital (default: all)
FieldTypeDescription
idstringRow id (unique with type)
typestringpersonnel, overhead or capital
mdaIdstringMDA
accountIdstringAccount
accountCodestringAccount code
itemstringItem
categorystringadministrative or developmental
amountstring (₦, 2 dp)Line amount (₦, two decimal places, as a string)

GET /api/v1/expenditure/totals

Per MDA and year: personnel, overhead, capital, programme items and the total budget, from the one ceiling service. Scope expenditure.

ParameterInTypeDescription
yearqueryintegerFiscal year (default: the open Budget year)
mdaIdquerystringRestrict to one MDA (clients scoped to an MDA need not pass it)
FieldTypeDescription
mdaIdstringMDA
yearintegerFiscal year
personnelstring (₦, 2 dp)Personnel lines (₦, two decimal places, as a string)
overheadstring (₦, 2 dp)Overhead lines (₦, two decimal places, as a string)
capitalstring (₦, 2 dp)Capital lines (₦, two decimal places, as a string)
programmesstring (₦, 2 dp)Programme items (₦, two decimal places, as a string)
budgetstring (₦, 2 dp)Total budget B (₦, two decimal places, as a string)

GET /api/v1/ceilings

Per MDA and year: the ceiling inputs, total funding, budget, headroom and overrun, computed live by the engine. Scope ceilings.

ParameterInTypeDescription
yearqueryintegerFiscal year (default: the open Budget year)
mdaIdquerystringRestrict to one MDA (clients scoped to an MDA need not pass it)
FieldTypeDescription
mdaIdstringMDA
yearintegerFiscal year
allowancePctstringp, the allowance percentage (two places)
igrstring (₦, 2 dp)Projected IGR (₦, two decimal places, as a string)
grustring (₦, 2 dp)Projected GRU (₦, two decimal places, as a string)
crfstring (₦, 2 dp)Projected CRF (₦, two decimal places, as a string)
subventionstring (₦, 2 dp)Government subvention (₦, two decimal places, as a string)
totalFundingstring (₦, 2 dp)T, the ceiling (₦, two decimal places, as a string)
budgetstring (₦, 2 dp)B (₦, two decimal places, as a string)
headroomstring (₦, 2 dp)max(T − B, 0) (₦, two decimal places, as a string)
isOverdrawnbooleanB > T
excessstring (₦, 2 dp)B − T when over (₦, two decimal places, as a string)

GET /api/v1/submissions

Per MDA and year: the four submission flags and the frozen state. Scope submissions.

ParameterInTypeDescription
yearqueryintegerFiscal year (default: the open Budget year)
mdaIdquerystringRestrict to one MDA (clients scoped to an MDA need not pass it)
FieldTypeDescription
mdaIdstringMDA
yearintegerFiscal year
revenueProjectionbooleanSubmitted
revenuePerformancebooleanSubmitted
budgetProjectionbooleanSubmitted
budgetPerformancebooleanSubmitted
frozenbooleanFrozen by the Budget Office

GET /api/v1/mtref/projections

For a framework year: revenue, personnel, overhead and capital projections per MDA and projected year, with the workflow state. Scope mtref.

ParameterInTypeDescription
frameworkYearqueryintegerFramework year (default: the current one)
mdaIdquerystringRestrict to one MDA (clients scoped to an MDA need not pass it)
FieldTypeDescription
mdaIdstringMDA
frameworkYearintegerFramework year
workflowstringpending, submitted, received or archived
yearsarrayOne per projected year
FieldTypeDescription
yearintegerProjected year
revenuestring (₦, 2 dp)Σ revenue projections (₦, two decimal places, as a string)
personnelstring (₦, 2 dp)Σ personnel (₦, two decimal places, as a string)
overheadstring (₦, 2 dp)Σ overhead (₦, two decimal places, as a string)
capitalstring (₦, 2 dp)Σ capital (₦, two decimal places, as a string)
totalFundingstring (₦, 2 dp)MTREF ceiling (₦, two decimal places, as a string)
budgetstring (₦, 2 dp)Projected expenditure (₦, two decimal places, as a string)

Worked examples

A year’s submissions for every MDA

GET /api/v1/submissions?year=2026            # one row per MDA: the four flags and frozen
GET /api/v1/mdas?limit=200                   # names and codes to join on mdaId

One MDA’s ceiling and headroom

GET /api/v1/ceilings?year=2026&mdaId=12      # T, B, headroom, isOverdrawn
GET /api/v1/expenditure/totals?year=2026&mdaId=12

All revenue projections, page by page

GET /api/v1/revenue/projections?year=2026&limit=500
GET /api/v1/revenue/projections?year=2026&limit=500&cursor=<next>

Changelog

Back to BIMMS