betteroff-finance Settings API
The settings API from betteroff-finance — 13 operation(s) for settings.
The settings API from betteroff-finance — 13 operation(s) for settings.
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/betteroff-finance:betteroff-finance-settings-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: BetterOff Settings API
version: 0.5.0+cd65185c
servers:
- url: https://api.betteroff.finance
tags:
- name: Settings
paths:
/settings/trading-passkey:
patch:
operationId: patchSettingsTradingPasskey
tags:
- Settings
security:
- session: []
requestBody:
required: true
content:
application/json:
schema:
$schema: https://json-schema.org/draft/2020-12/schema
type: object
properties:
required:
type: boolean
required:
- required
additionalProperties: false
responses:
'200':
description: Success
default:
description: Problem details
content:
application/problem+json:
schema:
$ref: '#/components/schemas/ProblemDetails'
summary: Patch settings trading passkey
x-summary-source: derived
/settings/privacy-consent:
patch:
operationId: patchSettingsPrivacyConsent
tags:
- Settings
security:
- session: []
requestBody:
required: true
content:
application/json:
schema:
$schema: https://json-schema.org/draft/2020-12/schema
type: object
properties:
productAnalytics:
type: boolean
aiProcessing:
type: boolean
responses:
'200':
description: Success
default:
description: Problem details
content:
application/problem+json:
schema:
$ref: '#/components/schemas/ProblemDetails'
summary: Patch settings privacy consent
x-summary-source: derived
/settings/security/delete-account:
delete:
operationId: deleteSettingsSecurityDeleteAccount
tags:
- Settings
security:
- session: []
requestBody:
required: true
content:
application/json:
schema:
$schema: https://json-schema.org/draft/2020-12/schema
type: object
properties:
email:
type: string
format: email
pattern: ^(?:[A-Za-z0-9_'+\-]+\.)*[A-Za-z0-9_'+\-]*[A-Za-z0-9_+-]@(?:[A-Za-z0-9][A-Za-z0-9\-]*\.)+[A-Za-z]{2,}$
confirmation:
type: string
const: DELETE
reason: {}
required:
- email
- confirmation
responses:
'200':
description: Success
default:
description: Problem details
content:
application/problem+json:
schema:
$ref: '#/components/schemas/ProblemDetails'
summary: Delete settings security delete account
x-summary-source: derived
/settings/security/cancel-deletion:
post:
operationId: postSettingsSecurityCancelDeletion
tags:
- Settings
security:
- session: []
responses:
'200':
description: Success
default:
description: Problem details
content:
application/problem+json:
schema:
$ref: '#/components/schemas/ProblemDetails'
summary: Post settings security cancel deletion
x-summary-source: derived
/settings/contact-email:
get:
operationId: getSettingsContactEmail
tags:
- Settings
security:
- session: []
responses:
'200':
description: Success
default:
description: Problem details
content:
application/problem+json:
schema:
$ref: '#/components/schemas/ProblemDetails'
summary: Get settings contact email
x-summary-source: derived
post:
operationId: postSettingsContactEmail
tags:
- Settings
security:
- session: []
requestBody:
required: true
content:
application/json:
schema:
$schema: https://json-schema.org/draft/2020-12/schema
anyOf:
- type: object
properties:
email:
type: string
maxLength: 254
format: email
pattern: ^(?:[A-Za-z0-9_'+\-]+\.)*[A-Za-z0-9_'+\-]*[A-Za-z0-9_+-]@(?:[A-Za-z0-9][A-Za-z0-9\-]*\.)+[A-Za-z]{2,}$
required:
- email
additionalProperties: false
- type: object
properties:
useBillingEmail:
type: boolean
const: true
required:
- useBillingEmail
additionalProperties: false
responses:
'200':
description: Success
default:
description: Problem details
content:
application/problem+json:
schema:
$ref: '#/components/schemas/ProblemDetails'
summary: Post settings contact email
x-summary-source: derived
delete:
operationId: deleteSettingsContactEmail
tags:
- Settings
security:
- session: []
responses:
'200':
description: Success
default:
description: Problem details
content:
application/problem+json:
schema:
$ref: '#/components/schemas/ProblemDetails'
summary: Delete settings contact email
x-summary-source: derived
/settings/contact-email/billing-email:
get:
operationId: getSettingsContactEmailBillingEmail
tags:
- Settings
security:
- session: []
responses:
'200':
description: Success
default:
description: Problem details
content:
application/problem+json:
schema:
$ref: '#/components/schemas/ProblemDetails'
summary: Get settings contact email billing email
x-summary-source: derived
/settings/contact-email/resend:
post:
operationId: postSettingsContactEmailResend
tags:
- Settings
security:
- session: []
responses:
'200':
description: Success
default:
description: Problem details
content:
application/problem+json:
schema:
$ref: '#/components/schemas/ProblemDetails'
summary: Post settings contact email resend
x-summary-source: derived
/settings/contact-email/verify:
post:
operationId: postSettingsContactEmailVerify
tags:
- Settings
security:
- session: []
requestBody:
required: true
content:
application/json:
schema:
$schema: https://json-schema.org/draft/2020-12/schema
type: object
properties:
token:
type: string
minLength: 20
maxLength: 128
required:
- token
additionalProperties: false
responses:
'200':
description: Success
default:
description: Problem details
content:
application/problem+json:
schema:
$ref: '#/components/schemas/ProblemDetails'
summary: Post settings contact email verify
x-summary-source: derived
/settings/contact-email/pending:
delete:
operationId: deleteSettingsContactEmailPending
tags:
- Settings
security:
- session: []
responses:
'200':
description: Success
default:
description: Problem details
content:
application/problem+json:
schema:
$ref: '#/components/schemas/ProblemDetails'
summary: Delete settings contact email pending
x-summary-source: derived
/settings/security/api-tokens:
get:
operationId: getSettingsSecurityApiTokens
tags:
- Settings
security:
- session: []
responses:
'200':
description: Success
content:
application/json:
schema:
$schema: https://json-schema.org/draft/2020-12/schema
type: object
properties:
tokens:
type: array
items:
type: object
properties:
id:
type: string
format: uuid
pattern: ^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$
name:
type:
- string
- 'null'
prefix:
type:
- string
- 'null'
scopes:
type: array
items:
type: string
enum:
- accounts:read
- networth:read
- cashflow:read
- investments:read
- transactions:read
- debts:read
- checklist:read
- activity:read
- corrections:prepare
- feedback:submit
- transfers:prepare
- transfers:bank
- transfers:vault
- transfers:read
createdAt:
type: string
format: date-time
pattern: ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d:[0-5]\d(?:\.\d+)?(?:Z|([+-](?:[01]\d|2[0-3]):[0-5]\d)))$
expiresAt:
type: string
format: date-time
pattern: ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d:[0-5]\d(?:\.\d+)?(?:Z|([+-](?:[01]\d|2[0-3]):[0-5]\d)))$
lastUsedAt:
anyOf:
- type: string
format: date-time
pattern: ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d:[0-5]\d(?:\.\d+)?(?:Z|([+-](?:[01]\d|2[0-3]):[0-5]\d)))$
- type: 'null'
revokedAt:
anyOf:
- type: string
format: date-time
pattern: ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d:[0-5]\d(?:\.\d+)?(?:Z|([+-](?:[01]\d|2[0-3]):[0-5]\d)))$
- type: 'null'
required:
- id
- name
- prefix
- scopes
- createdAt
- expiresAt
- lastUsedAt
- revokedAt
additionalProperties: false
required:
- tokens
additionalProperties: false
default:
description: Problem details
content:
application/problem+json:
schema:
$ref: '#/components/schemas/ProblemDetails'
summary: Get settings security api tokens
x-summary-source: derived
post:
operationId: postSettingsSecurityApiTokens
tags:
- Settings
security:
- session: []
requestBody:
required: true
content:
application/json:
schema:
$schema: https://json-schema.org/draft/2020-12/schema
type: object
properties:
name:
type: string
minLength: 1
maxLength: 80
scopes:
minItems: 1
type: array
items:
type: string
enum:
- accounts:read
- networth:read
- cashflow:read
- investments:read
- transactions:read
- debts:read
- checklist:read
- activity:read
- corrections:prepare
- feedback:submit
- transfers:prepare
- transfers:bank
- transfers:vault
- transfers:read
expiresInDays:
default: 90
type: integer
minimum: 1
maximum: 365
required:
- name
- scopes
responses:
'201':
description: Success
content:
application/json:
schema:
$schema: https://json-schema.org/draft/2020-12/schema
type: object
properties:
id:
type: string
format: uuid
pattern: ^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$
name:
type: string
prefix:
type: string
scopes:
type: array
items:
type: string
enum:
- accounts:read
- networth:read
- cashflow:read
- investments:read
- transactions:read
- debts:read
- checklist:read
- activity:read
- corrections:prepare
- feedback:submit
- transfers:prepare
- transfers:bank
- transfers:vault
- transfers:read
createdAt:
type: string
format: date-time
pattern: ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d:[0-5]\d(?:\.\d+)?(?:Z|([+-](?:[01]\d|2[0-3]):[0-5]\d)))$
expiresAt:
type: string
format: date-time
pattern: ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d:[0-5]\d(?:\.\d+)?(?:Z|([+-](?:[01]\d|2[0-3]):[0-5]\d)))$
token:
type: string
description: Shown once; store it now.
required:
- id
- name
- prefix
- scopes
- createdAt
- expiresAt
- token
additionalProperties: false
default:
description: Problem details
content:
application/problem+json:
schema:
$ref: '#/components/schemas/ProblemDetails'
summary: Post settings security api tokens
x-summary-source: derived
/settings/security/api-tokens/{id}:
delete:
operationId: deleteSettingsSecurityApiTokensId
tags:
- Settings
security:
- session: []
parameters:
- name: id
in: path
required: true
schema:
type: string
responses:
'200':
description: Success
content:
application/json:
schema:
$schema: https://json-schema.org/draft/2020-12/schema
type: object
properties:
revoked:
type: boolean
const: true
required:
- revoked
additionalProperties: false
default:
description: Problem details
content:
application/problem+json:
schema:
$ref: '#/components/schemas/ProblemDetails'
summary: Delete settings security api tokens id
x-summary-source: derived
/settings/preferences:
patch:
operationId: patchSettingsPreferences
tags:
- Settings
security:
- session: []
requestBody:
required: true
content:
application/json:
schema:
$schema: https://json-schema.org/draft/2020-12/schema
type: object
properties:
currency:
type: string
maxLength: 10
dateFormat:
type: string
maxLength: 20
startOfWeek:
type: string
enum:
- sunday
- monday
numberFormat:
type: string
maxLength: 20
notifyEmail:
type: boolean
masterNotifications:
type: boolean
notifyWeeklySummary:
type: boolean
notifyObservationDigest:
type: boolean
notifyPositionAlerts:
type: boolean
responses:
'200':
description: Success
default:
description: Problem details
content:
application/problem+json:
schema:
$ref: '#/components/schemas/ProblemDetails'
summary: Patch settings preferences
x-summary-source: derived
/settings/profile:
patch:
operationId: patchSettingsProfile
tags:
- Settings
security:
- session: []
requestBody:
required: true
content:
application/json:
schema:
$schema: https://json-schema.org/draft/2020-12/schema
type: object
properties:
name:
type: string
minLength: 1
maxLength: 100
avatarUrl:
anyOf:
- type: string
maxLength: 2000
format: uri
- type: 'null'
responses:
'200':
description: Success
default:
description: Problem details
content:
application/problem+json:
schema:
$ref: '#/components/schemas/ProblemDetails'
summary: Patch settings profile
x-summary-source: derived
components:
schemas:
ProblemDetails:
$schema: https://json-schema.org/draft/2020-12/schema
type: object
properties:
type:
type: string
description: Always "about:blank"; branch on `code`.
title:
type: string
status:
type: integer
minimum: -9007199254740991
maximum: 9007199254740991
detail:
type: string
code:
type: string
description: Stable UPPER_SNAKE code.
error:
type: string
description: Older clients' copy of `detail`.
message:
type: string
description: Older clients' copy of `detail`.
requestId:
description: Diagnostic only; quote it to support.
type: string
instance:
type: string
details:
type: object
propertyNames:
type: string
additionalProperties: {}
required:
- type
- title
- status
- detail
- code
- error
- message
additionalProperties: {}
description: RFC 9457 problem details. Some refusals add fields; ignore ones you don't know.
securitySchemes:
session:
type: http
scheme: bearer
description: 'The BetterOff app acting for its signed-in user. Not available to integrations: Better Auth session tokens and browser session cookies are rejected. Use an API token or agent OAuth.'
apiToken:
type: http
scheme: bearer
description: Personal API token (bo_pat_), created in BetterOff settings with the scopes it may use.
agentOAuth:
type: openIdConnect
openIdConnectUrl: https://app.betteroff.finance/api/auth/.well-known/openid-configuration
description: Agent OAuth grant; the same token and scopes as /mcp.