List recurring rules
GET /api/v1/programmatic/recurring-rules
/api/v1/programmatic/recurring-rulesReturns recurring rules with bounded filtering and pagination.
Parameters
| Name | In | Type | Description |
|---|---|---|---|
status | query | active | paused | endedOptional | Return only recurring rules in this lifecycle state. active |
type | query | expense | income | transferOptional | Return only rules for this transaction direction. expense |
kind | query | rule | subscriptionOptional | Filter automatic recurring rules separately from manually tracked subscriptions. rule |
account_id | query | stringOptional | Return rules that use this source account. <account_id> |
page | query | numberOptional | One-based result page. <page> |
limit | query | numberOptional | Maximum recurring rules returned per page. <limit> |
Code examples
curl --request GET \
--url 'https://api.tetri.app/api/v1/programmatic/recurring-rules?status=active&type=expense&kind=rule&account_id=<account_id>' \
--header 'Authorization: Bearer $TETRI_API_TOKEN'Responses
{
"data": [
{
"id": "<uuid>",
"created_by_user_id": "<uuid>",
"name": "<string>",
"raw_name": "<string>",
"is_system_seed": false,
"system_seed_key": "<string>",
"system_seed_source": "<string>",
"name_customized": false,
"type": "expense",
"kind": "rule",
"amount": "49.99",
"currency_id": "<uuid>",
"currency_code": "USD",
"currency_symbol": "$",
"account_id": "<uuid>",
"account_name": "<string>",
"destination_account_id": "<uuid>",
"destination_account_name": "<string>",
"category_id": "<uuid>",
"category_name": "<string>",
"frequency": "monthly",
"custom_interval_days": 0,
"start_date": "2026-07-12",
"end_date": "2026-07-12",
"next_occurrence_date": "2026-07-12",
"status": "active",
"paused_at": "2026-07-12T12:00:00Z",
"auto_create": false,
"catalog_item_id": "<uuid>",
"billing_url": "<string>",
"icon": "<string>",
"icon_url": "<string>",
"accent_color": "sky",
"external_id": "<string>",
"notes": "<string>",
"version": 0,
"created_at": "2026-07-12T12:00:00Z",
"updated_at": "2026-07-12T12:00:00Z",
"created_by": {}
}
],
"meta": {
"total": 0,
"page": 0,
"limit": 0
}
}{
"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"
}