> ## Documentation Index
> Fetch the complete documentation index at: https://docs.lobbystack.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Get a link that connects Calendly

> Calendly asks the account's owner to agree in a browser, so the API can't connect an account by itself: send the link this returns to whoever owns the Calendly account. They sign in to LobbyStack as an owner or admin of the business, agree on Calendly's page, and land on the dashboard's integrations page, where they can pick the event type to book; PATCH /calendars/{connection_id} can pick it too. The account needs a paid Calendly plan, Standard or above. Each appointment becomes a booking of that event type, made under a stand-in email address so Calendly never emails the caller, and the account's bookings count as busy time. The link works until expires_at. A business with no owner or admin answers 409, because nobody could open the link: invite one with POST /team/invitations first. Connecting another Calendly account replaces the business's Calendly connection, the one without a staff member. A deployment without Calendly answers 403.



## OpenAPI

````yaml /api-reference/openapi.json post /calendars/calendly/connect
openapi: 3.1.0
info:
  title: LobbyStack API
  version: v1
  description: >-
    Read calls, contacts, appointments and messages, book appointments, and
    subscribe to webhooks. Authenticate with an API key in the Authorization
    header. A platform key also names the business it acts on in the
    LobbyStack-Business header. Each key allows 120 requests per minute by
    default.
servers:
  - url: https://app.lobbystack.com/api/v1
security:
  - bearerAuth: []
tags:
  - name: Business
  - name: Receptionist
  - name: Agents
  - name: Billing
  - name: Phone numbers
  - name: Onboarding
  - name: Team
  - name: Website chat
  - name: Calendars
  - name: Notifications
  - name: Calls
  - name: Contacts
  - name: Appointments
  - name: Messages
  - name: Knowledge
  - name: Webhooks
  - name: Platform
  - name: Partner
paths:
  /calendars/calendly/connect:
    post:
      tags:
        - Calendars
      summary: Get a link that connects Calendly
      description: >-
        Calendly asks the account's owner to agree in a browser, so the API
        can't connect an account by itself: send the link this returns to
        whoever owns the Calendly account. They sign in to LobbyStack as an
        owner or admin of the business, agree on Calendly's page, and land on
        the dashboard's integrations page, where they can pick the event type to
        book; PATCH /calendars/{connection_id} can pick it too. The account
        needs a paid Calendly plan, Standard or above. Each appointment becomes
        a booking of that event type, made under a stand-in email address so
        Calendly never emails the caller, and the account's bookings count as
        busy time. The link works until expires_at. A business with no owner or
        admin answers 409, because nobody could open the link: invite one with
        POST /team/invitations first. Connecting another Calendly account
        replaces the business's Calendly connection, the one without a staff
        member. A deployment without Calendly answers 403.
      operationId: createCalendlyConnectLink
      parameters:
        - name: LobbyStack-Business
          in: header
          description: >-
            The business a platform key acts on. Required with a platform key. A
            per-business key may leave it out; if it sends one, it must be the
            key's own business.
          schema:
            type: string
            format: uuid
      responses:
        '201':
          description: Created
          content:
            application/json:
              schema:
                type: object
                required:
                  - data
                properties:
                  data:
                    $ref: '#/components/schemas/CalendarConnectLink'
        '400':
          description: >-
            The request is invalid (invalid_request), or a platform key sent no
            LobbyStack-Business header (business_required).
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '401':
          description: The API key is missing, invalid, or revoked (unauthorized).
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '403':
          description: >-
            Refused. insufficient_scope: the key lacks the business:write scope.
            forbidden: a per-business key named another business in
            LobbyStack-Business. key_owner_inactive: the person the key acts for
            can't any more: a per-business key's creator is no longer an owner
            or admin, or a platform key's owner_email has no verified LobbyStack
            account.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '404':
          description: A platform key named a business it cannot act on (not_found).
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '409':
          description: The request conflicts with the current state.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '429':
          description: >-
            Too many requests (rate_limited). Wait for the Retry-After header's
            number of seconds.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
          headers:
            Retry-After:
              schema:
                type: integer
              description: Seconds to wait.
      security:
        - bearerAuth: []
components:
  schemas:
    CalendarConnectLink:
      type: object
      properties:
        url:
          type: string
          description: >-
            The link to open in a browser. Whoever opens it signs in to
            LobbyStack as an owner or admin of the business, then agrees on
            Google's page.
        expires_at:
          type: string
          format: date-time
          description: The link works until then.
      required:
        - url
        - expires_at
      additionalProperties: false
      description: A link that connects a Google Calendar to the business.
    Error:
      type: object
      properties:
        error:
          type: object
          properties:
            code:
              type: string
              enum:
                - invalid_request
                - unauthorized
                - forbidden
                - insufficient_scope
                - not_found
                - conflict
                - idempotency_key_reused
                - idempotency_request_in_progress
                - booking_disabled
                - booking_requires_confirmation
                - slot_unavailable
                - rate_limited
                - rate_limit_unavailable
                - method_not_allowed
                - internal_error
                - business_required
                - key_owner_inactive
                - plan_limit_reached
                - phone_numbers_unavailable
            message:
              type: string
            details:
              type: array
              items:
                type: object
                properties:
                  path:
                    type: string
                  message:
                    type: string
                required:
                  - path
                  - message
                additionalProperties: false
          required:
            - code
            - message
          additionalProperties: false
      required:
        - error
      additionalProperties: false
  securitySchemes:
    bearerAuth:
      type: http
      scheme: bearer
      description: >-
        An API key from Settings > API keys (lsk_...), which acts on its own
        business, or a platform key from the PLATFORM_API_KEYS setting
        (lsp_...), which onboards and manages businesses. Scopes: business:read,
        business:write, calls:read, contacts:read, contacts:write,
        appointments:read, appointments:write, messages:read, knowledge:read,
        knowledge:write, webhooks:manage, billing:manage, phone_numbers:manage,
        team:manage, businesses:create, users:create, phone_numbers:purchase,
        partner:read, partner.businesses:write, partner.demos:write,
        partner.packages:write, partner.branding:write, partner.templates:write,
        partner.team:write, partner.billing:read, partner.billing:write. Only
        platform keys can hold businesses:create and users:create, and only a
        key a partner made in its console can hold the partner scopes, which the
        Partner endpoints use. Only a partner's owners grant
        partner.billing:read and partner.billing:write.

````

This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.