API reference · Savings & everyday money

Budget

Category budgets, auto-categorisation and spending goals. About budgets & goals Live

POST Create a budget

POST /budget

Created paused, in DRAFT - it counts nothing until you activate it, so you can set the categories up first. A monthly budget runs on your cycle start day, so set that to 25 in your budget settings and your month runs payday to payday.

Headers

NameNotes
AuthorizationBearer token
X-TenantYour tenant
X-Environmenttest or live
Content-Typeapplication/json

Query parameters

NameDefault
ownerTypeOptional
ownerReferenceOptional

Example

Request body: BudgetRequest · Response: BudgetResponse

curl -X POST "https://api.bridgemoni.com/budget?ownerType=value&ownerReference=value" \
  -H "Authorization: Bearer $BRIDGEMONI_TOKEN" \
  -H "X-Tenant: $BRIDGEMONI_TENANT" \
  -H "X-Environment: $BRIDGEMONI_ENV" \
  -H "Content-Type: application/json" \
  -d '{
    "name": "Ada Obi",
    "description": "March payroll",
    "currencyCode": "NGN",
    "periodType": "DAILY",
    "startDate": "2027-03-14",
    "endDate": "2027-03-14",
    "limitAmount": 250000.0,
    "rolloverMode": "NONE",
    "alertThresholds": [
      1
    ],
    "categories": [
      {
        "categoryReference": "b3f1c2d4-5e6a-4b7c-8d9e-0f1a2b3c4d5e",
        "allocationAmount": 250000.0
      }
    ],
    "includeInternalTransfers": true,
    "enforcementMode": "text",
    "enforcedAccountReference": "b3f1c2d4-5e6a-4b7c-8d9e-0f1a2b3c4d5e",
    "categoryReference": "b3f1c2d4-5e6a-4b7c-8d9e-0f1a2b3c4d5e",
    "allocationAmount": 250000.0
  }'

Responses

StatusWhen
200Budget created
400A limit of zero, or a bad window
409You already have a budget by that name

GET Money in against money out

GET /budget/analytics/cashflow

Month by month, oldest first. Months with no activity appear as zero rather than being left out, so a chart does not show a gap where a quiet month was.

Headers

NameNotes
AuthorizationBearer token
X-TenantYour tenant
X-Environmenttest or live

Query parameters

NameDefault
ownerTypeOptional
ownerReferenceOptional
currencyCodeOptional
periods6

Example

Response: CashflowResponse

curl -X GET "https://api.bridgemoni.com/budget/analytics/cashflow?ownerType=value&ownerReference=value&currencyCode=value&periods=6" \
  -H "Authorization: Bearer $BRIDGEMONI_TOKEN" \
  -H "X-Tenant: $BRIDGEMONI_TENANT" \
  -H "X-Environment: $BRIDGEMONI_ENV"

Responses

StatusWhen
200Cashflow retrieved successfully
400Owner could not be determined
403You cannot act for that owner

GET Where a budget is heading

GET /budget/analytics/forecast

If you carry on spending at the rate you have so far. A run rate, not a prediction - it is withheld entirely in the first few percent of a cycle, when one payment would project to something absurd, and the volatility figure says how much to trust it after that.

Headers

NameNotes
AuthorizationBearer token
X-TenantYour tenant
X-Environmenttest or live

Query parameters

NameDefault
ownerTypeOptional
ownerReferenceOptional
budgetReferenceOptional

Example

Response: BudgetForecastResponse

curl -X GET "https://api.bridgemoni.com/budget/analytics/forecast?ownerType=value&ownerReference=value&budgetReference=value" \
  -H "Authorization: Bearer $BRIDGEMONI_TOKEN" \
  -H "X-Tenant: $BRIDGEMONI_TENANT" \
  -H "X-Environment: $BRIDGEMONI_ENV"

Responses

StatusWhen
200Forecast returned
404No such budget, or it has no cycle running

GET Where a month's money went

GET /budget/analytics/spend-by-category

Each category set against the same category last month, so you can see what moved rather than only what things cost.

Headers

NameNotes
AuthorizationBearer token
X-TenantYour tenant
X-Environmenttest or live

Query parameters

NameDefault
ownerTypeOptional
ownerReferenceOptional
currencyCodeOptional
periodKeyOptional

Example

Response: SpendByCategoryResponse

curl -X GET "https://api.bridgemoni.com/budget/analytics/spend-by-category?ownerType=value&ownerReference=value&currencyCode=value&periodKey=value" \
  -H "Authorization: Bearer $BRIDGEMONI_TOKEN" \
  -H "X-Tenant: $BRIDGEMONI_TENANT" \
  -H "X-Environment: $BRIDGEMONI_ENV"

Responses

StatusWhen
200Spend by category retrieved successfully
400Owner could not be determined
403You cannot act for that owner

GET The dashboard call

GET /budget/analytics/summary

Totals for the window, your largest categories, and how each running budget is doing. Defaults to this month so far.

Headers

NameNotes
AuthorizationBearer token
X-TenantYour tenant
X-Environmenttest or live

Query parameters

NameDefault
ownerTypeOptional
ownerReferenceOptional
currencyCodeOptional
fromOptional
toOptional

Example

Response: SpendSummaryResponse

curl -X GET "https://api.bridgemoni.com/budget/analytics/summary?ownerType=value&ownerReference=value&currencyCode=value&from=value&to=value" \
  -H "Authorization: Bearer $BRIDGEMONI_TOKEN" \
  -H "X-Tenant: $BRIDGEMONI_TENANT" \
  -H "X-Environment: $BRIDGEMONI_ENV"

Responses

StatusWhen
200Spending summary retrieved successfully
400Owner could not be determined
403You cannot act for that owner

GET Who you paid most

GET /budget/analytics/top-counterparties

Grouped by who was paid rather than by the exact narrative, so the same shop counts once however many receipts it produced. That grouping is approximate: two unrelated payees can occasionally share a label.

Headers

NameNotes
AuthorizationBearer token
X-TenantYour tenant
X-Environmenttest or live

Query parameters

NameDefault
ownerTypeOptional
ownerReferenceOptional
currencyCodeOptional
fromOptional
toOptional
limit10

Example

Response: TopCounterpartiesResponse

curl -X GET "https://api.bridgemoni.com/budget/analytics/top-counterparties?ownerType=value&ownerReference=value&currencyCode=value&from=value&to=value&limit=10" \
  -H "Authorization: Bearer $BRIDGEMONI_TOKEN" \
  -H "X-Tenant: $BRIDGEMONI_TENANT" \
  -H "X-Environment: $BRIDGEMONI_ENV"

Responses

