Booksy · Authentication Profile

Booksy Authentication

Authentication

Booksy secures its APIs with http across 2 declared security schemes, as derived from its OpenAPI definitions.

BeautyWellnessBookingAppointmentsSchedulingMarketplaceSalonsBarbershopsSpasPaymentsSmall BusinessWebhooks
Methods: http Schemes: 2 OAuth flows: API key in:

Security Schemes

partnerJwtAssertion assertion
bearerAuth http
scheme: bearer

Source

Authentication Profile

booksy-authentication.yml Raw ↑
generated: '2026-07-31'
method: searched
source: https://docs.booksy.com/v01.html
docs: https://docs.booksy.com/
note: >-
  The live Booksy Public API docs host (docs.booksy.com) is served behind HTTP Basic
  authentication (CloudFront returns 401 with WWW-Authenticate: Basic to anonymous
  clients), so the authentication model below was captured from the identical
  publicly archived rendering of the same documentation at
  https://web.archive.org/web/20220706184310/https://alpha.docs.booksy.net/ and
  corroborated against live 401 challenges from the production API host.
summary:
  types:
  - http
  api_key_in: []
  oauth2_flows: []
  model: partner-issued RSA key pair signs an RS256 JWT assertion which is exchanged
    for a short-lived bearer access token
schemes:
- name: partnerJwtAssertion
  type: assertion
  algorithm: RS256
  description: >-
    Before calling the API a partner signs a JWT with its own RSA private key
    (separate private keys are issued for sandbox and for production). The claim set
    is iss (https://public-api.booksy.com), iat, exp and aud (the partner UUID); the
    JOSE header carries typ JWT and alg RS256. The signed assertion is POSTed to
    {base_url}/token/ together with partner_name.
  token_endpoint: "{base_url}/token/"
  sources:
  - https://docs.booksy.com/v01.html
- name: bearerAuth
  type: http
  scheme: bearer
  bearerFormat: JWT
  description: >-
    All API requests carry the access token in an Authorization header of the form
    "Bearer <access>". Anonymous requests to the production host return HTTP 401
    with body {"detail":"Authentication credentials were not provided."}.
  sources:
  - https://docs.booksy.com/v01.html
  - https://us.booksy.com/public-api/us/business/
tokens:
  access_token_lifetime: 5 minutes
  refresh_token_lifetime: 3 days
  refresh:
    description: >-
      A refresh token is exchanged for a new access token so credentials are not
      re-sent on every expiry. Documented under "Refresh token".
credentials:
  issuance: partner onboarding — Booksy issues a partner UUID, a partner name and an
    RSA private key per environment
  self_service: false
  public_signup: false
unverified_claims:
- claim: >-
    Third-party indexes of the current docs.booksy.com pages also describe an OAuth2
    authorization-code flow with redirect_uri/state and refresh tokens for
    user-approved requests.
  status: unverified
  reason: docs.booksy.com is HTTP Basic gated; no anonymous fetch could confirm an
    oauth2 scheme, so no OAuth2 scheme or scope set is asserted here.
x-evidence:
- fetched: '2026-07-31'
  url: https://docs.booksy.com/
  http_status: 401
  note: WWW-Authenticate Basic
- fetched: '2026-07-31'
  url: https://us.booksy.com/public-api/us/business/
  http_status: 401
  body: '{"detail":"Authentication credentials were not provided."}'
- fetched: '2026-07-31'
  url: https://us.booksy.com/public-api/us/token/
  http_status: 405
  body: '{"detail":"Method \"get\" not allowed."}'