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

# Create property definition

> Create a property definition. Keys are lowercase letters, digits, and underscores, start with a letter, and are unique among the organization’s live definitions; a duplicate returns 409 with code PROPERTY_KEY_TAKEN. `options` is required for select and multi_select properties and not allowed for any other type.



## OpenAPI

````yaml /api-reference/openapi.json post /v1/property-definitions
openapi: 3.1.0
info:
  title: Bizzy API
  version: 1.0.0
  description: Bizzy API for managing businesses, customers, contacts, and more.
servers:
  - url: https://api.bizzyco.ai
    description: Production
security: []
tags:
  - name: Automations
    description: Manage workflow automation rules
    x-group: Automations
  - name: Automation Executions
    description: View automation execution history
    x-group: Automations
  - name: Businesses
    description: Manage business profiles
    x-group: Businesses
  - name: Business Offerings
    description: Manage products and services offered by businesses
    x-group: Businesses
  - name: Business Online Presences
    description: Manage websites and social media links
    x-group: Businesses
  - name: Business Physical Presences
    description: Manage physical locations and addresses
    x-group: Businesses
  - name: Business Profile
    description: View and update business profile details
    x-group: Businesses
  - name: Business Properties
    description: Set and review custom property values on businesses
    x-group: Businesses
  - name: Contacts
    description: Manage contact records
    x-group: Contacts
  - name: Contact Addresses
    description: Manage mailing addresses for contacts
    x-group: Contacts
  - name: Contact Emails
    description: Manage email addresses for contacts
    x-group: Contacts
  - name: Contact Phone Numbers
    description: Manage phone numbers for contacts
    x-group: Contacts
  - name: Contact Properties
    description: Set and review custom property values on contacts
    x-group: Contacts
  - name: Customers
    description: Manage customer records
    x-group: Customers
  - name: Customer Transactions
    description: View customer transaction history
    x-group: Customers
  - name: Customer Properties
    description: Set and review custom property values on customers
    x-group: Customers
  - name: Domains
    description: Manage domain names
    x-group: Domains
  - name: Domain Contacts
    description: Manage contacts associated with domains
    x-group: Domains
  - name: Domain Registrations
    description: Manage domain registration records
    x-group: Domains
  - name: Email Templates
    description: Manage reusable email templates
    x-group: Email Templates
  - name: Email Opt-ins
    description: Record and withdraw recipients' marketing email opt-ins
    x-group: Email Templates
  - name: Files
    description: Manage file uploads and downloads
    x-group: Files
  - name: File Access Links
    description: Manage shareable file access links
    x-group: Files
  - name: Folders
    description: Organize files into folders
    x-group: Files
  - name: Messages
    description: Manage email messages
    x-group: Messages
  - name: Message Attachments
    description: Access message file attachments
    x-group: Messages
  - name: Message Contacts
    description: View contacts associated with messages
    x-group: Messages
  - name: Property Definitions
    description: Manage the custom properties contacts, customers, and businesses can hold
    x-group: Properties
  - name: Tasks
    description: Manage task records
    x-group: Tasks
  - name: Task Assignees
    description: Manage user assignments to tasks
    x-group: Tasks
  - name: Task Activity
    description: View task activity and change history
    x-group: Tasks
