Modern Treasury Ledger API
The Ledger API from Modern Treasury — 2 operation(s) for ledger.
The Ledger API from Modern Treasury — 2 operation(s) for ledger.
Every API here is available over the APIs.io API and to AI agents over MCP.
One button, every client — Claude, Cursor, VS Code and the rest.
https://apis.io/mcp
find_apisBrowse and filter every API in the catalog.get_api_artifactsOne API's artifacts, grouped by type.get_openapiThe primary OpenAPI for this API.find_similar_apisAPIs that look like this one.apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.resolveTurn a domain, URL or GitHub org into the provider it belongs to.find_cohortsEvery scored population of providers in the catalog.curl "https://apis.io/api/v1/apis/modern-treasury-ledger-api"
curl "https://apis.io/api/v1/apis?limit=25"
Discovery needs no key. Ratings and market analysis are Pro.
Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.
A second provider on the same verified email joins the account you already have.
openapi: 3.2.0
info:
title: Modern Treasury AccountCapability Ledger API
version: v1
contact:
name: Modern Treasury Engineering Team
url: https://moderntreasury.com
description: The Modern Treasury REST API. Please see https://docs.moderntreasury.com for more details.
servers:
- url: http://localhost:3000
- url: https://app.moderntreasury.com
tags:
- name: Ledger
paths:
/api/ledgers:
get:
summary: list ledgers
tags:
- Ledger
operationId: listLedgers
description: Get a list of ledgers.
security:
- basic_auth: []
parameters:
- name: after_cursor
in: query
schema:
type:
- string
- 'null'
required: false
- name: per_page
in: query
schema:
type: integer
required: false
- $ref: '#/components/parameters/metadata_query'
- $ref: '#/components/parameters/bulk_id'
- name: updated_at
in: query
schema:
type: object
additionalProperties:
type: string
format: date-time
style: deepObject
required: false
description: Use `gt` (>), `gte` (>=), `lt` (<), `lte` (<=), or `eq` (=) to filter by the posted at timestamp. For example, for all times after Jan 1 2000 12:00 UTC, use updated_at%5Bgt%5D=2000-01-01T12:00:00Z.
explode: true
responses:
'200':
description: successful
headers:
X-After-Cursor:
schema:
type:
- string
- 'null'
required: false
description: The cursor for the next page. Including this in a call as `after_cursor` will return the next page.
X-Per-Page:
schema:
type:
- integer
- 'null'
description: The current `per_page`.
content:
application/json:
schema:
type: array
items:
$ref: '#/components/schemas/ledger'
post:
summary: create ledger
tags:
- Ledger
operationId: createLedger
description: Create a ledger.
security:
- basic_auth: []
parameters:
- name: Idempotency-Key
in: header
required: false
description: This key should be something unique, preferably something like an UUID.
schema:
type: string
responses:
'201':
description: successful
content:
application/json:
schema:
$ref: '#/components/schemas/ledger'
'403':
description: forbidden
content:
application/json:
schema:
$ref: '#/components/schemas/error_message'
'422':
description: unsuccessful
content:
application/json:
schema:
$ref: '#/components/schemas/error_message'
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/ledger_create_request'
/api/ledgers/{id}:
parameters:
- name: id
in: path
schema:
type: string
description: id
required: true
get:
summary: get ledger
tags:
- Ledger
operationId: getLedger
description: Get details on a single ledger.
security:
- basic_auth: []
responses:
'200':
description: successful
content:
application/json:
schema:
$ref: '#/components/schemas/ledger'
'403':
description: forbidden
content:
application/json:
schema:
$ref: '#/components/schemas/error_message'
'404':
description: not found
content:
application/json:
schema:
$ref: '#/components/schemas/error_message'
patch:
summary: update ledger
tags:
- Ledger
operationId: updateLedger
description: Update the details of a ledger.
security:
- basic_auth: []
parameters: []
responses:
'200':
description: successful
content:
application/json:
schema:
$ref: '#/components/schemas/ledger'
'403':
description: forbidden
content:
application/json:
schema:
$ref: '#/components/schemas/error_message'
'404':
description: not found
content:
application/json:
schema:
$ref: '#/components/schemas/error_message'
'422':
description: unsuccessful
content:
application/json:
schema:
$ref: '#/components/schemas/error_message'
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/ledger_update_request'
delete:
summary: delete ledger
tags:
- Ledger
operationId: deleteLedger
description: Delete a ledger.
security:
- basic_auth: []
responses:
'200':
description: successful
content:
application/json:
schema:
$ref: '#/components/schemas/ledger'
'403':
description: forbidden
content:
application/json:
schema:
$ref: '#/components/schemas/error_message'
'404':
description: not found
content:
application/json:
schema:
$ref: '#/components/schemas/error_message'
components:
schemas:
ledger_update_request:
type: object
properties:
name:
type: string
description: The name of the ledger.
description:
type:
- string
- 'null'
description: An optional free-form description for internal use.
metadata:
type: object
description: Additional data represented as key-value pairs. Both the key and value must be strings.
additionalProperties:
type: string
example:
key: value
foo: bar
modern: treasury
ledger:
type: object
properties:
id:
type: string
format: uuid
object:
type: string
live_mode:
type: boolean
description: This field will be true if this object exists in the live environment or false if it exists in the test environment.
created_at:
type: string
format: date-time
updated_at:
type: string
format: date-time
discarded_at:
type:
- string
- 'null'
format: date-time
name:
type: string
description: The name of the ledger.
description:
type:
- string
- 'null'
description: An optional free-form description for internal use.
metadata:
type: object
description: Additional data represented as key-value pairs. Both the key and value must be strings.
additionalProperties:
type: string
example:
key: value
foo: bar
modern: treasury
additionalProperties: true
minProperties: 9
maxProperties: 11
required:
- id
- object
- live_mode
- created_at
- updated_at
- discarded_at
- name
- description
- metadata
error_message:
type: object
properties:
errors:
type: object
properties:
code:
type: string
enum:
- parameter_invalid
- parameter_missing
- resource_not_found
- not_found
- forbidden
- invalid_ip
- invalid_key
- header_invalid
- expired_key
- conflict
- too_many_requests
message:
type: string
parameter:
type: string
required:
- errors
ledger_create_request:
type: object
properties:
name:
type: string
description: The name of the ledger.
description:
type:
- string
- 'null'
description: An optional free-form description for internal use.
metadata:
type: object
description: Additional data represented as key-value pairs. Both the key and value must be strings.
additionalProperties:
type: string
example:
key: value
foo: bar
modern: treasury
required:
- name
parameters:
metadata_query:
name: metadata
in: query
schema:
type: object
additionalProperties:
type: string
style: deepObject
explode: true
required: false
description: For example, if you want to query for records with metadata key `Type` and value `Loan`, the query would be `metadata%5BType%5D=Loan`. This encodes the query parameters.
bulk_id:
name: id[]
in: query
style: form
explode: true
allowReserved: true
schema:
type: array
items:
type: string
required: false
description: If you have specific IDs to retrieve in bulk, you can pass them as query parameters delimited with `id[]=`, for example `?id[]=123&id[]=abc`.
securitySchemes:
basic_auth:
type: http
scheme: basic