Get expense comparison report
GET /api/v1/programmatic/reports/expense-comparison
/api/v1/programmatic/reports/expense-comparisonCompares expense totals between two months.
Parameters
| Name | In | Type | Description |
|---|---|---|---|
month | query | stringOptional | Primary month. Defaults to the current month in the workspace timezone. 2026-07 |
compare_month | query | stringOptional | Comparison month. Defaults to the month before `month`. 2026-06 |
Code examples
curl --request GET \
--url 'https://api.tetri.app/api/v1/programmatic/reports/expense-comparison?month=2026-07&compare_month=2026-06' \
--header 'Authorization: Bearer $TETRI_API_TOKEN'Responses
{
"data": {
"type": "expense_comparison",
"id": "<string>",
"attributes": {
"analysis_period_end": "2026-07-12",
"analysis_period_start": "2026-07-12",
"month": "<string>",
"compare_month": "<string>",
"currency_code": "<string>",
"currency_symbol": "<string>",
"categories": [
{
"category_id": "<string>",
"name": "<string>",
"icon_name": "<string>",
"accent_color": "<string>",
"current_amount": "<string>",
"previous_amount": "<string>",
"change_amount": "<string>",
"change_percentage": "<string>",
"direction": "<string>",
"trend": [
{
"month": "<string>",
"amount": "<string>"
}
]
}
],
"total_current_agg": {
"per_currency": [
{
"currency_code": "<string>",
"currency_symbol": "<string>",
"currency_decimal_places": 0,
"amount": "<string>",
"count": 0
}
],
"home_converted": {
"currency_code": "<string>",
"currency_symbol": "<string>",
"currency_decimal_places": 0,
"amount": "<string>",
"fx_partial": false,
"missing_fx_count": 0,
"rate_date": "2026-07-12"
}
},
"total_previous_agg": {
"per_currency": [
{
"currency_code": "<string>",
"currency_symbol": "<string>",
"currency_decimal_places": 0,
"amount": "<string>",
"count": 0
}
],
"home_converted": {
"currency_code": "<string>",
"currency_symbol": "<string>",
"currency_decimal_places": 0,
"amount": "<string>",
"fx_partial": false,
"missing_fx_count": 0,
"rate_date": "2026-07-12"
}
},
"total_change_amount": "<string>",
"total_change_percentage": "<string>",
"biggest_increases": [
{
"category_id": "<string>",
"name": "<string>",
"icon_name": "<string>",
"change_amount": "<string>",
"change_percentage": "<string>"
}
],
"biggest_decreases": [
{
"category_id": "<string>",
"name": "<string>",
"icon_name": "<string>",
"change_amount": "<string>",
"change_percentage": "<string>"
}
],
"fx_partial": false,
"missing_fx_count": 0
},
"window": {
"applied_months": 0,
"earliest_visible_date": "2026-07-12",
"plan": "free",
"requested_range": "recent",
"truncated_by_plan": false
}
}
}{
"statusCode": 400,
"code": "PROGRAMMATIC_PAGINATION_MODE_CONFLICT",
"message": "<string>",
"error": "Bad Request",
"request_id": "8cf64dcc-0f73-4f8d-a845-3d80c1040475"
}{
"statusCode": 400,
"code": "PROGRAMMATIC_PAGINATION_MODE_CONFLICT",
"message": "<string>",
"error": "Bad Request",
"request_id": "8cf64dcc-0f73-4f8d-a845-3d80c1040475"
}{
"statusCode": 400,
"code": "PROGRAMMATIC_PAGINATION_MODE_CONFLICT",
"message": "<string>",
"error": "Bad Request",
"request_id": "8cf64dcc-0f73-4f8d-a845-3d80c1040475"
}{
"statusCode": 400,
"code": "PROGRAMMATIC_PAGINATION_MODE_CONFLICT",
"message": "<string>",
"error": "Bad Request",
"request_id": "8cf64dcc-0f73-4f8d-a845-3d80c1040475"
}