BankSync API Keys API
The API Keys API from BankSync — 2 operation(s) for api keys.
The API Keys API from BankSync — 2 operation(s) for api keys.
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-api-keys-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 API Keys 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: API Keys
paths:
/v1/api-keys:
get:
operationId: listApiKeys
summary: List API keys for this workspace
tags:
- API Keys
security:
- apiKey: []
- bearerAuth: []
responses:
'200':
description: Active API keys for this workspace (keyHash never returned)
content:
application/json:
schema:
type: object
properties:
success:
type: boolean
enum:
- true
data:
type: array
items:
type: object
properties:
id:
type: string
keyPrefix:
type: string
description: First 8 chars of the key for display (e.g. bsk_a3f5)
name:
type: string
scopes:
type: array
items:
type: string
isActive:
type: boolean
expiresAt:
type: string
nullable: true
createdAt:
type: string
createdBy:
type: string
required:
- id
- keyPrefix
- name
- scopes
- isActive
- expiresAt
- createdAt
- createdBy
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
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
post:
operationId: createApiKey
summary: Create an API key
tags:
- API Keys
security:
- bearerAuth: []
requestBody:
required: true
content:
application/json:
schema:
type: object
properties:
name:
type: string
minLength: 1
description: Display name for this key
scopes:
type: array
items:
type: string
enum:
- workspaces:read
- workspaces:write
- banks:read
- banks:write
- feeds:read
- feeds:write
- jobs:read
- jobs:write
- enrichments:read
- enrichments:write
- dashboards:read
- dashboards:write
- portals:read
- portals:write
- integrations:read
- integrations:write
- institutions:read
- tables:read
- tables:write
- feedback:write
- automations:read
- automations:write
- automation_outputs:read
- support:read
- support:write
- account:read
- content:read
- content:write
- notifications:write
- mailboxes:write
- mailboxes:read
- feed_sync:write
- marketplace:read
- marketplace:write
minItems: 1
description: Scopes to grant (e.g. ["banks:read", "feeds:read"])
expiresInDays:
type: integer
minimum: 0
exclusiveMinimum: true
description: Days until expiry; omit for no expiry
cdrAcknowledged:
type: boolean
description: 'Required for workspaces with CDR (Australian) banks: the customer acknowledges CDR data may be read into their own systems via this key.'
cdrWordingVersion:
type: string
description: Disclosure wording version acknowledged (paired with cdrAcknowledged).
required:
- name
- scopes
responses:
'201':
description: API key created. The plaintext key is shown once — store it immediately.
content:
application/json:
schema:
type: object
properties:
success:
type: boolean
enum:
- true
apiKey:
type: string
description: Plaintext key — shown only once
keyId:
type: string
expiresAt:
type: string
nullable: true
required:
- success
- apiKey
- keyId
- expiresAt
'400':
description: Invalid scopes
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
'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 (Admin+ required)
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
/v1/api-keys/{kid}:
delete:
operationId: revokeApiKey
summary: Revoke an API key
tags:
- API Keys
security:
- bearerAuth: []
parameters:
- schema:
type: string
description: Key ID to revoke
required: true
description: Key ID to revoke
name: kid
in: path
responses:
'200':
description: API key revoked
content:
application/json:
schema:
type: object
properties:
success:
type: boolean
enum:
- true
required:
- success
'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 (Admin+ required)
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: Not found
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.