Meta

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 }
  }
}
  • vocabularies maps each code the API accepts on write to its display label. account_types has 18 entries.
  • entity is null for an account that has not created an entity yet. The vocabularies are still returned.
  • subscription shows the plan the request is metered against, and this month’s usage against its caps. When enforced is true, exceeding a cap returns 402 or 429.