StatusWhen
200Top counterparties retrieved successfully
400Owner could not be determined
403You cannot act for that owner

GET One category over time

GET /budget/analytics/trend

With how much it varies month to month. A large variation next to the average means the average is not something to plan against.

Headers

NameNotes
AuthorizationBearer token
X-TenantYour tenant
X-Environmenttest or live

Query parameters

NameDefault
ownerTypeOptional
ownerReferenceOptional
currencyCodeOptional
categoryReferenceOptional
periods12

Example

Response: CategoryTrendResponse

curl -X GET "https://api.bridgemoni.com/budget/analytics/trend?ownerType=value&ownerReference=value&currencyCode=value&categoryReference=value&periods=12" \
  -H "Authorization: Bearer $BRIDGEMONI_TOKEN" \
  -H "X-Tenant: $BRIDGEMONI_TENANT" \
  -H "X-Environment: $BRIDGEMONI_ENV"

Responses

StatusWhen
200Trend returned
404No such category

GET List categories

GET /budget/categories

Everything this owner can file against: the catalogue seeded with the tenant, plus their own. Sorted by display order.

Headers

NameNotes
AuthorizationBearer token
X-TenantYour tenant
X-Environmenttest or live

Query parameters

NameDefault
ownerTypeOptional
ownerReferenceOptional
kindOptional
activeOnlytrue

Example

Response: List<BudgetCategoryResponse>

curl -X GET "https://api.bridgemoni.com/budget/categories?ownerType=value&ownerReference=value&kind=value&activeOnly=true" \
  -H "Authorization: Bearer $BRIDGEMONI_TOKEN" \
  -H "X-Tenant: $BRIDGEMONI_TENANT" \
  -H "X-Environment: $BRIDGEMONI_ENV"

POST Create a category

POST /budget/category

Adds a category of your own. The code must not collide with one of yours or with a seeded one, because rules address categories by code and a collision would make every rule naming it ambiguous.

Headers

NameNotes
AuthorizationBearer token
X-TenantYour tenant
X-Environmenttest or live
Content-Typeapplication/json

Query parameters

NameDefault
ownerTypeOptional
ownerReferenceOptional

Example

Request body: BudgetCategoryRequest · Response: BudgetCategoryResponse

curl -X POST "https://api.bridgemoni.com/budget/category?ownerType=value&ownerReference=value" \
  -H "Authorization: Bearer $BRIDGEMONI_TOKEN" \
  -H "X-Tenant: $BRIDGEMONI_TENANT" \
  -H "X-Environment: $BRIDGEMONI_ENV" \
  -H "Content-Type: application/json" \
  -d '{
    "code": "text",
    "name": "Ada Obi",
    "description": "March payroll",
    "kind": "EXPENSE",
    "parentCategoryReference": "b3f1c2d4-5e6a-4b7c-8d9e-0f1a2b3c4d5e",
    "iconUrl": "text",
    "colourHex": "text",
    "displayOrder": 1
  }'

Responses

StatusWhen
200Category created
409That code is already in use
400A parent of the wrong kind, or itself a child

DELETE Retire a category

DELETE /budget/category/{reference}

Stops offering the category without removing it. The spending already filed under it keeps saying where it went, which is the whole reason nothing here is deleted.

Headers

NameNotes
AuthorizationBearer token
X-TenantYour tenant
X-Environmenttest or live

Path parameters

Name
reference

Query parameters

NameDefault
ownerTypeOptional
ownerReferenceOptional

Example

Response: Void

curl -X DELETE "https://api.bridgemoni.com/budget/category/b3f1c2d4-5e6a-4b7c-8d9e-0f1a2b3c4d5e?ownerType=value&ownerReference=value" \
  -H "Authorization: Bearer $BRIDGEMONI_TOKEN" \
  -H "X-Tenant: $BRIDGEMONI_TENANT" \
  -H "X-Environment: $BRIDGEMONI_ENV"

Responses

StatusWhen
200Category retired
409It still has children
403A seeded category cannot be retired

GET Read one category

GET /budget/category/{reference}

Headers

NameNotes
AuthorizationBearer token
X-TenantYour tenant
X-Environmenttest or live

Path parameters

Name
reference

Query parameters

NameDefault
ownerTypeOptional
ownerReferenceOptional

Example

Response: BudgetCategoryResponse

curl -X GET "https://api.bridgemoni.com/budget/category/b3f1c2d4-5e6a-4b7c-8d9e-0f1a2b3c4d5e?ownerType=value&ownerReference=value" \
  -H "Authorization: Bearer $BRIDGEMONI_TOKEN" \
  -H "X-Tenant: $BRIDGEMONI_TENANT" \
  -H "X-Environment: $BRIDGEMONI_ENV"

Responses

StatusWhen
200Category returned
404No such category - also returned for one belonging to somebody else, deliberately

PUT Edit a category

PUT /budget/category/{reference}

Only your own. Seeded categories are shared by the whole tenant and are fixed.

Headers

NameNotes
AuthorizationBearer token
X-TenantYour tenant
X-Environmenttest or live
Content-Typeapplication/json

Path parameters

Name
reference

Query parameters

NameDefault
ownerTypeOptional
ownerReferenceOptional

Example

Request body: BudgetCategoryRequest · Response: BudgetCategoryResponse

curl -X PUT "https://api.bridgemoni.com/budget/category/b3f1c2d4-5e6a-4b7c-8d9e-0f1a2b3c4d5e?ownerType=value&ownerReference=value" \
  -H "Authorization: Bearer $BRIDGEMONI_TOKEN" \
  -H "X-Tenant: $BRIDGEMONI_TENANT" \
  -H "X-Environment: $BRIDGEMONI_ENV" \
  -H "Content-Type: application/json" \
  -d '{
    "code": "text",
    "name": "Ada Obi",
    "description": "March payroll",
    "kind": "EXPENSE",
    "parentCategoryReference": "b3f1c2d4-5e6a-4b7c-8d9e-0f1a2b3c4d5e",
    "iconUrl": "text",
    "colourHex": "text",
    "displayOrder": 1
  }'

Responses

StatusWhen
200Category updated
403A seeded category cannot be edited

POST Record a cash expense

POST /budget/expense

For money spent outside the platform. Everything else is recorded for you. A budget that silently ignores cash is not one you can trust.

Headers

NameNotes
AuthorizationBearer token
X-TenantYour tenant
X-Environmenttest or live
Content-Typeapplication/json

Query parameters

NameDefault
ownerTypeOptional
ownerReferenceOptional

Example

Request body: ManualExpenseRequest · Response: ExpenseResponse

