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

# Create multiple properties

> Create a batch of properties of the specified object type.

export const SupportedProducts = ({marketing, sales, service, cms, marketingLevel, salesLevel, serviceLevel, cmsLevel}) => {
  const translations = {
    header: "Productos compatibles",
    description: "Se requiere uno de los siguientes productos o productos de ediciones superiores.",
    productNames: {
      marketing: "Marketing Hub",
      sales: "Sales Hub",
      service: "Service Hub",
      cms: "Content Hub"
    },
    tiers: {
      free: "Gratuito",
      starter: "Starter",
      professional: "Pro",
      enterprise: "Enterprise"
    }
  };
  const translateTier = tier => {
    if (!tier) return '';
    const lowerTier = tier.toLowerCase();
    return translations.tiers[lowerTier] || tier;
  };
  const products = [{
    name: marketing ? translations.productNames.marketing : '',
    level: translateTier(marketingLevel),
    icon: "https://mintlify-assets.b-cdn.net/Icons/marketing-bolt.svg",
    alt: "Marketing Hub"
  }, {
    name: sales ? translations.productNames.sales : '',
    level: translateTier(salesLevel),
    icon: "https://mintlify-assets.b-cdn.net/Icons/sales-star.svg",
    alt: "Sales Hub"
  }, {
    name: service ? translations.productNames.service : '',
    level: translateTier(serviceLevel),
    icon: "https://mintlify-assets.b-cdn.net/Icons/service-heart.svg",
    alt: "Service Hub"
  }, {
    name: cms ? translations.productNames.cms : '',
    level: translateTier(cmsLevel),
    icon: "https://mintlify-assets.b-cdn.net/Icons/content-play.svg",
    alt: "Content Hub"
  }].filter(product => product.name && product.level);
  if (products.length === 0) return null;
  return <div>
      <div className="text-sm mb-2">{translations.description}</div>
      <div className={`grid ${products.length === 1 ? 'grid-cols-1' : 'grid-cols-2'} gap-1.5`}>
        {products.map((product, index) => <div key={index} style={{
    display: 'flex',
    alignItems: 'center'
  }}>
            <img src={product.icon} alt={product.alt} className="w-3.5 h-3.5 mr-1.5 mt-2.5 mb-2.5 flex-shrink-0 align-middle" />
            <span className="font-medium mr-1 text-sm">{product.name} -</span>
            <span className="text-sm">{product.level}</span>
          </div>)}
      </div>
    </div>;
};

<Accordion title="Supported products" defaultOpen="true" icon="cubes">
  <SupportedProducts marketing={true} sales={true} service={true} cms={true} marketingLevel="FREE" salesLevel="FREE" serviceLevel="FREE" cmsLevel="FREE" />
</Accordion>


## OpenAPI

````yaml specs/2026-03/cms-media-bridge-v2026-03.json POST /media-bridge/2026-03/{appId}/properties/{objectType}/batch/create
openapi: 3.0.1
info:
  title: CMS Media Bridge
  description: Basepom for all HubSpot Projects
  version: 2026-03
  x-hubspot-product-tier-requirements:
    marketing: FREE
    sales: FREE
    service: FREE
    cms: FREE
    commerce: FREE
    crmHub: FREE
    dataHub: FREE
servers:
  - url: https://api.hubapi.com
security: []
tags:
  - name: Advanced
  - name: Basic
  - name: Batch
paths:
  /media-bridge/2026-03/{appId}/properties/{objectType}/batch/create:
    post:
      tags:
        - Batch
      summary: Create multiple properties
      description: Create a batch of properties of the specified object type.
      operationId: post-/media-bridge/2026-03/{appId}/properties/{objectType}/batch/create
      parameters:
        - name: appId
          in: path
          description: ''
          required: true
          style: simple
          explode: false
          schema:
            type: integer
            format: int32
        - name: objectType
          in: path
          description: ''
          required: true
          style: simple
          explode: false
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/BatchInputPropertyCreate'
        required: true
      responses:
        '201':
          description: successful operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BatchResponseProperty'
        '207':
          description: multiple statuses
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BatchResponsePropertyWithErrors'
        default:
          $ref: '#/components/responses/Error'
          description: ''
      security:
        - oauth2:
            - developers-write
