Docs

Get anomalies report

GET /api/v1/programmatic/reports/anomalies

GET/api/v1/programmatic/reports/anomalies
Reportsv1reports:read

Returns transactions that differ materially from category history.

Parameters

NameInType Description
monthquerystringOptional Report month. Defaults to the current month in the workspace timezone. 2026-07

Code examples

curl --request GET \
  --url 'https://api.tetri.app/api/v1/programmatic/reports/anomalies?month=2026-07' \
  --header 'Authorization: Bearer $TETRI_API_TOKEN'

Responses

200Complete anomaly detection report in a JSON:API resource envelope.
{
  "data": {
    "type": "anomaly_detection",
    "id": "<string>",
    "attributes": {
      "analysis_period_end": "2026-07-12",
      "analysis_period_start": "2026-07-12",
      "month": "<string>",
      "currency_code": "<string>",
      "currency_symbol": "<string>",
      "anomalies": [
        {
          "transaction_id": "<string>",
          "journal_id": "<string>",
          "description": "<string>",
          "date": "2026-07-12",
          "amount": "<string>",
          "native_amount": "<string>",
          "native_currency_code": "<string>",
          "native_currency_symbol": "<string>",
          "category_id": "<string>",
          "category_name": "<string>",
          "category_color": "<string>",
          "category_avg": "<string>",
          "multiplier": "<string>",
          "monthly_history": [
            {
              "month": "<string>",
              "amount": "<string>"
            }
          ]
        }
      ],
      "threshold_multiplier": 0,
      "total_amount": "<string>",
      "extreme_count": 0,
      "transaction_count": 0,
      "baseline_start": "2026-07-12",
      "baseline_end": "2026-07-12",
      "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
    }
  }
}
400Request parameters or payload failed validation. Inspect `code` and `message`.
{
  "statusCode": 400,
  "code": "PROGRAMMATIC_PAGINATION_MODE_CONFLICT",
  "message": "<string>",
  "error": "Bad Request",
  "request_id": "8cf64dcc-0f73-4f8d-a845-3d80c1040475"
}
401The personal access token is missing, invalid, expired, or revoked.
{
  "statusCode": 400,
  "code": "PROGRAMMATIC_PAGINATION_MODE_CONFLICT",
  "message": "<string>",
  "error": "Bad Request",
  "request_id": "8cf64dcc-0f73-4f8d-a845-3d80c1040475"
}
403The token lacks the required scope or no longer has workspace access.
{
  "statusCode": 400,
  "code": "PROGRAMMATIC_PAGINATION_MODE_CONFLICT",
  "message": "<string>",
  "error": "Bad Request",
  "request_id": "8cf64dcc-0f73-4f8d-a845-3d80c1040475"
}
429The credential exceeded its request rate limit.
{
  "statusCode": 400,
  "code": "PROGRAMMATIC_PAGINATION_MODE_CONFLICT",
  "message": "<string>",
  "error": "Bad Request",
  "request_id": "8cf64dcc-0f73-4f8d-a845-3d80c1040475"
}