Docs

List goals

GET /api/v1/programmatic/goals

GET/api/v1/programmatic/goals
Goalsv1goals:read

Returns goals with status filtering and pagination.

Parameters

NameInType Description
statusqueryactive | achieved | abandoned | allOptional Goal lifecycle filter. Use `all` to include closed goals. active
pagequerynumberOptional One-based result page. <page>
limitquerynumberOptional Maximum goals returned per page. <limit>

Code examples

curl --request GET \
  --url 'https://api.tetri.app/api/v1/programmatic/goals?status=active&page=<page>&limit=<limit>' \
  --header 'Authorization: Bearer $TETRI_API_TOKEN'

Responses

200Goals with progress, pace, and pagination metadata.
{
  "data": [
    {
      "type": "goals",
      "id": "<uuid>",
      "attributes": {
        "created_by_user_id": "<uuid>",
        "name": "<string>",
        "raw_name": "<string>",
        "is_system_seed": false,
        "system_seed_key": "<string>",
        "system_seed_source": "category_seed",
        "name_customized": false,
        "icon": "<string>",
        "icon_url": "<string>",
        "cover_image": {},
        "accent_color": "sky",
        "currency_id": "<uuid>",
        "target_amount": "10000.00",
        "monthly_contribution": "250.00",
        "current_saved": "3200.00",
        "target_date": "2026-07-12",
        "linked_wallet_id": "<uuid>",
        "order": 0,
        "status": "active",
        "created_at": "2026-07-12T12:00:00Z",
        "updated_at": "2026-07-12T12:00:00Z",
        "monthly_pace": "230.00",
        "expected_completion_date": "2026-07-12",
        "on_track": false,
        "pace": "on_track",
        "pace_detail": {},
        "auto_contribution": {},
        "eta_month": "2027-03",
        "overdue": false,
        "version": 0,
        "created_by": {}
      }
    }
  ],
  "meta": {
    "pagination": "<string>"
  }
}
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"
}