Meta #
GET /meta describes the API and your books in one call. A client starting cold can read it instead of making a series of list calls, or guessing.
curl https://api.microbooks.io/books/v1/meta -H "Authorization: Bearer $TOKEN"
{
"status": "success",
"api": { "version": "v1", "docs_url": "https://microbooks.io/docs" },
"conventions": {
"body_keys": "snake_case",
"query_keys": "hyphenated (start-date)",
"other_spellings": "underscore and camelCase variants of a key are accepted",
"unknown_body_keys": "rejected with 422",
"unknown_query_keys": "rejected with 422 (page is always accepted)",
"tolerated_body_keys": ["entity_id"],
"dry_run_header": "rollback: 1",
"idempotency_header": "Idempotency-Key",
"idempotency_ttl_hours": 24,
"rate_limit_per_minute": 300,
"pagination": { "param": "perPage", "default": 5, "min": 1, "max": 200 }
},
"vocabularies": {
"account_types": { "RECEIVABLE": "Receivable", "BANK": "Bank", "...": "..." },
"transaction_types": { "IN": "Client Invoice", "...": "..." },
"balance_types": { "DEBIT": "Debit", "CREDIT": "Credit" },
"reporting_period_statuses": { "OPEN": "Open", "CLOSED": "Closed", "ADJUSTING": "Adjusting" },
"report_formats": ["html", "pdf", "text"]
},
"entity": {
"id": 1, "name": "Acme Ltd", "currency": { "id": 1, "name": "Kenya Shilling", "currency_code": "KES" },
"multi_currency": false, "mid_year_balances": false, "reporting_period_auto_rollover": true,
"year_start": 1, "locale": "en_GB", "parent_id": null
},
"currencies": [ { "id": 1, "name": "Kenya Shilling", "currency_code": "KES" } ],
"reporting_periods": [ { "id": 3, "calendar_year": 2026, "period_count": 1, "status": "OPEN" } ],
"current_reporting_period": { "id": 3, "calendar_year": 2026, "period_count": 1, "status": "OPEN" },
"subscription": {
"plan": "journal", "status": "active", "enforced": false,
"usage": { "period": "2026-10", "transactions": 12, "transactions_cap": 50, "api_calls": 140, "api_calls_cap": 500 }
}
}
vocabulariesmaps each code the API accepts on write to its display label.account_typeshas 18 entries.entityisnullfor an account that has not created an entity yet. The vocabularies are still returned.subscriptionshows the plan the request is metered against, and this month’s usage against its caps. Whenenforcedis true, exceeding a cap returns402or429.