Sail

List Activity

GET/users/{user_id}/accounts/{account_id}/activity

Paginated account activity: contributions, distributions, interest, and fees. Requires the benefit_account key scope and product. Contribution rows carry a source. Other types do not.

Path Parameters

user_idstringrequired

The Sail user id.

account_idstringrequired

The Sail account id.

Query Parameters

typestring

Filter to one activity type.

tax_yearinteger

Filter to a specific tax year.

limitinteger

Max results per page.

offsetinteger

Pagination offset.

Response

Contribution history.

dataobject[]
Show data properties
idstring

The Sail activity id.

account_idstring

The account this activity occurred on.

type"contribution" | "distribution" | "interest" | "fee"

The kind of activity.

datestring<date>

When the activity occurred.

amountnumber<float>

Positive for money in (contributions, interest), negative for money out (distributions, fees).

tax_yearinteger

The tax year this activity is attributed to.

source"payroll" | "employer" | "individual" | "rollover" | "unknown" | null

Present on contribution rows only.

descriptionstring

Human-readable description of the activity.

paginationobject

Pagination metadata for this page.

Show pagination properties
totalinteger

Total number of matching records, across all pages.

limitinteger

The limit used for this page.

offsetinteger

The offset used for this page.

has_moreboolean

Whether additional pages remain after this one.

Standard error envelope covering 400, 401, 403, 404, 429, and 500.

errorobject

The error detail.

Show error properties
codestring

Machine-readable code, e.g. not_found, token_scope_mismatch, product_not_enabled, insufficient_key_scope, insufficient_token_scope, user_token_required, user_token_expired, invalid_user_token, invalid_key_configuration, connection_not_reconnectable, rate_limited.

messagestring

Human-readable error message. May change, so match on error.code instead.

paramstring

The request field that caused the error, when applicable. Null otherwise.

Request
curl -X GET "https://live.savewithsail.com/api/v1/users/<user_id>/accounts/<account_id>/activity?type=<type>&tax_year=<tax_year>&limit=<limit>&offset=<offset>" \
  -H "Authorization: Bearer <token>"
Response
{
  "data": [
    {
      "id": "string",
      "account_id": "string",
      "type": "contribution",
      "date": "2024-01-01",
      "amount": 0,
      "tax_year": 0,
      "source": "payroll",
      "description": "string"
    }
  ],
  "pagination": {
    "total": 0,
    "limit": 0,
    "offset": 0,
    "has_more": true
  }
}