> ## 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.

# Create a business

> Platform keys only. Creates a business owned by the account in the key's owner_email, and lets every key of the same partner act on it. Idempotency-Key is required: a retry with the same value returns the business it created, however much later, and a different body with that value is a 422.



## OpenAPI

````yaml /api-reference/openapi.json post /businesses
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: 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
paths:
  /businesses:
    post:
      tags:
        - Platform
      summary: Create a business
      description: >-
        Platform keys only. Creates a business owned by the account in the key's
        owner_email, and lets every key of the same partner act on it.
        Idempotency-Key is required: a retry with the same value returns the
        business it created, however much later, and a different body with that
        value is a 422.
      operationId: createBusiness
      parameters:
        - name: Idempotency-Key
          in: header
          required: true
          description: >-
            Required. A unique value, up to 255 characters, that makes retries
            of this request safe.
          schema:
            type: string
            maxLength: 255
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/BusinessCreate'
      responses:
        '201':
          description: Created
          content:
            application/json:
              schema:
                type: object
                required:
                  - data
                properties:
                  data:
                    $ref: '#/components/schemas/Business'
        '400':
          description: >-
            The request is invalid (invalid_request), including a missing
            Idempotency-Key.
          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 businesses:create
            scope. forbidden: only platform keys can call this endpoint.
            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'
        '409':
          description: The request conflicts with the current state.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '422':
          description: >-
            The Idempotency-Key was already used with a different request body
            (idempotency_key_reused).
          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:
    BusinessCreate:
      type: object
      properties:
        name:
          type: string
          minLength: 1
          maxLength: 200
        timezone:
          type: string
          minLength: 1
          maxLength: 80
          description: IANA time zone, for example America/Toronto.
        business_type:
          description: Defaults to service_company, the type the dashboard uses.
          type: string
          minLength: 1
          maxLength: 64
        slug:
          description: >-
            Lowercase letters, digits and hyphens. Made from the name when left
            out. Another business already using it is a 409.
          type: string
          minLength: 2
          maxLength: 120
        locale:
          description: >-
            Default language for callers: en, fr, es, sr (Serbian, Latin
            script), de, pt (Brazilian Portuguese), it or nl. Defaults to en.
          type: string
          enum:
            - en
            - fr
            - es
            - sr
            - de
            - pt
            - it
            - nl
        website_url:
          type: string
          maxLength: 2000
          format: uri
      required:
        - name
        - timezone
      additionalProperties: false
    Business:
      type: object
      properties:
        id:
          type: string
          format: uuid
          description: Stable identifier (UUID).
        name:
          type: string
        timezone:
          type: string
          description: IANA time zone, for example America/Toronto.
        locale:
          type: string
          description: >-
            Default language for callers: en, fr, es, sr (Serbian, Latin
            script), de, pt (Brazilian Portuguese), it or nl.
        website_url:
          type:
            - string
            - 'null'
        business_type:
          type: string
          description: What kind of business it is. The dashboard uses service_company.
        onboarding_stage:
          type: string
          description: >-
            Where the business is in onboarding, for example website,
            phone_number or complete.
        booking_mode:
          type: string
          enum:
            - 'off'
            - request
            - instant
          description: >-
            instant: appointments are booked directly. request: the receptionist
            takes a request and the team confirms it. off: no booking.
        hours:
          type: array
          items:
            type: object
            properties:
              day:
                type: string
                enum:
                  - sunday
                  - monday
                  - tuesday
                  - wednesday
                  - thursday
                  - friday
                  - saturday
              open:
                type: string
                pattern: ^(?:[01]\d|2[0-3]):[0-5]\d$|^24:00$
                description: Local time as 24-hour HH:MM.
              close:
                type: string
                pattern: ^(?:[01]\d|2[0-3]):[0-5]\d$|^24:00$
                description: Local time as 24-hour HH:MM.
            required:
              - day
              - open
              - close
            additionalProperties: false
            description: >-
              One opening window on one day. A day with a break, such as lunch,
              has two windows. Days that are not listed are closed.
        created_at:
          type: string
          format: date-time
          description: ISO 8601 timestamp in UTC.
        updated_at:
          type: string
          format: date-time
          description: ISO 8601 timestamp in UTC.
      required:
        - id
        - name
        - timezone
        - locale
        - website_url
        - business_type
        - onboarding_stage
        - booking_mode
        - hours
        - created_at
        - updated_at
      additionalProperties: false
    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
            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. Only platform keys can
        hold businesses:create and users:create.

````

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