curl -X POST "https://api.bridgemoni.com/budget/expense?ownerType=value&ownerReference=value" \
  -H "Authorization: Bearer $BRIDGEMONI_TOKEN" \
  -H "X-Tenant: $BRIDGEMONI_TENANT" \
  -H "X-Environment: $BRIDGEMONI_ENV" \
  -H "Content-Type: application/json" \
  -d '{
    "amount": 250000.0,
    "currencyCode": "NGN",
    "categoryReference": "b3f1c2d4-5e6a-4b7c-8d9e-0f1a2b3c4d5e",
    "narrative": "text",
    "postingDateTime": "2027-03-14T14:30:01",
    "notes": "text",
    "receiptDocumentReference": "b3f1c2d4-5e6a-4b7c-8d9e-0f1a2b3c4d5e"
  }'

Responses

StatusWhen
200Expense recorded
400A future date, or a non-positive amount
404No such category

DELETE Delete a cash expense

DELETE /budget/expense/{reference}

Only one you entered by hand. A recorded payment cannot be deleted - exclude it instead, so your budget and your statement keep saying the same thing.

Headers

NameNotes
AuthorizationBearer token
X-TenantYour tenant
X-Environmenttest or live

Path parameters

Name
reference

Query parameters

NameDefault
ownerTypeOptional
ownerReferenceOptional

Example

Response: Void

curl -X DELETE "https://api.bridgemoni.com/budget/expense/b3f1c2d4-5e6a-4b7c-8d9e-0f1a2b3c4d5e?ownerType=value&ownerReference=value" \
  -H "Authorization: Bearer $BRIDGEMONI_TOKEN" \
  -H "X-Tenant: $BRIDGEMONI_TENANT" \
  -H "X-Environment: $BRIDGEMONI_ENV"

Responses

StatusWhen
200Expense deleted
409A recorded payment cannot be deleted

GET Read one expense

GET /budget/expense/{reference}

Headers

NameNotes
AuthorizationBearer token
X-TenantYour tenant
X-Environmenttest or live

Path parameters

Name
reference

Query parameters

NameDefault
ownerTypeOptional
ownerReferenceOptional

Example

Response: ExpenseResponse

curl -X GET "https://api.bridgemoni.com/budget/expense/b3f1c2d4-5e6a-4b7c-8d9e-0f1a2b3c4d5e?ownerType=value&ownerReference=value" \
  -H "Authorization: Bearer $BRIDGEMONI_TOKEN" \
  -H "X-Tenant: $BRIDGEMONI_TENANT" \
  -H "X-Environment: $BRIDGEMONI_ENV"

Responses

StatusWhen
200Expense retrieved successfully
400Owner could not be determined
403You cannot act for that owner
404Expense not found

PUT Annotate or exclude an expense

PUT /budget/expense/{reference}

Notes, a receipt, and whether it counts towards your budgets. The amount, date and narrative are not editable on a recorded payment - they are what the ledger says happened, and an editable copy would let your budget disagree with your statement.

Headers

NameNotes
AuthorizationBearer token
X-TenantYour tenant
X-Environmenttest or live
Content-Typeapplication/json

Path parameters

Name
reference

Query parameters

NameDefault
ownerTypeOptional
ownerReferenceOptional

Example

Request body: UpdateExpenseRequest · Response: ExpenseResponse

curl -X PUT "https://api.bridgemoni.com/budget/expense/b3f1c2d4-5e6a-4b7c-8d9e-0f1a2b3c4d5e?ownerType=value&ownerReference=value" \
  -H "Authorization: Bearer $BRIDGEMONI_TOKEN" \
  -H "X-Tenant: $BRIDGEMONI_TENANT" \
  -H "X-Environment: $BRIDGEMONI_ENV" \
  -H "Content-Type: application/json" \
  -d '{
    "notes": "text",
    "receiptDocumentReference": "b3f1c2d4-5e6a-4b7c-8d9e-0f1a2b3c4d5e",
    "excludedFromBudget": true
  }'

Responses

StatusWhen
200Expense updated successfully
400Owner could not be determined
403You cannot act for that owner
404Expense not found

POST File an expense somewhere else

POST /budget/expense/{reference}/categorise

Your choice always wins, and nothing the system learns later will overrule it. Ask for a rule and payments to the same place go there automatically from now on; ask for a backfill as well and your recent ones are re-filed too - but only the ones you have not already categorised yourself, and only a bounded number of them. The response says exactly how many moved.

Headers

NameNotes
AuthorizationBearer token
X-TenantYour tenant
X-Environmenttest or live
Content-Typeapplication/json

Path parameters

Name
reference

Query parameters

NameDefault
ownerTypeOptional
ownerReferenceOptional

Example

Request body: RecategoriseExpenseRequest · Response: RecategoriseExpenseResponse

curl -X POST "https://api.bridgemoni.com/budget/expense/b3f1c2d4-5e6a-4b7c-8d9e-0f1a2b3c4d5e/categorise?ownerType=value&ownerReference=value" \
  -H "Authorization: Bearer $BRIDGEMONI_TOKEN" \
  -H "X-Tenant: $BRIDGEMONI_TENANT" \
  -H "X-Environment: $BRIDGEMONI_ENV" \
  -H "Content-Type: application/json" \
  -d '{
    "categoryReference": "b3f1c2d4-5e6a-4b7c-8d9e-0f1a2b3c4d5e",
    "createRule": true,
    "backfill": true
  }'

Responses

StatusWhen
200Expense re-filed
400The category is not an expense category
404No such expense or category

GET List spending

GET /budget/expenses

Newest first. Includes internal transfers and anything you have excluded - they are marked rather than hidden, so the list still reconciles against your statement.

Headers

NameNotes
AuthorizationBearer token
X-TenantYour tenant
X-Environmenttest or live

Query parameters

NameDefault
ownerTypeOptional
ownerReferenceOptional
categoryOptional
fromOptional
toOptional
page0
size20

Example

Response: PageResponse<ExpenseResponse>

curl -X GET "https://api.bridgemoni.com/budget/expenses?ownerType=value&ownerReference=value&category=value&from=value&to=value&page=0&size=20" \
  -H "Authorization: Bearer $BRIDGEMONI_TOKEN" \
  -H "X-Tenant: $BRIDGEMONI_TENANT" \
  -H "X-Environment: $BRIDGEMONI_ENV"

Responses

StatusWhen
200Expenses retrieved successfully
400Owner could not be determined
403You cannot act for that owner

POST Create a savings goal

POST /budget/goal

No money moves yet, and no savings account is opened until your first contribution - a goal nobody funds should not leave an empty account behind.

Headers

