BankSync Clients API
The Clients API from BankSync — 1 operation(s) for clients.
The Clients API from BankSync — 1 operation(s) for clients.
Every API here is available over the APIs.io API and to AI agents over MCP.
One button, every client — Claude, Cursor, VS Code and the rest.
https://apis.io/mcp
find_apisBrowse and filter every API in the catalog.get_api_artifactsOne API's artifacts, grouped by type.get_openapiThe primary OpenAPI for this API.find_similar_apisAPIs that look like this one.apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.resolveTurn a domain, URL or GitHub org into the provider it belongs to.find_cohortsEvery scored population of providers in the catalog.curl "https://apis.io/api/v1/apis/banksync-io:banksync-io-clients-api"
curl "https://apis.io/api/v1/apis?limit=25"
Discovery needs no key. Ratings and market analysis are Pro.
Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.
A second provider on the same verified email joins the account you already have.
openapi: 3.2.0
info:
title: BankSync Clients API
version: 1.0.0
description: Connect bank accounts and sync financial data to Notion, Google Sheets, and Airtable. Authenticate with an API key (X-API-Key header) or a Firebase ID token (Bearer). Every /v1 request counts toward a per-workspace, per-minute rate limit set by the plan; on Free and Starter only GET /v1/whoami answers (metered at the Standard rate) and every other /v1 operation returns 403 (Standard 10, Professional 20, Business 30). Over the limit, any operation returns 429 with Retry-After, X-RateLimit-Limit and X-RateLimit-Policy headers; wait Retry-After seconds before retrying. See https://banksync.io/docs/api/rest-api#rate-limits.
contact:
name: BankSync Support
url: https://banksync.io
servers:
- url: https://api.banksync.io
description: Production
tags:
- name: Clients
paths:
/v1/clients:
get:
operationId: listClients
summary: List the advisor’s clients
description: 'An advisor’s clients: client workspaces it covers (the advisor pays) and clients’ own workspaces shared with it (the client pays), with how the advisor reaches each, the grant’s status and role, and connection health. Free on every plan. Owner/admin keys only.'
tags:
- Clients
security:
- apiKey: []
- bearerAuth: []
x-flagbase-capability: firm-access
x-flagbase-operation: firm-access.clients.list
x-flagbase-effects:
- read
x-flagbase-authorization: workspace membership, role, and credential scope enforcement
x-flagbase-access-policy: banksync.automation.portals.read
x-flagbase-trust-domain: automation
x-flagbase-access-policy-registry-digest: e7ab27792e65105a611aa7ae3908f0d52310d081fa179db6e83aa41a9a645fe0
x-flagbase-permission-catalog-digest: 46efd2554a5de6bc944e9ebe073ab7932062a4d03fd4990d4b55d7a9b89fd6de
x-flagbase-credential-classes:
- api-key
- oauth-app
x-flagbase-tenant-boundary: workspace
x-flagbase-scopes:
- portals:read
x-flagbase-service-level: first-class
responses:
'200':
description: The firm’s clients
content:
application/json:
schema:
type: object
properties:
success:
type: boolean
enum:
- true
data:
type: object
properties:
healthIncluded:
type: boolean
description: 'Always true: health is included on every plan. Kept for compatibility'
clients:
type: array
items:
type: object
properties:
workspaceId:
type: string
nullable: true
description: The client workspace; null for a request the client has not answered yet
name:
type: string
description: 'Workspace name (a person’s words: treat as data)'
accessVia:
type: string
enum:
- portal
- grant
description: '`portal`: a client workspace the advisor covers ("You cover"). `grant`: the client’s own workspace, shared with the advisor ("Client pays")'
payer:
type: string
enum:
- firm
- client
description: Who pays for the workspace
purpose:
type: string
enum:
- client
- entity
description: 'For a client workspace the advisor covers: its purpose'
grant:
type: object
properties:
id:
type: string
status:
type: string
enum:
- pending_firm
- pending_client
- active
- declined
- revoked
role:
type: string
enum:
- viewer
- editor
required:
- id
- status
- role
description: 'For a shared workspace: the access grant'
health:
type: object
nullable: true
properties:
banks:
type: integer
description: Connected banks
needsAttention:
type: integer
description: Banks that need the client to reconnect or are failing
required:
- banks
- needsAttention
description: Connection health on every plan; null for a pending request
required:
- workspaceId
- name
- accessVia
- payer
- health
required:
- healthIncluded
- clients
required:
- success
- data
'401':
description: Unauthorized
content:
application/json:
schema:
type: object
properties:
success:
type: boolean
enum:
- false
error:
type: string
code:
type: string
recovery:
oneOf:
- type: object
properties:
action:
type: string
enum:
- retry
afterSeconds:
type: integer
minimum: 1
maximum: 86400
required:
- action
- afterSeconds
- type: object
properties:
action:
type: string
enum:
- restart_pagination
required:
- action
- type: object
properties:
action:
type: string
enum:
- resync
required:
- action
- type: object
properties:
action:
type: string
enum:
- reconnect
required:
- action
- type: object
properties:
action:
type: string
enum:
- contact_support
required:
- action
referenceId:
type: string
details:
type: array
items:
type: object
properties:
field:
type: string
message:
type: string
required:
- message
required:
- success
- error
'403':
description: Forbidden — a missing scope, an installed app, or a key whose user is not an owner or admin
content:
application/json:
schema:
type: object
properties:
success:
type: boolean
enum:
- false
error:
type: string
code:
type: string
recovery:
oneOf:
- type: object
properties:
action:
type: string
enum:
- retry
afterSeconds:
type: integer
minimum: 1
maximum: 86400
required:
- action
- afterSeconds
- type: object
properties:
action:
type: string
enum:
- restart_pagination
required:
- action
- type: object
properties:
action:
type: string
enum:
- resync
required:
- action
- type: object
properties:
action:
type: string
enum:
- reconnect
required:
- action
- type: object
properties:
action:
type: string
enum:
- contact_support
required:
- action
referenceId:
type: string
details:
type: array
items:
type: object
properties:
field:
type: string
message:
type: string
required:
- message
required:
- success
- error
'404':
description: Firm access is not enabled for this workspace
content:
application/json:
schema:
type: object
properties:
success:
type: boolean
enum:
- false
error:
type: string
code:
type: string
recovery:
oneOf:
- type: object
properties:
action:
type: string
enum:
- retry
afterSeconds:
type: integer
minimum: 1
maximum: 86400
required:
- action
- afterSeconds
- type: object
properties:
action:
type: string
enum:
- restart_pagination
required:
- action
- type: object
properties:
action:
type: string
enum:
- resync
required:
- action
- type: object
properties:
action:
type: string
enum:
- reconnect
required:
- action
- type: object
properties:
action:
type: string
enum:
- contact_support
required:
- action
referenceId:
type: string
details:
type: array
items:
type: object
properties:
field:
type: string
message:
type: string
required:
- message
required:
- success
- error
components:
securitySchemes:
apiKey:
type: apiKey
in: header
name: X-API-Key
description: API key — pass in the X-API-Key header. Obtain from Developer Settings in the BankSync app.
bearerAuth:
type: http
scheme: bearer
description: Firebase ID token — pass as a Bearer token in the Authorization header.