Skip to main content

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.com

Auth

Authorization: Bearer YOUR_API_KEY

Version

OpenAPI 3.0.3 · 1.0.0

Operations rendered

16

Response models rendered

27

GET/api/v1/expensetagger/customers

List 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

NameInTypeNotes
page_sizequeryinteger
page_tokenquerystring

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

Missing or invalid API key.

POST/api/v1/expensetagger/customers

Provision 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."}'

Responses

Customer created or returned

Invalid email or missing name

Missing or invalid API key.

GET/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

NameInTypeNotes
idrequiredpathstring (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"

Responses

Customer record

Missing or invalid API key.

Customer not found

PUT/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

NameInTypeNotes
idrequiredpathstring (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 '{}'

Responses

Updated customer

Invalid update

Missing or invalid API key.

Customer not found

GET/api/v1/expensetagger/categories

List 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

Missing or invalid API key.

POST/api/v1/expensetagger/categories/sync

Sync 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

Sync result

Missing or invalid API key.

Endpoint 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.

Accounting integration not configured

GET/api/v1/expensetagger/rules

List 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

Missing or invalid API key.

POST/api/v1/expensetagger/rules

Create 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}'

Responses

201Rule

Rule created

Invalid match_type or unparseable pattern

Missing or invalid API key.

category_id not found

DELETE/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

NameInTypeNotes
idrequiredpathstring (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

Deleted

Missing or invalid API key.

Rule not found

POST/api/v1/expensetagger/transactions/sync

Sync 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"

Responses

Missing or invalid API key.

Endpoint 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.

Bank integration not configured

GET/api/v1/expensetagger/transactions

List 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

NameInTypeNotes
statusqueryTransactionStatus
page_sizequeryinteger
page_tokenquerystring

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

Missing or invalid API key.

GET/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

NameInTypeNotes
idrequiredpathstring (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"

Responses

Transaction detail

Missing or invalid API key.

Transaction not found

POST/api/v1/expensetagger/transactions/{id}/categorize

Override 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

NameInTypeNotes
idrequiredpathstring (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"}'

Responses

Categorized

category_id missing or unknown

Missing or invalid API key.

Transaction not found

POST/api/v1/expensetagger/transactions/{id}/split

Split 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

NameInTypeNotes
idrequiredpathstring (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

Split result

Splits don't sum to transaction amount, or category_id unknown

Missing or invalid API key.

Transaction not found

GET/api/v1/expensetagger/exports

Export 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

NameInTypeNotes
page_sizequeryinteger
page_tokenquerystring

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

Missing or invalid API key.

POST/api/v1/expensetagger/exports

Export 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

Export submitted

Unsupported target

Missing or invalid API key.

Endpoint 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

FieldTypeNotes
errorrequiredstring

MatchType

TransactionStatus

ExportStatus

Category

FieldTypeNotes
idstring (uuid)
namestring
accounting_codestring
parent_category_idstring (uuid)

CategoriesResponse

FieldTypeNotes
itemsarray<Category>

SyncCategoriesResult

FieldTypeNotes
idstring (uuid)
categories_syncedinteger

CreateRuleRequest

FieldTypeNotes
match_typerequiredMatchType
match_valuerequiredstring
category_idrequiredstring (uuid)
priorityinteger

Rule

FieldTypeNotes
idstring (uuid)
match_typeMatchType
match_valuestring
category_idstring (uuid)
priorityinteger

RulesResponse

FieldTypeNotes
itemsarray<Rule>

DeleteResult

FieldTypeNotes
successboolean

SyncTransactionsResult

FieldTypeNotes
idstring (uuid)
transactions_syncedinteger
synced_atstring (date-time)

Transaction

FieldTypeNotes
idstring (uuid)
merchant_namestring
amount_centsinteger (int64)
datestring (date-time)
category_idstring (uuid)
confidencenumber (double)
statusTransactionStatus

TransactionsResponse

FieldTypeNotes
itemsarray<Transaction>
next_page_tokenstring
total_countinteger

TransactionDetail

FieldTypeNotes
idstring (uuid)
merchant_namestring
amount_centsinteger (int64)
datestring (date-time)
category_idstring (uuid)
category_namestring
confidencenumber (double)
statusTransactionStatus

CategorizeRequest

FieldTypeNotes
category_idrequiredstring (uuid)

CategorizeResult

FieldTypeNotes
idstring (uuid)
successboolean

SplitLine

FieldTypeNotes
category_idrequiredstring (uuid)
amount_centsrequiredinteger (int64)

SplitRequest

FieldTypeNotes
splitsrequiredarray<SplitLine>

SplitResult

FieldTypeNotes
idstring (uuid)
successboolean

ExportRequest

FieldTypeNotes
targetrequiredstring

ExportResult

FieldTypeNotes
idstring (uuid)
targetstring
txn_countinteger
statusExportStatus
exported_atstring (date-time)

ExportHistory

FieldTypeNotes
itemsarray<ExportResult>
next_page_tokenstring
total_countinteger

CreateCustomerRequest

FieldTypeNotes
emailrequiredstring (email)
namerequiredstring

UpdateCustomerRequest

FieldTypeNotes
emailstring (email)
namestring

Customer

FieldTypeNotes
idstring (uuid)
emailstring (email)
namestring
created_atstring (date-time)

CustomersResponse

FieldTypeNotes
itemsarray<Customer>
next_page_tokenstring
total_countinteger