components:
  schemas:
    BatchInputPropertyCreate:
      required:
        - inputs
      type: object
      properties:
        inputs:
          type: array
          items:
            $ref: '#/components/schemas/PropertyCreate'
    BatchResponseProperty:
      required:
        - completedAt
        - results
        - startedAt
        - status
      type: object
      properties:
        completedAt:
          type: string
          format: date-time
        links:
          type: object
          additionalProperties:
            type: string
        requestedAt:
          type: string
          format: date-time
        results:
          type: array
          items:
            $ref: '#/components/schemas/Property'
        startedAt:
          type: string
          format: date-time
        status:
          type: string
          enum:
            - CANCELED
            - COMPLETE
            - PENDING
            - PROCESSING
    BatchResponsePropertyWithErrors:
      required:
        - completedAt
        - results
        - startedAt
        - status
      type: object
      properties:
        completedAt:
          type: string
          format: date-time
        errors:
          type: array
          items:
            $ref: '#/components/schemas/StandardError'
        links:
          type: object
          additionalProperties:
            type: string
        numErrors:
          type: integer
          format: int32
        requestedAt:
          type: string
          format: date-time
        results:
          type: array
          items:
            $ref: '#/components/schemas/Property'
        startedAt:
          type: string
          format: date-time
        status:
          type: string
          enum:
            - CANCELED
            - COMPLETE
            - PENDING
            - PROCESSING
    PropertyCreate:
      required:
        - fieldType
        - groupName
        - label
        - name
        - type
      type: object
      properties:
        calculationFormula:
          type: string
        currencyPropertyName:
          type: string
        dataSensitivity:
          type: string
          enum:
            - highly_sensitive
            - non_sensitive
            - sensitive
        description:
          type: string
        displayOrder:
          type: integer
          format: int32
        externalOptions:
          type: boolean
        fieldType:
          type: string
          enum:
            - booleancheckbox
            - calculation_equation
            - checkbox
            - date
            - file
            - html
            - number
            - phonenumber
            - radio
            - select
            - text
            - textarea
        formField:
          type: boolean
        groupName:
          type: string
        hasUniqueValue:
          type: boolean
        hidden:
          type: boolean
        label:
          type: string
        name:
          type: string
        numberDisplayHint:
          type: string
          enum:
            - currency
            - duration
            - formatted
            - percentage
            - probability
            - unformatted
        options:
          type: array
          items:
            $ref: '#/components/schemas/OptionInput'
        referencedObjectType:
          type: string
        showCurrencySymbol:
          type: boolean
        textDisplayHint:
          type: string
          enum:
            - domain_name
            - email
            - ip_address
            - multi_line
            - phone_number
            - physical_address
            - postal_code
            - unformatted_single_line
        type:
          type: string
          enum:
            - bool
            - date
            - datetime
            - enumeration
            - number
            - phone_number
            - string
    Property:
      required:
        - allowedObjectTypes
        - calculated
        - canArchive
        - canRestore
        - createdAt
        - createdUserId
        - currencyPropertyName
        - dataSensitivity
        - dateDisplayHint
        - deleted
        - description
        - displayMode
        - displayOrder
        - enforceMultivalueUniqueness
        - externalOptions
        - externalOptionsReferenceType
        - favorited
        - favoritedOrder
        - fieldType
        - formField
        - fromUserId
        - groupName
        - hasUniqueValue
        - hidden
        - hubspotDefined
        - isCustomizedDefault
        - isMultiValued
        - isPartial
        - label
        - mutableDefinitionNotDeletable
        - name
        - numberDisplayHint
        - optionSortStrategy
        - options
        - optionsAreMutable
        - owningAppId
        - portalId
        - readOnlyDefinition
        - readOnlyValue
        - referencedObjectType
        - searchTextAnalysisMode
        - searchableInGlobalSearch
        - sensitiveDataCategories
        - showCurrencySymbol
        - textDisplayHint
        - type
        - updatedAt
      type: object
      properties:
        allowedObjectTypes:
          type: array
          description: Object types permitted to use this property.
          items:
            $ref: '#/components/schemas/ObjectTypeIdProto'
        calculated:
          type: boolean
          description: Whether the property is a calculated field.
        canArchive:
          type: boolean
        canRestore:
          type: boolean
        createdAt:
          type: integer
          description: The timestamp when the property was created, in ISO 8601 format.
          format: int64
        createdUserId:
          type: integer
          description: The ID of the user who created the property.
          format: int64
        currencyPropertyName:
          type: string
          description: The name of the related currency property.
        dataSensitivity:
          type: string
          description: >-
            Indicates the sensitivity level of the property, such as
            "non_sensitive", "sensitive", or "highly_sensitive".
          enum:
            - high
            - none
            - standard
        dateDisplayHint:
          type: string
          enum:
            - absolute
            - absolute_with_relative
            - time_since
            - time_until
        deleted:
          type: boolean
          description: Whether the property has been deleted.
        description:
          type: string
          description: A summary of the property's purpose.
        displayMode:
          type: string
          description: >-
            The mode in which the property is displayed. Can be: "current_value"
            or "all_unique_versions".
          enum:
            - all_unique_versions
            - current_value
        displayOrder:
          type: integer
          description: The position of the item relative to others in the list.
          format: int32
        enforceMultivalueUniqueness:
          type: boolean
        externalOptions:
          type: boolean
          description: >-
            Applicable only for enumeration type properties. Should be set to
            true with a 'referencedObjectType' of 'OWNER'. Otherwise false.
        externalOptionsReferenceType:
          type: string
          description: >-
            When externalOptions is true, indicates the property's option values
            will be populated from other systems (e.g., "OWNER" for the
            hubspot_owner_id property).
        favorited:
          type: boolean
          description: Deprecated. Whether the property is marked as a favorite.
        favoritedOrder:
          type: integer
          description: Deprecated. The order position when marked as favorited.
          format: int32
        fieldType:
          type: string
          description: >-
            Determines how the property will appear in HubSpot's UI or on a
            form. Learn more in the properties API guide.
        formField:
          type: boolean
          description: Whether the property can appear on forms.
        fromUserId:
          type: integer
          description: The ID of the user who last updated the property.
          format: int64
        groupName:
          type: string
          description: The name of the group to which the property is assigned.
        hasUniqueValue:
          type: boolean
          description: Whether the property is a unique identifier property.
        hidden:
          type: boolean
          description: >-
            Whether or not the property will be hidden from the HubSpot UI. It's
            recommended that this be set to false for custom properties.
          example: false
        hubspotDefined:
          type: boolean
          description: A boolean value set to true for HubSpot default properties.
        isCustomizedDefault:
          type: boolean
          description: >-
            For default properties, whether the property has been customized.
            Equivalent to the 'isCustomizedDefault' field.
        isMultiValued:
          type: boolean
          description: Whether the property can contain multiple values.
        isPartial:
          type: boolean
          description: >-
            For default properties, whether the property has been customized.
            Equivalent to the 'isCustomizedDefault' field.
        label:
          type: string
          description: The display label for the property.
        mutableDefinitionNotDeletable:
          type: boolean
          description: Whether the property definition can be customized but not deleted.
        name:
          type: string
          description: The internal name for the property.
        numberDisplayHint:
          type: string
          description: >-
            Hint for how a number property is displayed and validated in
            HubSpot's UI. Can be: "unformatted", "formatted", "currency",
            "percentage", "duration", or "probability".
          enum:
            - currency
            - duration
            - formatted
            - percentage
            - probability
            - unformatted
        optionSortStrategy:
          type: string
          description: >-
            Specifies how to sort property options. Can be either
            "DISPLAY_ORDER" to defer to the displayOrder field, or
            "ALPHABETICAL".
          enum:
            - ALPHABETICAL
            - DISPLAY_ORDER
        options:
          type: array
          description: >-
            A list of valid options for the property. This field is required for
            enumerated properties.
          items:
            $ref: '#/components/schemas/Option'
        optionsAreMutable:
          type: boolean
          description: Whether options can be modified after creation.
        owningAppId:
          type: integer
          format: int64
        portalId:
          type: integer
          description: The ID of the HubSpot account where the property is defined.
          format: int64
        readOnlyDefinition:
          type: boolean
          description: Whether the property's description is read-only.
        readOnlyValue:
          type: boolean
          description: Indicates if the property's value is read-only.
        referencedObjectType:
          type: string
          description: Deprecated. Use externalOptionsReferenceType instead.
          enum:
            - ABANDONED_CART
            - ACCEPTANCE_TEST
            - AD
            - AD_ACCOUNT
            - AD_CAMPAIGN
            - AD_GROUP
            - AI_FORECAST
            - ALL_PAGES
            - APPROVAL
            - APPROVAL_STEP
            - ATTRIBUTION
            - AUDIENCE
            - AUTOMATION_JOURNEY
            - AUTOMATION_PLATFORM_FLOW
            - AUTOMATION_PLATFORM_FLOW_ACTION
            - BET_ALERT
            - BET_DELIVERABLE_SERVICE
            - BLOG_LISTING_PAGE
            - BLOG_POST
            - CALL
            - CAMPAIGN
            - CAMPAIGN_BUDGET_ITEM
            - CAMPAIGN_SPEND_ITEM
            - CAMPAIGN_STEP
            - CAMPAIGN_TEMPLATE
            - CAMPAIGN_TEMPLATE_STEP
            - CART
            - CASE_STUDY
            - CHATFLOW
            - CLIP
            - CMS_URL
            - COMBO_EVENT_CONFIGURATION
            - COMMERCE_PAYMENT
            - COMMUNICATION
            - COMPANY
            - CONTACT
            - CONTACT_CREATE_ATTRIBUTION
            - CONTENT
            - CONTENT_AUDIT
            - CONTENT_AUDIT_PAGE
            - CONVERSATION
            - CONVERSATION_INBOX
            - CONVERSATION_SESSION
            - CRM_OBJECTS_DUMMY_TYPE
            - CRM_PIPELINES_DUMMY_TYPE
            - CTA
            - CTA_VARIANT
            - DATA_PRIVACY_CONSENT
            - DATA_SYNC_STATE
            - DEAL
            - DEAL_CREATE_ATTRIBUTION
            - DEAL_REGISTRATION
            - DEAL_SPLIT
            - DISCOUNT
            - DISCOUNT_CODE
            - DISCOUNT_TEMPLATE
            - EMAIL
            - ENGAGEMENT
            - EXPORT
            - EXTERNAL_WEB_URL
            - FEE
            - FEEDBACK_SUBMISSION
            - FEEDBACK_SURVEY
            - FILE_MANAGER_FILE
            - FILE_MANAGER_FOLDER
            - FOLDER
            - FORECAST
            - FORM
            - FORM_SUBMISSION_INBOUNDDB
            - GOAL_TARGET
            - GOAL_TARGET_GROUP
            - GOAL_TEMPLATE
            - GSC_PROPERTY
            - HUB
            - IMPORT
            - INVOICE
            - KEYWORD
            - KNOWLEDGE_ARTICLE
            - LANDING_PAGE
            - LEAD
            - LINE_ITEM
            - MARKETING_CALENDAR
            - MARKETING_CAMPAIGN_UTM
            - MARKETING_EMAIL
            - MARKETING_EVENT
            - MARKETING_EVENT_ATTENDANCE
            - MARKETING_SMS
            - MEDIA_BRIDGE
            - MEETING_EVENT
            - MIC
            - NOTE
            - OBJECT_LIST
            - ORDER
            - OWNER
            - PARTNER_ACCOUNT
            - PARTNER_CLIENT
            - PARTNER_CLIENT_REVENUE
            - PARTNER_SERVICE
            - PAYMENT_LINK
            - PAYMENT_SCHEDULE
            - PAYMENT_SCHEDULE_INSTALLMENT
            - PERMISSIONS_TESTING
            - PLAYBOOK
            - PLAYBOOK_QUESTION
            - PLAYBOOK_SUBMISSION
            - PLAYBOOK_SUBMISSION_ANSWER
            - PLAYLIST
            - PLAYLIST_FOLDER
            - PODCAST_EPISODE
            - PORTAL
            - PORTAL_OBJECT_SYNC_MESSAGE
            - POSTAL_MAIL
            - PRIVACY_SCANNER_COOKIE
            - PRODUCT
            - PRODUCT_OR_FOLDER
            - PROPERTY_INFO
            - PROSPECTING_AGENT_CONTACT_ASSIGNMENT
            - PUBLISHING_TASK
            - QUARANTINED_SUBMISSION
            - QUOTA
            - QUOTE
            - QUOTE_FIELD
            - QUOTE_MODULE
            - QUOTE_MODULE_FIELD
            - QUOTE_TEMPLATE
            - RESTORABLE_CRM_OBJECT
            - ROSTER
            - ROSTER_MEMBER
            - SALES_DOCUMENT
            - SALES_TASK
            - SALES_WORKLOAD
            - SALESFORCE_SYNC_ERROR
            - SCHEDULING_PAGE
            - SCHEMAS_BACKEND_TEST
            - SCORE_CONFIGURATION
            - SEQUENCE
            - SEQUENCE_ENROLLMENT
            - SEQUENCE_STEP
            - SEQUENCE_STEP_ENROLLMENT
            - SERVICE
            - SITE_PAGE
            - SNIPPET
            - SOCIAL_BROADCAST
            - SOCIAL_CHANNEL
            - SOCIAL_POST
            - SOCIAL_PROFILE
            - SOX_PROTECTED_DUMMY_TYPE
            - SOX_PROTECTED_TEST_TYPE
            - SUBMISSION_TAG
            - SUBSCRIPTION
            - TASK
            - TASK_TEMPLATE
            - TAX
            - TEMPLATE
            - TICKET
            - UNKNOWN
            - UNSUBSCRIBE
            - USER
            - VIEW
            - VIEW_BLOCK
            - WEB_INTERACTIVE
        searchTextAnalysisMode:
          type: string
          enum:
            - NONE
            - NOT_ANALYZED_TEXT
        searchableInGlobalSearch:
          type: boolean
          description: Whether the property is searchable globaly.
        sensitiveDataCategories:
          type: array
          description: >-
            When sensitiveData is true, lists the type of sensitive data
            contained in the property (e.g., "HIPAA").
          items:
            type: string
        showCurrencySymbol:
          type: boolean
          description: Whether to show the currency symbol in HubSpot's UI.
        textDisplayHint:
          type: string
          description: >-
            Hint for how the text is displayed and validated in HubSpot's UI.
            Can be: "unformatted_single_line", "multi_line", "email",
            "phone_number", "domain_name", "ip_address", "physical_address", or
            "postal_code".
          enum:
            - domain_name
            - email
            - ip_address
            - multi_line
            - phone_number
            - physical_address
            - postal_code
            - unformatted_single_line
        type:
          type: string
          description: The data type of the property, such as string or number.
          enum:
            - bool
            - currency_number
            - date
            - datetime
            - enumeration
            - json
            - number
            - object_coordinates
            - phone_number
            - string
        updatedAt:
          type: integer
          description: >-
            The timestamp when the property was last updated, in ISO 8601
            format.
          format: int64
      description: A HubSpot property
    StandardError:
      required:
        - category
        - context
        - errors
        - links
        - message
        - status
      type: object
      properties:
        category:
          type: string
          description: The main category of the error.
        context:
          type: object
          additionalProperties:
            type: array
            items:
              type: string
          description: Additional context-specific information related to the error.
        errors:
          type: array
          description: The detailed error objects.
          items:
            $ref: '#/components/schemas/ErrorDetail'
        id:
          type: string
          description: A unique ID for the error instance.
        links:
          type: object
          additionalProperties:
            type: string
          description: >-
            URLs linking to documentation or resources associated with the
            error.
        message:
          type: string
          description: >-
            A human-readable string describing the error and possible
            remediation steps.
        status:
          type: string
          description: The HTTP status code associated with the error.
        subCategory:
          type: object
          properties: {}
          description: A more specific error category within each main category.
      description: Ye olde error
    Error:
      required:
        - category
        - correlationId
        - message
      type: object
      properties:
        category:
          type: string
          description: The error category
        context:
          type: object
          additionalProperties:
            type: array
            items:
              type: string
          description: Context about the error condition
          example: >-
            {invalidPropertyName=[propertyValue], missingScopes=[scope1,
            scope2]}
        correlationId:
          type: string
          description: >-
            A unique identifier for the request. Include this value with any
            error reports or support tickets
          format: uuid
          example: aeb5f871-7f07-4993-9211-075dc63e7cbf
        errors:
          type: array
          description: further information about the error
          items:
            $ref: '#/components/schemas/ErrorDetail'
        links:
          type: object
          additionalProperties:
            type: string
          description: >-
            A map of link names to associated URIs containing documentation
            about the error or recommended remediation steps
        message:
          type: string
          description: >-
            A human readable message describing the error along with remediation
            steps where appropriate
          example: An error occurred
        subCategory:
          type: string
          description: >-
            A specific category that contains more specific detail about the
            error
      example:
        message: Invalid input (details will vary based on the error)
        correlationId: aeb5f871-7f07-4993-9211-075dc63e7cbf
        category: VALIDATION_ERROR
        links:
          knowledge-base: https://www.hubspot.com/products/service/knowledge-base
    OptionInput:
      required:
        - displayOrder
        - hidden
        - label
        - value
      type: object
      properties:
        description:
          type: string
        displayOrder:
          type: integer
          format: int32
        hidden:
          type: boolean
        label:
          type: string
        value:
          type: string
    ObjectTypeIdProto:
      required:
        - innerId
        - metaTypeId
      type: object
      properties:
        innerId:
          type: integer
          format: int32
        metaTypeId:
          type: integer
          format: int32
    Option:
      required:
        - description
        - displayOrder
        - doubleData
        - hidden
        - label
        - readOnly
        - value
      type: object
      properties:
        description:
          type: string
          description: A description of the option.
        displayOrder:
          type: integer
          description: The position of the item relative to others in the list.
          format: int32
        doubleData:
          type: number
        hidden:
          type: boolean
          description: Whether the option is displayed in HubSpot's UI.
        label:
          type: string
          description: A user-friendly label that identifies the option.
        readOnly:
          type: boolean
          description: Whether the option is read-only.
        value:
          type: string
          description: The actual value of the option.
      description: A HubSpot property option
    ErrorDetail:
      required:
        - message
      type: object
      properties:
        code:
          type: string
          description: The status code associated with the error detail
        context:
          type: object
          additionalProperties:
            type: array
            items:
              type: string
          description: Context about the error condition
          example: '{missingScopes=[scope1, scope2]}'
        in:
          type: string
          description: The name of the field or parameter in which the error was found.
        message:
          type: string
          description: >-
            A human readable message describing the error along with remediation
            steps where appropriate
        subCategory:
          type: string
          description: >-
            A specific category that contains more specific detail about the
            error
  responses:
    Error:
      description: An error occurred.
      content:
        '*/*':
          schema:
            $ref: '#/components/schemas/Error'
  securitySchemes:
    oauth2:
      type: oauth2
      flows:
        authorizationCode:
          authorizationUrl: https://app.hubspot.com/oauth/authorize
          tokenUrl: https://api.hubapi.com/oauth/v1/token
          scopes:
            developers-read: ''
            developers-write: ''
            media_bridge.write: ''

````