Public REST/JSON reference
Expense Tagger API
Sync your transactions from your bank or accounting integration, classify them against a chart-of-accounts using rule-based + ML-assisted matching, split a single transaction across multiple GL codes when needed, and export the categorized batch to your accounting system. Part of the Logic Igniter Finance & Revenue Intelligence bundle.
Access boundary
These examples describe public API calls only. Use the service output to review, score, summarize, analyze, or recommend; do not treat the API reference as permission for an assistant to write, send, publish, charge, schedule, notify, delete, or modify records.
Base URL
https://api.logicigniter.comAuth
Authorization: Bearer YOUR_API_KEYVersion
OpenAPI 3.0.3 · 1.0.0Operations rendered
16
Response models rendered
27
/api/v1/expensetagger/customersList customers
Public REST/JSON operation
This operation is documented for direct API evaluation. It describes the public payload and response contract only; assistant/MCP usage remains read only and is covered in the MCP guide.
Parameters
| Name | In | Type | Notes |
|---|---|---|---|
page_size | query | integer | |
page_token | query | string |
Request example
Replace placeholders with your confirmed access key and your own business data.
curl -X GET "https://api.logicigniter.com/api/v1/expensetagger/customers" \ -H "Authorization: Bearer YOUR_API_KEY" \ -H "Accept: application/json"
Responses
Page of customers
401ErrorMissing or invalid API key.
/api/v1/expensetagger/customersProvision a customer
Public REST/JSON operation
This operation is documented for direct API evaluation. It describes the public payload and response contract only; assistant/MCP usage remains read only and is covered in the MCP guide.
Request body (required)
Schema: CreateCustomerRequest
Sample JSON payload for evaluation.
{
"email": "[email protected]",
"name": "Example Inc."
}Request example
Replace placeholders with your confirmed access key and your own business data.
curl -X POST "https://api.logicigniter.com/api/v1/expensetagger/customers" \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Accept: application/json" \
-H "Content-Type: application/json" \
-d '{"email":"[email protected]","name":"Example Inc."}'/api/v1/expensetagger/customers/{id}Get a customer by id
Public REST/JSON operation
This operation is documented for direct API evaluation. It describes the public payload and response contract only; assistant/MCP usage remains read only and is covered in the MCP guide.
Parameters
| Name | In | Type | Notes |
|---|---|---|---|
idrequired | path | string (uuid) |
Request example
Replace placeholders with your confirmed access key and your own business data.
curl -X GET "https://api.logicigniter.com/api/v1/expensetagger/customers/:id" \ -H "Authorization: Bearer YOUR_API_KEY" \ -H "Accept: application/json"
/api/v1/expensetagger/customers/{id}Update a customer
Public REST/JSON operation
This operation is documented for direct API evaluation. It describes the public payload and response contract only; assistant/MCP usage remains read only and is covered in the MCP guide.
Parameters
| Name | In | Type | Notes |
|---|---|---|---|
idrequired | path | string (uuid) |
Request body (required)
Schema: UpdateCustomerRequest
Request example
Replace placeholders with your confirmed access key and your own business data.
curl -X PUT "https://api.logicigniter.com/api/v1/expensetagger/customers/:id" \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Accept: application/json" \
-H "Content-Type: application/json" \
-d '{}'/api/v1/expensetagger/categoriesList categories (chart of accounts)
Returns the workspace's full chart of accounts. Each category has its accounting_code and an optional parent_category_id for hierarchical structures.
Public REST/JSON operation
This operation is documented for direct API evaluation. It describes the public payload and response contract only; assistant/MCP usage remains read only and is covered in the MCP guide.
Request example
Replace placeholders with your confirmed access key and your own business data.
curl -X GET "https://api.logicigniter.com/api/v1/expensetagger/categories" \ -H "Authorization: Bearer YOUR_API_KEY" \ -H "Accept: application/json"
Responses
Categories
401ErrorMissing or invalid API key.
/api/v1/expensetagger/categories/syncSync chart of accounts from accounting integration
Pull the latest chart of accounts from the connected accounting system (QuickBooks, Xero, NetSuite). Reconciles against existing categories — adds new, updates names, never removes (mark-as-archived in the upstream system instead).
Public REST/JSON operation
This operation is documented for direct API evaluation. It describes the public payload and response contract only; assistant/MCP usage remains read only and is covered in the MCP guide.
Request example
Replace placeholders with your confirmed access key and your own business data.
curl -X POST "https://api.logicigniter.com/api/v1/expensetagger/categories/sync" \ -H "Authorization: Bearer YOUR_API_KEY" \ -H "Accept: application/json"
Responses
/api/v1/expensetagger/rulesList classification rules
Public REST/JSON operation
This operation is documented for direct API evaluation. It describes the public payload and response contract only; assistant/MCP usage remains read only and is covered in the MCP guide.
Request example
Replace placeholders with your confirmed access key and your own business data.
curl -X GET "https://api.logicigniter.com/api/v1/expensetagger/rules" \ -H "Authorization: Bearer YOUR_API_KEY" \ -H "Accept: application/json"
Responses
Rules in priority order
401ErrorMissing or invalid API key.
/api/v1/expensetagger/rulesCreate a classification rule
Rules apply in priority order — lower number = higher priority. Match types: MCC (Merchant Category Code), MERCHANT (substring on merchant name), PATTERN (regex against merchant + memo).
Public REST/JSON operation
This operation is documented for direct API evaluation. It describes the public payload and response contract only; assistant/MCP usage remains read only and is covered in the MCP guide.
Request body (required)
Schema: CreateRuleRequest
Sample JSON payload for evaluation.
{
"match_type": "MATCH_TYPE_MERCHANT",
"match_value": "Example Vendor",
"category_id": "11111111-1111-1111-1111-111111111111",
"priority": 10
}Request example
Replace placeholders with your confirmed access key and your own business data.
curl -X POST "https://api.logicigniter.com/api/v1/expensetagger/rules" \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Accept: application/json" \
-H "Content-Type: application/json" \
-d '{"match_type":"MATCH_TYPE_MERCHANT","match_value":"Example Vendor","category_id":"11111111-1111-1111-1111-111111111111","priority":10}'/api/v1/expensetagger/rules/{id}Delete a rule
Public REST/JSON operation
This operation is documented for direct API evaluation. It describes the public payload and response contract only; assistant/MCP usage remains read only and is covered in the MCP guide.
Parameters
| Name | In | Type | Notes |
|---|---|---|---|
idrequired | path | string (uuid) |
Request example
Replace placeholders with your confirmed access key and your own business data.
curl -X DELETE "https://api.logicigniter.com/api/v1/expensetagger/rules/:id" \ -H "Authorization: Bearer YOUR_API_KEY" \ -H "Accept: application/json"
Responses
/api/v1/expensetagger/transactions/syncSync transactions
Pull new transactions from the bank/card connection. Each is auto-categorized by the rules + ML model — auto-confident matches go to AUTO; ambiguous ones land in REVIEW.
Public REST/JSON operation
This operation is documented for direct API evaluation. It describes the public payload and response contract only; assistant/MCP usage remains read only and is covered in the MCP guide.
Request example
Replace placeholders with your confirmed access key and your own business data.
curl -X POST "https://api.logicigniter.com/api/v1/expensetagger/transactions/sync" \ -H "Authorization: Bearer YOUR_API_KEY" \ -H "Accept: application/json"
/api/v1/expensetagger/transactionsList transactions
Workspace-wide list. Filter by status (NEW / AUTO / MANUAL / REVIEW). Use status=REVIEW to drive the human-review queue.
Public REST/JSON operation
This operation is documented for direct API evaluation. It describes the public payload and response contract only; assistant/MCP usage remains read only and is covered in the MCP guide.
Parameters
| Name | In | Type | Notes |
|---|---|---|---|
status | query | TransactionStatus | |
page_size | query | integer | |
page_token | query | string |
Request example
Replace placeholders with your confirmed access key and your own business data.
curl -X GET "https://api.logicigniter.com/api/v1/expensetagger/transactions" \ -H "Authorization: Bearer YOUR_API_KEY" \ -H "Accept: application/json"
Responses
Page of transactions
401ErrorMissing or invalid API key.
/api/v1/expensetagger/transactions/{id}Get a transaction with category detail
Public REST/JSON operation
This operation is documented for direct API evaluation. It describes the public payload and response contract only; assistant/MCP usage remains read only and is covered in the MCP guide.
Parameters
| Name | In | Type | Notes |
|---|---|---|---|
idrequired | path | string (uuid) |
Request example
Replace placeholders with your confirmed access key and your own business data.
curl -X GET "https://api.logicigniter.com/api/v1/expensetagger/transactions/:id" \ -H "Authorization: Bearer YOUR_API_KEY" \ -H "Accept: application/json"
/api/v1/expensetagger/transactions/{id}/categorizeOverride categorization on one transaction
Manually categorize a transaction. Sets status = MANUAL.
Public REST/JSON operation
This operation is documented for direct API evaluation. It describes the public payload and response contract only; assistant/MCP usage remains read only and is covered in the MCP guide.
Parameters
| Name | In | Type | Notes |
|---|---|---|---|
idrequired | path | string (uuid) |
Request body (required)
Schema: CategorizeRequest
Sample JSON payload for evaluation.
{
"category_id": "11111111-1111-1111-1111-111111111111"
}Request example
Replace placeholders with your confirmed access key and your own business data.
curl -X POST "https://api.logicigniter.com/api/v1/expensetagger/transactions/:id/categorize" \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Accept: application/json" \
-H "Content-Type: application/json" \
-d '{"category_id":"11111111-1111-1111-1111-111111111111"}'/api/v1/expensetagger/transactions/{id}/splitSplit a transaction across multiple categories
Useful for mixed-purpose transactions (e.g. an Amazon order with both office supplies and personal items). Sum of split amounts must equal the original transaction amount in cents.
Public REST/JSON operation
This operation is documented for direct API evaluation. It describes the public payload and response contract only; assistant/MCP usage remains read only and is covered in the MCP guide.
Parameters
| Name | In | Type | Notes |
|---|---|---|---|
idrequired | path | string (uuid) |
Request body (required)
Schema: SplitRequest
Sample JSON payload for evaluation.
{
"splits": [
{
"category_id": "11111111-1111-1111-1111-111111111111",
"amount_cents": 4000
},
{
"category_id": "22222222-2222-2222-2222-222222222222",
"amount_cents": 2000
}
]
}Request example
Replace placeholders with your confirmed access key and your own business data.
curl -X POST "https://api.logicigniter.com/api/v1/expensetagger/transactions/:id/split" \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Accept: application/json" \
-H "Content-Type: application/json" \
-d '{"splits":[{"category_id":"11111111-1111-1111-1111-111111111111","amount_cents":4000},{"category_id":"22222222-2222-2222-2222-222222222222","amount_cents":2000}]}'Responses
200SplitResultSplit result
400ErrorSplits don't sum to transaction amount, or category_id unknown
401ErrorMissing or invalid API key.
404ErrorTransaction not found
/api/v1/expensetagger/exportsExport history
Public REST/JSON operation
This operation is documented for direct API evaluation. It describes the public payload and response contract only; assistant/MCP usage remains read only and is covered in the MCP guide.
Parameters
| Name | In | Type | Notes |
|---|---|---|---|
page_size | query | integer | |
page_token | query | string |
Request example
Replace placeholders with your confirmed access key and your own business data.
curl -X GET "https://api.logicigniter.com/api/v1/expensetagger/exports" \ -H "Authorization: Bearer YOUR_API_KEY" \ -H "Accept: application/json"
Responses
Page of past exports
401ErrorMissing or invalid API key.
/api/v1/expensetagger/exportsExport categorized transactions
Push the categorized batch to the requested target — `quickbooks`, `xero`, `netsuite`, `csv`. Returns the batch id and the export status (COMPLETED on success or FAILED on partial failure — call /exports to inspect).
Public REST/JSON operation
This operation is documented for direct API evaluation. It describes the public payload and response contract only; assistant/MCP usage remains read only and is covered in the MCP guide.
Request body (required)
Schema: ExportRequest
Sample JSON payload for evaluation.
{
"target": "quickbooks"
}Request example
Replace placeholders with your confirmed access key and your own business data.
curl -X POST "https://api.logicigniter.com/api/v1/expensetagger/exports" \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Accept: application/json" \
-H "Content-Type: application/json" \
-d '{"target":"quickbooks"}'Responses
201ExportResultExport submitted
400ErrorUnsupported target
401ErrorMissing or invalid API key.
402ErrorEndpoint requires an active subscription. Free tier covers 1 chart-of-accounts sync and read-only transaction listing; paid plans unlock unlimited rules, transaction sync, splits, and exports.
Data models
Error
| Field | Type | Notes |
|---|---|---|
errorrequired | string |
MatchType
TransactionStatus
ExportStatus
Category
| Field | Type | Notes |
|---|---|---|
id | string (uuid) | |
name | string | |
accounting_code | string | |
parent_category_id | string (uuid) |
CategoriesResponse
| Field | Type | Notes |
|---|---|---|
items | array<Category> |
SyncCategoriesResult
| Field | Type | Notes |
|---|---|---|
id | string (uuid) | |
categories_synced | integer |
CreateRuleRequest
| Field | Type | Notes |
|---|---|---|
match_typerequired | MatchType | |
match_valuerequired | string | |
category_idrequired | string (uuid) | |
priority | integer |
Rule
| Field | Type | Notes |
|---|---|---|
id | string (uuid) | |
match_type | MatchType | |
match_value | string | |
category_id | string (uuid) | |
priority | integer |
RulesResponse
| Field | Type | Notes |
|---|---|---|
items | array<Rule> |
DeleteResult
| Field | Type | Notes |
|---|---|---|
success | boolean |
SyncTransactionsResult
| Field | Type | Notes |
|---|---|---|
id | string (uuid) | |
transactions_synced | integer | |
synced_at | string (date-time) |
Transaction
| Field | Type | Notes |
|---|---|---|
id | string (uuid) | |
merchant_name | string | |
amount_cents | integer (int64) | |
date | string (date-time) | |
category_id | string (uuid) | |
confidence | number (double) | |
status | TransactionStatus |
TransactionsResponse
| Field | Type | Notes |
|---|---|---|
items | array<Transaction> | |
next_page_token | string | |
total_count | integer |
TransactionDetail
| Field | Type | Notes |
|---|---|---|
id | string (uuid) | |
merchant_name | string | |
amount_cents | integer (int64) | |
date | string (date-time) | |
category_id | string (uuid) | |
category_name | string | |
confidence | number (double) | |
status | TransactionStatus |
CategorizeRequest
| Field | Type | Notes |
|---|---|---|
category_idrequired | string (uuid) |
CategorizeResult
| Field | Type | Notes |
|---|---|---|
id | string (uuid) | |
success | boolean |
SplitLine
| Field | Type | Notes |
|---|---|---|
category_idrequired | string (uuid) | |
amount_centsrequired | integer (int64) |
SplitRequest
| Field | Type | Notes |
|---|---|---|
splitsrequired | array<SplitLine> |
SplitResult
| Field | Type | Notes |
|---|---|---|
id | string (uuid) | |
success | boolean |
ExportRequest
| Field | Type | Notes |
|---|---|---|
targetrequired | string |
ExportResult
| Field | Type | Notes |
|---|---|---|
id | string (uuid) | |
target | string | |
txn_count | integer | |
status | ExportStatus | |
exported_at | string (date-time) |
ExportHistory
| Field | Type | Notes |
|---|---|---|
items | array<ExportResult> | |
next_page_token | string | |
total_count | integer |
CreateCustomerRequest
| Field | Type | Notes |
|---|---|---|
emailrequired | string (email) | |
namerequired | string |
UpdateCustomerRequest
| Field | Type | Notes |
|---|---|---|
email | string (email) | |
name | string |
Customer
| Field | Type | Notes |
|---|---|---|
id | string (uuid) | |
email | string (email) | |
name | string | |
created_at | string (date-time) |
CustomersResponse
| Field | Type | Notes |
|---|---|---|
items | array<Customer> | |
next_page_token | string | |
total_count | integer |