NameNotes
AuthorizationBearer token
X-TenantYour tenant
X-Environmenttest or live
Content-Typeapplication/json

Query parameters

NameDefault
ownerTypeOptional
ownerReferenceOptional

Example

Request body: GoalRequest · Response: GoalResponse

curl -X POST "https://api.bridgemoni.com/budget/goal?ownerType=value&ownerReference=value" \
  -H "Authorization: Bearer $BRIDGEMONI_TOKEN" \
  -H "X-Tenant: $BRIDGEMONI_TENANT" \
  -H "X-Environment: $BRIDGEMONI_ENV" \
  -H "Content-Type: application/json" \
  -d '{
    "name": "Ada Obi",
    "description": "March payroll",
    "currencyCode": "NGN",
    "targetAmount": 250000.0,
    "targetDate": "2027-03-14",
    "categoryReference": "b3f1c2d4-5e6a-4b7c-8d9e-0f1a2b3c4d5e",
    "imageUrl": "text",
    "autoContributeAmount": 250000.0,
    "autoContributeFrequency": "text",
    "priority": 1
  }'

Responses

StatusWhen
200Goal created
400A target of zero, or a date in the past
409You already have a goal by that name

GET Read a goal

GET /budget/goal/{reference}

With how far along it is and, if you set a target date, what you would need to put aside each month to arrive on time.

Headers

NameNotes
AuthorizationBearer token
X-TenantYour tenant
X-Environmenttest or live

Path parameters

Name
reference

Query parameters

NameDefault
ownerTypeOptional
ownerReferenceOptional

Example

Response: GoalResponse

curl -X GET "https://api.bridgemoni.com/budget/goal/b3f1c2d4-5e6a-4b7c-8d9e-0f1a2b3c4d5e?ownerType=value&ownerReference=value" \
  -H "Authorization: Bearer $BRIDGEMONI_TOKEN" \
  -H "X-Tenant: $BRIDGEMONI_TENANT" \
  -H "X-Environment: $BRIDGEMONI_ENV"

Responses

StatusWhen
200Savings goal retrieved successfully
400Owner could not be determined
403You cannot act for that owner
404Savings goal not found

PUT Edit a goal

PUT /budget/goal/{reference}

Raising the target on a goal you had already met puts it back in progress - a goal that reports as done while short of its own target would be lying.

Headers

NameNotes
AuthorizationBearer token
X-TenantYour tenant
X-Environmenttest or live
Content-Typeapplication/json

Path parameters

Name
reference

Query parameters

NameDefault
ownerTypeOptional
ownerReferenceOptional

Example

Request body: GoalRequest · Response: GoalResponse

curl -X PUT "https://api.bridgemoni.com/budget/goal/b3f1c2d4-5e6a-4b7c-8d9e-0f1a2b3c4d5e?ownerType=value&ownerReference=value" \
  -H "Authorization: Bearer $BRIDGEMONI_TOKEN" \
  -H "X-Tenant: $BRIDGEMONI_TENANT" \
  -H "X-Environment: $BRIDGEMONI_ENV" \
  -H "Content-Type: application/json" \
  -d '{
    "name": "Ada Obi",
    "description": "March payroll",
    "currencyCode": "NGN",
    "targetAmount": 250000.0,
    "targetDate": "2027-03-14",
    "categoryReference": "b3f1c2d4-5e6a-4b7c-8d9e-0f1a2b3c4d5e",
    "imageUrl": "text",
    "autoContributeAmount": 250000.0,
    "autoContributeFrequency": "text",
    "priority": 1
  }'

Responses

StatusWhen
200Savings goal updated successfully
400Owner could not be determined; Goal target is invalid
403You cannot act for that owner
404Savings goal not found
409A goal with that name already exists; Goal cannot move to that state

POST Abandon a goal

POST /budget/goal/{reference}/cancel

Everything it holds goes back to your main account first. Terminal - the goal never runs again.

Headers

NameNotes
AuthorizationBearer token
X-TenantYour tenant
X-Environmenttest or live

Path parameters

Name
reference

Query parameters

NameDefault
ownerTypeOptional
ownerReferenceOptional

Example

Response: GoalResponse

curl -X POST "https://api.bridgemoni.com/budget/goal/b3f1c2d4-5e6a-4b7c-8d9e-0f1a2b3c4d5e/cancel?ownerType=value&ownerReference=value" \
  -H "Authorization: Bearer $BRIDGEMONI_TOKEN" \
  -H "X-Tenant: $BRIDGEMONI_TENANT" \
  -H "X-Environment: $BRIDGEMONI_ENV"

Responses

StatusWhen
200Goal abandoned and its money returned
409It is already closed

POST Put money into a goal

POST /budget/goal/{reference}/contribute

Moves money out of your main account. Send an Idempotency-Key header: this posts a real transfer, and a retry without one moves the money twice. Your savings account is opened on the first contribution.

Headers

NameNotes
AuthorizationBearer token
X-TenantYour tenant
X-Environmenttest or live
Idempotency-KeyReuse the same value on every retry of this request
Content-Typeapplication/json

Path parameters

Name
reference

Query parameters

NameDefault
ownerTypeOptional
ownerReferenceOptional

Example

Request body: GoalContributionRequest · Response: GoalResponse

curl -X POST "https://api.bridgemoni.com/budget/goal/b3f1c2d4-5e6a-4b7c-8d9e-0f1a2b3c4d5e/contribute?ownerType=value&ownerReference=value" \
  -H "Authorization: Bearer $BRIDGEMONI_TOKEN" \
  -H "X-Tenant: $BRIDGEMONI_TENANT" \
  -H "X-Environment: $BRIDGEMONI_ENV" \
  -H "Idempotency-Key: a-unique-key-per-intent" \
  -H "Content-Type: application/json" \
  -d '{
    "amount": 250000.0,
    "currencyCode": "NGN",
    "note": "text"
  }'

Responses

StatusWhen
200Money moved
400A non-positive amount, or the wrong currency
404You have no main account in that currency
409The goal is paused, cancelled or withdrawn

GET List a goal's movements

GET /budget/goal/{reference}/contributions

Newest first, each naming the transfer it rode on.

Headers

NameNotes
AuthorizationBearer token
X-TenantYour tenant
X-Environmenttest or live

Path parameters

Name
reference

Query parameters

NameDefault
ownerTypeOptional
ownerReferenceOptional
page0
size20

Example

Response: PageResponse<GoalContributionResponse>

