---
title: "List benefit elections for a client"
method: GET
path: "/v1/clients/{clientId}/benefit-elections"
tags: ["Benefit Elections"]
---

# List benefit elections for a client

`GET /v1/clients/{clientId}/benefit-elections`

## Request

- Base URL: `https://api.pasito.ai`
- URL: `https://api.pasito.ai/v1/clients/{clientId}/benefit-elections`
- Auth: HTTP bearer

Newest first, covering elections submitted over REST and dropped over SFTP alike — `deliveredVia` says which.

## Path parameters

- `clientId` string, required

## Query parameters

- `limit` integer

## Response `200`

Default Response

- object
  - `elections` BenefitElectionSnapshot[], required
    - `id` string, required: The benefit-election (extraction run) id — poll it for status.
    - `status` 'requested' | 'in_progress' | 'completed' | 'failed' | 'canceled', required: `completed` means the election was extracted AND applied — a plan year now exists on the client, hidden from employees pending your audit. `failed` means Pasito accepted the workbook(s) but extraction or applying them did not produce a plan year (see `errorCode`).
    - `intakeId` string, required: The election intake record the extraction writes into.
    - `intakeKind` 'first_setup' | 'renewal' | 'new_client', required: Which kind of election this is.
    - `clientId` string, nullable, required: The Pasito company the election landed on, null until applied.
    - `clientRef` string, nullable, required: The client identifier you supplied — your own external id or the Pasito com_ id.
    - `periodId` string, nullable, required: The plan year the election created, null until applied.
    - `deliveredVia` 'api' | 'sftp', required: Whether the election arrived over the REST API or an SFTP drop.
    - `folderPath` string, nullable, required: The SFTP drop folder that produced this election, relative to your SFTP home (e.g. `/client-benefit-elections/9172/2026-09-28T021533`). Null for a REST-initiated election.
    - `errorCode` string, nullable, required: Machine-readable failure reason, present only when `status` is `failed`.
    - `userMessage` string, nullable, required: Human-readable failure reason, present only when `status` is `failed`. Pair with `errorCode` for programmatic handling; show this to a human.
    - `startedAt` string: When extraction started, as an ISO 8601 timestamp. Absent until it does.
    - `finishedAt` string: When extraction finished, as an ISO 8601 timestamp. Absent until it does.
    - `createdAt` string, required: When the election was created, as an ISO 8601 timestamp.

## Other responses

- `401`: Default Response
- `403`: Default Response
- `404`: Default Response
- `429`: Default Response

---

[API](https://skmtc.dev/pasito/apis/pasito-external-api.md) - [All operations](https://skmtc.dev/pasito/apis/pasito-external-api/llms.txt) - [OpenAPI document](https://skmtc.dev/pasito/apis/pasito-external-api/revisions/d206e98c9d61?raw)