paths:
  /v1/property-definitions:
    post:
      tags:
        - Property Definitions
      summary: Create property definition
      description: >-
        Create a property definition. Keys are lowercase letters, digits, and
        underscores, start with a letter, and are unique among the
        organization’s live definitions; a duplicate returns 409 with code
        PROPERTY_KEY_TAKEN. `options` is required for select and multi_select
        properties and not allowed for any other type.
      operationId: createPropertyDefinition
      parameters:
        - schema:
            type: string
            minLength: 1
            maxLength: 255
            description: >-
              Key that makes this request safe to retry. Reuse the same value
              when retrying a request that may already have succeeded — the
              original response is replayed with an `Idempotency-Replay: true`
              header. Use a new value for a new operation.
            example: 9f8c2b1a-4d3e-4a6b-8c1d-2e3f4a5b6c7d
          required: false
          description: >-
            Key that makes this request safe to retry. Reuse the same value when
            retrying a request that may already have succeeded — the original
            response is replayed with an `Idempotency-Replay: true` header. Use
            a new value for a new operation.
          name: idempotency-key
          in: header
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/PropertyDefinitionCreate'
      responses:
        '201':
          description: Property definition created successfully
          headers:
            X-RateLimit-Limit:
              schema:
                type: integer
              description: Maximum burst of requests the tier allows per minute
            X-RateLimit-Remaining:
              schema:
                type: integer
              description: Requests remaining in the current window after this request
            X-RateLimit-Reset:
              schema:
                type: integer
              description: Seconds until the allowance is fully replenished
            Idempotency-Replay:
              schema:
                type: boolean
              description: >-
                Present and `true` when this response is a replay of an earlier
                request with the same Idempotency-Key
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    $ref: '#/components/schemas/PropertyDefinition'
                  meta:
                    type: object
                    properties:
                      pagination:
                        type: object
                        properties:
                          total:
                            type: number
                          limit:
                            type: number
                          offset:
                            type: number
                          hasMore:
                            type: boolean
                        required:
                          - limit
                          - offset
                          - hasMore
                required:
                  - data
        '400':
          description: Invalid input
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiError'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiError'
        '403':
          description: Insufficient permissions
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiError'
        '404':
          description: Resource not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiError'
        '409':
          description: >-
            A live property definition already uses this key (error code
            PROPERTY_KEY_TAKEN), or a request with the same Idempotency-Key is
            still in progress (error code IDEMPOTENCY_KEY_IN_FLIGHT)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiError'
        '422':
          description: >-
            This Idempotency-Key was already used for a different request (error
            code IDEMPOTENCY_KEY_REUSED)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiError'
        '429':
          description: Rate limit exceeded for the account tier (error code RATE_LIMITED)
          headers:
            X-RateLimit-Limit:
              schema:
                type: integer
              description: Maximum burst of requests the tier allows per minute
            X-RateLimit-Remaining:
              schema:
                type: integer
              description: Requests remaining in the current window after this request
            X-RateLimit-Reset:
              schema:
                type: integer
              description: Seconds until the allowance is fully replenished
            Retry-After:
              schema:
                type: integer
              description: Seconds to wait before the next request will be accepted
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiError'
        '500':
          description: Internal server error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiError'
      security:
        - bearerAuth: []
components:
  schemas:
    PropertyDefinitionCreate:
      type: object
      properties:
        key:
          type: string
          pattern: ^[a-z][a-z0-9_]{0,62}$
        label:
          type: string
          minLength: 1
        description:
          type:
            - string
            - 'null'
        valueType:
          type: string
          enum:
            - text
            - number
            - boolean
            - date
            - url
            - select
            - multi_select
        options:
          type:
            - array
            - 'null'
          items:
            type: string
            minLength: 1
          minItems: 1
        objectTypes:
          type: array
          items:
            type: string
            enum:
              - contact
              - customer
              - business
          minItems: 1
      required:
        - key
        - label
        - valueType
        - objectTypes
      additionalProperties: false
    PropertyDefinition:
      type: object
      properties:
        id:
          type: string
          format: uuid
        createdAt:
          type: string
          format: date-time
        updatedAt:
          type: string
          format: date-time
        deletedAt:
          type:
            - string
            - 'null'
          format: date-time
        organizationId:
          type: string
          format: uuid
        key:
          type: string
          description: Stable identifier, unique among the organization’s live definitions
          example: lead_source
        label:
          type: string
        description:
          type:
            - string
            - 'null'
        valueType:
          type: string
          enum:
            - text
            - number
            - boolean
            - date
            - url
            - select
            - multi_select
        options:
          type:
            - array
            - 'null'
          items:
            type: string
          description: >-
            Allowed values for select and multi_select properties; null
            otherwise
        objectTypes:
          type: array
          items:
            type: string
            enum:
              - contact
              - customer
              - business
          description: The object types this property applies to
        createdByKind:
          type: string
          enum:
            - user
            - agent
            - system
        createdByUserId:
          type:
            - string
            - 'null'
          format: uuid
        createdByAgentId:
          type:
            - string
            - 'null'
          format: uuid
      required:
        - id
        - createdAt
        - updatedAt
        - deletedAt
        - organizationId
        - key
        - label
        - description
        - valueType
        - options
        - objectTypes
        - createdByKind
        - createdByUserId
        - createdByAgentId
    ApiError:
      type: object
      properties:
        error:
          type: object
          properties:
            message:
              type: string
            code:
              type: string
            details: {}
          required:
            - message
            - code
      required:
        - error
  securitySchemes:
    bearerAuth:
      type: http
      scheme: bearer
      description: API key authentication via Bearer token

````

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