curl -X GET "https://api.bridgemoni.com/budget/goal/b3f1c2d4-5e6a-4b7c-8d9e-0f1a2b3c4d5e/contributions?ownerType=value&ownerReference=value&page=0&size=20" \
  -H "Authorization: Bearer $BRIDGEMONI_TOKEN" \
  -H "X-Tenant: $BRIDGEMONI_TENANT" \
  -H "X-Environment: $BRIDGEMONI_ENV"

Responses

StatusWhen
200Goal contributions retrieved successfully
400Owner could not be determined
403You cannot act for that owner
404Savings goal not found

POST Pause a goal

POST /budget/goal/{reference}/pause

Stops any scheduled contributions. The money stays where it is - pausing does not empty the goal.

Headers

NameNotes
AuthorizationBearer token
X-TenantYour tenant
X-Environmenttest or live

Path parameters

Name
reference

Query parameters

NameDefault
ownerTypeOptional
ownerReferenceOptional

Example

Response: GoalResponse

curl -X POST "https://api.bridgemoni.com/budget/goal/b3f1c2d4-5e6a-4b7c-8d9e-0f1a2b3c4d5e/pause?ownerType=value&ownerReference=value" \
  -H "Authorization: Bearer $BRIDGEMONI_TOKEN" \
  -H "X-Tenant: $BRIDGEMONI_TENANT" \
  -H "X-Environment: $BRIDGEMONI_ENV"

Responses

StatusWhen
200Savings goal paused successfully
400Owner could not be determined
403You cannot act for that owner
404Savings goal not found
409Goal cannot move to that state

POST Resume a paused goal

POST /budget/goal/{reference}/resume

Headers

NameNotes
AuthorizationBearer token
X-TenantYour tenant
X-Environmenttest or live

Path parameters

Name
reference

Query parameters

NameDefault
ownerTypeOptional
ownerReferenceOptional

Example

Response: GoalResponse

curl -X POST "https://api.bridgemoni.com/budget/goal/b3f1c2d4-5e6a-4b7c-8d9e-0f1a2b3c4d5e/resume?ownerType=value&ownerReference=value" \
  -H "Authorization: Bearer $BRIDGEMONI_TOKEN" \
  -H "X-Tenant: $BRIDGEMONI_TENANT" \
  -H "X-Environment: $BRIDGEMONI_ENV"

Responses

StatusWhen
200Savings goal resumed successfully
400Owner could not be determined
403You cannot act for that owner
404Savings goal not found
409Goal cannot move to that state

POST Take money back out of a goal

POST /budget/goal/{reference}/withdraw

Refused for more than this goal holds, even when your savings account has more in it - the rest belongs to your other goals.

Headers

NameNotes
AuthorizationBearer token
X-TenantYour tenant
X-Environmenttest or live
Idempotency-KeyReuse the same value on every retry of this request
Content-Typeapplication/json

Path parameters

Name
reference

Query parameters

NameDefault
ownerTypeOptional
ownerReferenceOptional

Example

Request body: GoalContributionRequest · Response: GoalResponse

curl -X POST "https://api.bridgemoni.com/budget/goal/b3f1c2d4-5e6a-4b7c-8d9e-0f1a2b3c4d5e/withdraw?ownerType=value&ownerReference=value" \
  -H "Authorization: Bearer $BRIDGEMONI_TOKEN" \
  -H "X-Tenant: $BRIDGEMONI_TENANT" \
  -H "X-Environment: $BRIDGEMONI_ENV" \
  -H "Idempotency-Key: a-unique-key-per-intent" \
  -H "Content-Type: application/json" \
  -d '{
    "amount": 250000.0,
    "currencyCode": "NGN",
    "note": "text"
  }'

Responses

StatusWhen
200Money moved back
409This goal does not hold that much

GET List savings goals

GET /budget/goals

In your chosen order.

Headers

NameNotes
AuthorizationBearer token
X-TenantYour tenant
X-Environmenttest or live

Query parameters

NameDefault
ownerTypeOptional
ownerReferenceOptional
statusOptional
page0
size20

Example

Response: PageResponse<GoalResponse>

curl -X GET "https://api.bridgemoni.com/budget/goals?ownerType=value&ownerReference=value&status=value&page=0&size=20" \
  -H "Authorization: Bearer $BRIDGEMONI_TOKEN" \
  -H "X-Tenant: $BRIDGEMONI_TENANT" \
  -H "X-Environment: $BRIDGEMONI_ENV"

POST Record income received outside the platform

POST /budget/income

Cash, or money paid to an account this platform does not see.

Headers

NameNotes
AuthorizationBearer token
X-TenantYour tenant
X-Environmenttest or live
Content-Typeapplication/json

Query parameters

NameDefault
ownerTypeOptional
ownerReferenceOptional

Example

Request body: ManualIncomeRequest · Response: IncomeResponse

curl -X POST "https://api.bridgemoni.com/budget/income?ownerType=value&ownerReference=value" \
  -H "Authorization: Bearer $BRIDGEMONI_TOKEN" \
  -H "X-Tenant: $BRIDGEMONI_TENANT" \
  -H "X-Environment: $BRIDGEMONI_ENV" \
  -H "Content-Type: application/json" \
  -d '{
    "amount": 250000.0,
    "currencyCode": "NGN",
    "categoryReference": "b3f1c2d4-5e6a-4b7c-8d9e-0f1a2b3c4d5e",
    "narrative": "text",
    "postingDateTime": "2027-03-14T14:30:01",
    "incomeSource": "text",
    "notes": "text"
  }'

Responses

StatusWhen
200Income recorded
400A future date, or a non-positive amount
404No such category

DELETE Delete a manually recorded income entry

DELETE /budget/income/{reference}

Only one you entered by hand. A recorded credit cannot be deleted.

Headers

NameNotes
AuthorizationBearer token
X-TenantYour tenant
X-Environmenttest or live

Path parameters

Name
reference

Query parameters

NameDefault
ownerTypeOptional
ownerReferenceOptional

Example

Response: Void

curl -X DELETE "https://api.bridgemoni.com/budget/income/b3f1c2d4-5e6a-4b7c-8d9e-0f1a2b3c4d5e?ownerType=value&ownerReference=value" \
  -H "Authorization: Bearer $BRIDGEMONI_TOKEN" \
  -H "X-Tenant: $BRIDGEMONI_TENANT" \
  -H "X-Environment: $BRIDGEMONI_ENV"

Responses

StatusWhen
200Income deleted
409A recorded credit cannot be deleted

GET Read one income record

GET /budget/income/{reference}

Headers

NameNotes
AuthorizationBearer token
X-TenantYour tenant
X-Environmenttest or live

Path parameters

Name
reference

Query parameters

NameDefault
ownerTypeOptional
ownerReferenceOptional

Example

Response: IncomeResponse

