List team members
Lists team members, newest first. Scope: team_members:read. Default excludes terminal states - filter status=revoked (dashboard-revoked) or status=expired (auto-expired scanners) explicitly to audit past staff (their records are preserved forever so Transaction.team_member_id history stays attributable).
Common queries:
- Who can act at a store:
?location_id=loc_...(admins are NOT returned by this filter - they have implicit all-location access; fetch them with?role=admin) - Pending invitations:
?status=invited - Temporary staff: filter client-side on
expires_at != null
See Pagination.
Authorizations
Your secret API key as a Bearer token: Authorization: Bearer vxn_sk_.... Keys are created and scoped in the dashboard - see Authentication.
Query Parameters
Page size, 1-100. Default 25.
1 <= x <= 100Cursor: object id from the previous page (forward walk). Numeric offset or page parameters are not supported; cursors are the only supported paging mechanism.
Cursor: object id from the previous page (reverse walk).
Filter: admin, manager, scanner.
admin, manager, scanner Lifecycle filter. Default (omitted) returns invited + active only - terminal states must be asked for explicitly.
invited, active, revoked, expired Members whose scope includes this location.
Exact-match email lookup.
Response
The team member object.
Standard cursor-pagination envelope for list endpoints. See the Pagination guide.
Always "list".
"list"Array of the requested resource type.
True when more pages exist - pass the last item id as starting_after.
Cursor for the next page in the direction you are already paging, or null when this page ends the collection. has_more: true always comes with a non-null next_cursor.
Feed it back to the SAME parameter you used: starting_after when paging forward (the default), or ending_before when paging backward. Treat it as opaque and do not parse it.
You no longer need to take the last object's id yourself. That still works and is unchanged, but deriving the cursor from the page put the burden of knowing the sort direction on you, and it broke silently on any endpoint whose cursor is not the object id.
"cus_iofv5j4hn6bphinmmyat27tc5y"
Stable collection URL.
"/v1/team_members"