Inventory Manager API · accounts
The organization's chart of accounts in natural code order
GET /accounts
The organization's chart of accounts in natural code order (90, 200, 1400), each with what holds it in place: skus, how many SKUs post to it in any role, and defaultFor, the roles it is the organization default for (1400 inventory, 4000 revenue, 5000 expense).
An account a ledger app keeps carries managedBy (the app and its own id for the account) and, when the app archived it, archived. q narrows to accounts whose code or name contains it. Never empty: every organization is provisioned with the default accounts.
Access
Requires financials:read or settings:read.
Any one of these scopes is enough.
How scopes come from roles: Scopes and roles. Getting a token: Authentication and app tokens.
AI agent tool
Agents call this as accounting_list_accounts (Accounting: List accounts), in the accounting toolset. It only reads.
Connecting an agent: AI agents.
Example
curl -X GET 'https://inventory.getmanifold.io/accounts?q=sale' \
-H "Authorization: Bearer $MANIFOLD_TOKEN"const response = await fetch("https://inventory.getmanifold.io/accounts?q=sale", {
method: "GET",
headers: { Authorization: `Bearer ${process.env.MANIFOLD_TOKEN}` },
});
if (!response.ok) throw new Error(`${response.status}: ${await response.text()}`);
const answer = await response.json();[
{
"id": "acct_019cadd3-83c6-7d21-9a4e-6f1b2c3d4e5f",
"code": "2300",
"name": "Sales awaiting payment",
"description": "On the cash basis: invoiced revenue and its tax, until the customer pays for it.",
"createdAt": "2026-03-02T09:14:06.150Z",
"updatedAt": "2026-03-02T09:14:06.150Z",
"skus": 0,
"defaultFor": [
"sales-awaiting-payment"
]
},
{
"id": "acct_019cadd3-83f8-7b89-810d-568f90349401",
"code": "4000",
"name": "Sales",
"description": "Income from goods and services sold.",
"createdAt": "2026-03-02T09:14:06.200Z",
"updatedAt": "2026-03-02T09:14:06.200Z",
"skus": 4,
"defaultFor": [
"revenue"
]
},
{
"id": "acct_01a161c4-0a00-72db-a577-07bcb2a24026",
"code": "4010",
"name": "Wholesale sales",
"description": "Income from trade customers.",
"createdAt": "2026-10-22T04:00:00.000Z",
"updatedAt": "2026-10-22T04:00:00.000Z",
"skus": 0,
"defaultFor": []
},
{
"id": "acct_019cadd3-845c-7876-813d-b58885d7fa14",
"code": "5000",
"name": "Cost of sales",
"description": "The cost of the stock consumed by a sale.",
"createdAt": "2026-03-02T09:14:06.300Z",
"updatedAt": "2026-03-02T09:14:06.300Z",
"skus": 4,
"defaultFor": [
"expense"
]
}
]The panel writes this call in other languages. It does not send it: Manifold's APIs do not take calls from a web
page on another site, so run the call from your own code or terminal. The whole API as OpenAPI: inventory-manager.openapi.json. Base URL https://inventory.getmanifold.io.
Errors
Every refusal is a status and a JSON body whose _tag names it. A refused call changes nothing.
401
| Refusal | What it means | What to do |
|---|---|---|
Unauthorized reason | The token is missing, expired or not one Manifold issued. | Get a fresh token and send the call again. |
TokenAlreadyUsed tokenId | A single-use app token was already spent. | Mint a new token for this call. |
402
| Refusal | What it means | What to do |
|---|---|---|
SubscriptionRequired status | The organization's subscription has lapsed, so writes are refused. | An owner settles billing. Reads still work meanwhile. |
403
| Refusal | What it means | What to do |
|---|---|---|
TenantRequired userId | The token names no organization. | Choose the organization, then get a new token. |
ScopeRequired required | The token's roles do not grant the scope this call needs. | Ask an owner or admin for a role that grants it. |
409
| Refusal | What it means | What to do |
|---|---|---|
MirroredFromSource source | This area is fed by your source system until the organization goes live. | Make the change in the source system, or go live first. |
503
| Refusal | What it means | What to do |
|---|---|---|
RequestLogUnavailable tokenId, reason | The service could not record the request, so it did nothing. | Try again shortly. |
How refusals work everywhere: Errors.
Used in
- Keeping the chart of accounts, step 1: See the chart you were born with