curl -X GET "https://api.bridgemoni.com/budget/income/b3f1c2d4-5e6a-4b7c-8d9e-0f1a2b3c4d5e?ownerType=value&ownerReference=value" \
  -H "Authorization: Bearer $BRIDGEMONI_TOKEN" \
  -H "X-Tenant: $BRIDGEMONI_TENANT" \
  -H "X-Environment: $BRIDGEMONI_ENV"

Responses

StatusWhen
200Income retrieved successfully
400Owner could not be determined
403You cannot act for that owner
404Income entry not found

PUT Edit an income record

PUT /budget/income/{reference}

Its category, what kind of income it is, notes, and whether it counts towards your cashflow. The amount and date of a recorded credit are not editable.

Headers

NameNotes
AuthorizationBearer token
X-TenantYour tenant
X-Environmenttest or live
Content-Typeapplication/json

Path parameters

Name
reference

Query parameters

NameDefault
ownerTypeOptional
ownerReferenceOptional

Example

Request body: UpdateIncomeRequest · Response: IncomeResponse

curl -X PUT "https://api.bridgemoni.com/budget/income/b3f1c2d4-5e6a-4b7c-8d9e-0f1a2b3c4d5e?ownerType=value&ownerReference=value" \
  -H "Authorization: Bearer $BRIDGEMONI_TOKEN" \
  -H "X-Tenant: $BRIDGEMONI_TENANT" \
  -H "X-Environment: $BRIDGEMONI_ENV" \
  -H "Content-Type: application/json" \
  -d '{
    "categoryReference": "b3f1c2d4-5e6a-4b7c-8d9e-0f1a2b3c4d5e",
    "incomeSource": "text",
    "notes": "text",
    "excludedFromBudget": true
  }'

Responses

StatusWhen
200Income updated successfully
400Owner could not be determined; Category is the wrong kind
403You cannot act for that owner
404Category not found; Income entry not found

GET List income

GET /budget/incomes

Newest first.

Headers

NameNotes
AuthorizationBearer token
X-TenantYour tenant
X-Environmenttest or live

Query parameters

NameDefault
ownerTypeOptional
ownerReferenceOptional
fromOptional
toOptional
page0
size20

Example

Response: PageResponse<IncomeResponse>

curl -X GET "https://api.bridgemoni.com/budget/incomes?ownerType=value&ownerReference=value&from=value&to=value&page=0&size=20" \
  -H "Authorization: Bearer $BRIDGEMONI_TOKEN" \
  -H "X-Tenant: $BRIDGEMONI_TENANT" \
  -H "X-Environment: $BRIDGEMONI_ENV"

Responses

StatusWhen
200Income retrieved successfully
400Owner could not be determined
403You cannot act for that owner

GET Read budget settings

GET /budget/profile

Returns the owner's budget settings, creating them with their defaults if this is the first time anyone has asked. Never 404s for a person who has simply never used the module.

Headers

NameNotes
AuthorizationBearer token
X-TenantYour tenant
X-Environmenttest or live

Query parameters

NameDefault
ownerTypeOptional
ownerReferenceOptional

Example

Response: BudgetProfileResponse

curl -X GET "https://api.bridgemoni.com/budget/profile?ownerType=value&ownerReference=value" \
  -H "Authorization: Bearer $BRIDGEMONI_TOKEN" \
  -H "X-Tenant: $BRIDGEMONI_TENANT" \
  -H "X-Environment: $BRIDGEMONI_ENV"

Responses

StatusWhen
200Settings returned
403The caller may not act for that owner

PUT Change budget settings

PUT /budget/profile

Every field is optional. An omitted field is left as it is rather than reset, so a client that knows about one setting cannot silently clear the others.

Headers

NameNotes
AuthorizationBearer token
X-TenantYour tenant
X-Environmenttest or live
Content-Typeapplication/json

Query parameters

NameDefault
ownerTypeOptional
ownerReferenceOptional

Example

Request body: BudgetProfileRequest · Response: BudgetProfileResponse

curl -X PUT "https://api.bridgemoni.com/budget/profile?ownerType=value&ownerReference=value" \
  -H "Authorization: Bearer $BRIDGEMONI_TOKEN" \
  -H "X-Tenant: $BRIDGEMONI_TENANT" \
  -H "X-Environment: $BRIDGEMONI_ENV" \
  -H "Content-Type: application/json" \
  -d '{
    "baseCurrencyCode": "NGN",
    "cycleStartDay": 1,
    "weekStartsOn": 1,
    "autoCategorisationEnabled": true,
    "countSavingsAsExpense": true,
    "includeInternalTransfers": true
  }'

Responses

StatusWhen
200Settings updated
400A cycle day or week start outside its range
403The caller may not act for that owner

POST Create a rule

POST /budget/rule

The match value has to fit the match type: a known transaction type, an account reference, a keyword of at least three characters, a merchant label, or "min:max" for an amount window. A value that could never match is refused rather than accepted and silently ignored.

Headers

NameNotes
AuthorizationBearer token
X-TenantYour tenant
X-Environmenttest or live
Content-Typeapplication/json

Query parameters

NameDefault
ownerTypeOptional
ownerReferenceOptional

Example

Request body: CategorisationRuleRequest · Response: CategorisationRuleResponse

curl -X POST "https://api.bridgemoni.com/budget/rule?ownerType=value&ownerReference=value" \
  -H "Authorization: Bearer $BRIDGEMONI_TOKEN" \
  -H "X-Tenant: $BRIDGEMONI_TENANT" \
  -H "X-Environment: $BRIDGEMONI_ENV" \
  -H "Content-Type: application/json" \
  -d '{
    "matchType": "VALUE",
    "matchValue": "text",
    "categoryReference": "b3f1c2d4-5e6a-4b7c-8d9e-0f1a2b3c4d5e",
    "priority": 1,
    "active": true
  }'

Responses

StatusWhen
200Rule created
400The match value does not fit the match type
409You already have a rule matching that

POST Try a rule before saving it

POST /budget/rule/preview

Runs the rule against your recent spending and reports what it would have claimed, without writing anything. Worth doing: the failure mode of a rule is silence - one that is too broad quietly swallows half the month, and one that never matches looks exactly like the feature being broken. Compare matchCount against examinedCount to tell the two apart.

Headers

NameNotes
AuthorizationBearer token
X-TenantYour tenant
X-Environmenttest or live
Content-Typeapplication/json

Query parameters

NameDefault
ownerTypeOptional
ownerReferenceOptional

Example

Request body: CategorisationRuleRequest · Response: RulePreviewResponse

curl -X POST "https://api.bridgemoni.com/budget/rule/preview?ownerType=value&ownerReference=value" \
  -H "Authorization: Bearer $BRIDGEMONI_TOKEN" \
  -H "X-Tenant: $BRIDGEMONI_TENANT" \
  -H "X-Environment: $BRIDGEMONI_ENV" \
  -H "Content-Type: application/json" \
  -d '{
    "matchType": "VALUE",
    "matchValue": "text",
    "categoryReference": "b3f1c2d4-5e6a-4b7c-8d9e-0f1a2b3c4d5e",
    "priority": 1,
    "active": true
  }'

Responses

StatusWhen
200Preview computed; nothing was saved
400The match value does not fit the match type

DELETE Delete a rule

DELETE /budget/rule/{reference}

Really deleted, unlike a category. Nothing depends on a rule - the spending it classified already stores its category - so removing it changes nothing already filed.

Headers

NameNotes
AuthorizationBearer token
X-TenantYour tenant
X-Environmenttest or live

Path parameters

Name
reference

Query parameters

NameDefault
ownerTypeOptional
ownerReferenceOptional

Example

Response: Void

curl -X DELETE "https://api.bridgemoni.com/budget/rule/b3f1c2d4-5e6a-4b7c-8d9e-0f1a2b3c4d5e?ownerType=value&ownerReference=value" \
  -H "Authorization: Bearer $BRIDGEMONI_TOKEN" \
  -H "X-Tenant: $BRIDGEMONI_TENANT" \
  -H "X-Environment: $BRIDGEMONI_ENV"

Responses

StatusWhen
200Categorisation rule deleted successfully
400Owner could not be determined
403You cannot act for that owner; System rules cannot be changed
404Categorisation rule not found

GET Read one rule

GET /budget/rule/{reference}

Headers

NameNotes
AuthorizationBearer token
X-TenantYour tenant
X-Environmenttest or live

Path parameters

Name
reference

Query parameters

NameDefault
ownerTypeOptional
ownerReferenceOptional

Example

Response: CategorisationRuleResponse

curl -X GET "https://api.bridgemoni.com/budget/rule/b3f1c2d4-5e6a-4b7c-8d9e-0f1a2b3c4d5e?ownerType=value&ownerReference=value" \
  -H "Authorization: Bearer $BRIDGEMONI_TOKEN" \
  -H "X-Tenant: $BRIDGEMONI_TENANT" \
  -H "X-Environment: $BRIDGEMONI_ENV"

Responses

StatusWhen
200Categorisation rule retrieved successfully
400Owner could not be determined
403You cannot act for that owner
404Categorisation rule not found

PUT Edit a rule

PUT /budget/rule/{reference}

Headers

NameNotes
AuthorizationBearer token
X-TenantYour tenant
X-Environmenttest or live
Content-Typeapplication/json

Path parameters

Name
reference

Query parameters

NameDefault
ownerTypeOptional
ownerReferenceOptional

Example

Request body: CategorisationRuleRequest · Response: CategorisationRuleResponse

curl -X PUT "https://api.bridgemoni.com/budget/rule/b3f1c2d4-5e6a-4b7c-8d9e-0f1a2b3c4d5e?ownerType=value&ownerReference=value" \
  -H "Authorization: Bearer $BRIDGEMONI_TOKEN" \
  -H "X-Tenant: $BRIDGEMONI_TENANT" \
  -H "X-Environment: $BRIDGEMONI_ENV" \
  -H "Content-Type: application/json" \
  -d '{
    "matchType": "VALUE",
    "matchValue": "text",
    "categoryReference": "b3f1c2d4-5e6a-4b7c-8d9e-0f1a2b3c4d5e",
    "priority": 1,
    "active": true
  }'

Responses

StatusWhen
200Rule updated
403A seeded rule cannot be edited

GET List your rules

GET /budget/rules

In evaluation order. Includes rules learned from your own corrections, marked LEARNED, with the expense that taught each one. The tenant's seeded chain is not listed - it is not yours.

Headers

NameNotes
AuthorizationBearer token
X-TenantYour tenant
X-Environmenttest or live

Query parameters

NameDefault
ownerTypeOptional
ownerReferenceOptional

Example

Response: List<CategorisationRuleResponse>

curl -X GET "https://api.bridgemoni.com/budget/rules?ownerType=value&ownerReference=value" \
  -H "Authorization: Bearer $BRIDGEMONI_TOKEN" \
  -H "X-Tenant: $BRIDGEMONI_TENANT" \
  -H "X-Environment: $BRIDGEMONI_ENV"

Responses

StatusWhen
200Categorisation rules retrieved successfully
400Owner could not be determined
403You cannot act for that owner

GET Read a budget

GET /budget/{reference}

With the cycle in progress: what you have spent, what is left, and what the cycle is on course to total if you carry on at this rate.

Headers

NameNotes
AuthorizationBearer token
X-TenantYour tenant
X-Environmenttest or live

Path parameters

Name
reference

Query parameters

NameDefault
ownerTypeOptional
ownerReferenceOptional

Example

Response: BudgetResponse

curl -X GET "https://api.bridgemoni.com/budget/b3f1c2d4-5e6a-4b7c-8d9e-0f1a2b3c4d5e?ownerType=value&ownerReference=value" \
  -H "Authorization: Bearer $BRIDGEMONI_TOKEN" \
  -H "X-Tenant: $BRIDGEMONI_TENANT" \
  -H "X-Environment: $BRIDGEMONI_ENV"

Responses

StatusWhen
200Budget retrieved successfully
400Owner could not be determined
403You cannot act for that owner
404Budget not found

PUT Edit a budget

PUT /budget/{reference}

A changed limit applies from the next cycle, not the one you are in. The cycle in progress fixed its cap when it opened, and moving it now would make a warning you have already had look wrong.

Headers

NameNotes
AuthorizationBearer token
X-TenantYour tenant
X-Environmenttest or live
Content-Typeapplication/json

Path parameters

Name
reference

Query parameters

NameDefault
ownerTypeOptional
ownerReferenceOptional

Example

Request body: BudgetRequest · Response: BudgetResponse

curl -X PUT "https://api.bridgemoni.com/budget/b3f1c2d4-5e6a-4b7c-8d9e-0f1a2b3c4d5e?ownerType=value&ownerReference=value" \
  -H "Authorization: Bearer $BRIDGEMONI_TOKEN" \
  -H "X-Tenant: $BRIDGEMONI_TENANT" \
  -H "X-Environment: $BRIDGEMONI_ENV" \
  -H "Content-Type: application/json" \
  -d '{
    "name": "Ada Obi",
    "description": "March payroll",
    "currencyCode": "NGN",
    "periodType": "DAILY",
    "startDate": "2027-03-14",
    "endDate": "2027-03-14",
    "limitAmount": 250000.0,
    "rolloverMode": "NONE",
    "alertThresholds": [
      1
    ],
    "categories": [
      {
        "categoryReference": "b3f1c2d4-5e6a-4b7c-8d9e-0f1a2b3c4d5e",
        "allocationAmount": 250000.0
      }
    ],
    "includeInternalTransfers": true,
    "enforcementMode": "text",
    "enforcedAccountReference": "b3f1c2d4-5e6a-4b7c-8d9e-0f1a2b3c4d5e",
    "categoryReference": "b3f1c2d4-5e6a-4b7c-8d9e-0f1a2b3c4d5e",
    "allocationAmount": 250000.0
  }'

Responses

StatusWhen
200Budget updated successfully
400An account is required to enforce this budget; Budget limit is invalid; Owner could not be determined; Category is the wrong kind
403You cannot act for that owner
404Budget not found; Category not found; Limit rule not found
409A budget with that name already exists; This budget cannot be enforced; Budget cannot move to that state

POST Start a budget counting

POST /budget/{reference}/activate

Opens the cycle covering today, so it starts tracking immediately.

Headers

NameNotes
AuthorizationBearer token
X-TenantYour tenant
X-Environmenttest or live

Path parameters

Name
reference

Query parameters

NameDefault
ownerTypeOptional
ownerReferenceOptional

Example

Response: BudgetResponse

curl -X POST "https://api.bridgemoni.com/budget/b3f1c2d4-5e6a-4b7c-8d9e-0f1a2b3c4d5e/activate?ownerType=value&ownerReference=value" \
  -H "Authorization: Bearer $BRIDGEMONI_TOKEN" \
  -H "X-Tenant: $BRIDGEMONI_TENANT" \
  -H "X-Environment: $BRIDGEMONI_ENV"

Responses

StatusWhen
200Budget activated
409It is archived, or already running

POST Retire a budget

POST /budget/{reference}/archive

Terminal. Its history stays readable, but it never runs again.

Headers

NameNotes
AuthorizationBearer token
X-TenantYour tenant
X-Environmenttest or live

Path parameters

Name
reference

Query parameters

NameDefault
ownerTypeOptional
ownerReferenceOptional

Example

Response: BudgetResponse

curl -X POST "https://api.bridgemoni.com/budget/b3f1c2d4-5e6a-4b7c-8d9e-0f1a2b3c4d5e/archive?ownerType=value&ownerReference=value" \
  -H "Authorization: Bearer $BRIDGEMONI_TOKEN" \
  -H "X-Tenant: $BRIDGEMONI_TENANT" \
  -H "X-Environment: $BRIDGEMONI_ENV"

Responses

StatusWhen
200Budget archived successfully
400Owner could not be determined
403You cannot act for that owner
404Budget not found; Limit rule not found
409Budget cannot move to that state

POST Stop a budget counting

POST /budget/{reference}/pause

The cycle in progress keeps its figures and stays readable.

Headers

NameNotes
AuthorizationBearer token
X-TenantYour tenant
X-Environmenttest or live

Path parameters

Name
reference

Query parameters

NameDefault
ownerTypeOptional
ownerReferenceOptional

Example

Response: BudgetResponse

curl -X POST "https://api.bridgemoni.com/budget/b3f1c2d4-5e6a-4b7c-8d9e-0f1a2b3c4d5e/pause?ownerType=value&ownerReference=value" \
  -H "Authorization: Bearer $BRIDGEMONI_TOKEN" \
  -H "X-Tenant: $BRIDGEMONI_TENANT" \
  -H "X-Environment: $BRIDGEMONI_ENV"

Responses

StatusWhen
200Budget paused successfully
400Owner could not be determined
403You cannot act for that owner
404Budget not found; Limit rule not found
409Budget cannot move to that state

GET Read one cycle

GET /budget/{reference}/period

The cycle in progress by default, or a past one by its key.

Headers

NameNotes
AuthorizationBearer token
X-TenantYour tenant
X-Environmenttest or live

Path parameters

Name
reference

Query parameters

NameDefault
ownerTypeOptional
ownerReferenceOptional
periodKeyOptional

Example

Response: BudgetPeriodResponse

curl -X GET "https://api.bridgemoni.com/budget/b3f1c2d4-5e6a-4b7c-8d9e-0f1a2b3c4d5e/period?ownerType=value&ownerReference=value&periodKey=value" \
  -H "Authorization: Bearer $BRIDGEMONI_TOKEN" \
  -H "X-Tenant: $BRIDGEMONI_TENANT" \
  -H "X-Environment: $BRIDGEMONI_ENV"

Responses

StatusWhen
200Cycle returned
404That budget has no cycle for that key

GET List a budget's cycles

GET /budget/{reference}/periods

Newest first.

Headers

NameNotes
AuthorizationBearer token
X-TenantYour tenant
X-Environmenttest or live

Path parameters

Name
reference

Query parameters

NameDefault
ownerTypeOptional
ownerReferenceOptional
page0
size20

Example

Response: PageResponse<BudgetPeriodResponse>

curl -X GET "https://api.bridgemoni.com/budget/b3f1c2d4-5e6a-4b7c-8d9e-0f1a2b3c4d5e/periods?ownerType=value&ownerReference=value&page=0&size=20" \
  -H "Authorization: Bearer $BRIDGEMONI_TOKEN" \
  -H "X-Tenant: $BRIDGEMONI_TENANT" \
  -H "X-Environment: $BRIDGEMONI_ENV"

Responses

StatusWhen
200Budget periods retrieved successfully
400Owner could not be determined
403You cannot act for that owner
404Budget not found

GET List budgets

GET /budgets

Without the current cycle on each row - that is one query per budget, and a list of twenty would issue twenty. Read a single budget to get its figures.

Headers

NameNotes
AuthorizationBearer token
X-TenantYour tenant
X-Environmenttest or live

Query parameters

NameDefault
ownerTypeOptional
ownerReferenceOptional
statusOptional
page0
size20

Example

Response: PageResponse<BudgetResponse>

curl -X GET "https://api.bridgemoni.com/budgets?ownerType=value&ownerReference=value&status=value&page=0&size=20" \
  -H "Authorization: Bearer $BRIDGEMONI_TOKEN" \
  -H "X-Tenant: $BRIDGEMONI_TENANT" \
  -H "X-Environment: $BRIDGEMONI_ENV"

Generated from the OpenAPI document. Branch on the HTTP status: there is no machine-readable error code on the wire. Errors