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

# Retrieve multiple custom object schemas in a batch request.

> Obtén los detalles de varios esquemas de objetos personalizados enviando una solicitud por lotes con las entradas especificadas. Esta operación te permite obtener información del esquema, incluidas las propiedades y asociaciones, para varios objetos personalizados en una sola llamada a la API.

export const ScopesList = ({scopes = [], description = "Esta API requiere uno de los siguientes ámbitos:"}) => {
  if (!scopes || scopes.length === 0) {
    return null;
  }
  const sortedScopes = scopes.sort((a, b) => a.localeCompare(b));
  return <div>
      <div className="text-sm mb-2">{description}</div>
      <div>
        {sortedScopes.map((scope, index) => <div key={index}>
            <code>
              <span className="text-xs">{scope}</span>
            </code>
          </div>)}
      </div>
    </div>;
};

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>;
};

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

  <Accordion title="Required Scopes" icon="key">
    <ScopesList
      scopes={[
  'crm.schemas.custom.read',
  'crm.objects.custom.sensitive.read.v2',
  'crm.objects.custom.read',
  'oauth',
  'crm.objects.custom.highly_sensitive.read.v2'
]}
    />
  </Accordion>
</AccordionGroup>


## OpenAPI

````yaml specs/2026-03/crm-schemas-v2026-03.json POST /crm-object-schemas/2026-03/schemas/batch/read
openapi: 3.0.1
info:
  title: Esquemas
  description: Basepom for all HubSpot Projects
  version: 2026-03
  x-hubspot-product-tier-requirements:
    marketing: ENTERPRISE
    sales: ENTERPRISE
    service: ENTERPRISE
    cms: ENTERPRISE
    commerce: ENTERPRISE
    crmHub: ENTERPRISE
    dataHub: ENTERPRISE
  x-hubspot-api-use-case: >-
    Crea un nuevo objeto para almacenar información sobre los automóviles en un
    concesionario de autos. Tu definición del objeto podría incluir propiedades
    para almacenar información, así como los filtros disponibles en la página de
    índice del objeto personalizado.
  x-hubspot-introduction: >-
    Utiliza la API de esquema de objetos personalizados para definir nuevos
    tipos de registros de CRM en tu cuenta. Después de configurar un esquema de
    objetos, podrás crear registros para ese objeto personalizado tanto en
    HubSpot como utilizando la API de objetos.
servers:
  - url: https://api.hubapi.com
security: []
tags:
  - name: Advanced
  - name: Basic
  - name: Batch
paths:
  /crm-object-schemas/2026-03/schemas/batch/read:
    post:
      tags:
        - Batch
      summary: >-
        Obtener varios esquemas de objetos personalizados en una solicitud por
        lotes.
      description: >-
        Obtén los detalles de varios esquemas de objetos personalizados enviando
        una solicitud por lotes con las entradas especificadas. Esta operación
        te permite obtener información del esquema, incluidas las propiedades y
        asociaciones, para varios objetos personalizados en una sola llamada a
        la API.
      operationId: >-
        post-/crm-object-schemas/2026-03/schemas/batch/read_/crm-object-schemas/v3/schemas/batch/read
      parameters: []
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ObjectSchemaBatchReadRequest'
        required: true
      responses:
        '200':
          description: successful operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CollectionResponseObjectSchemaNoPaging'
        default:
          $ref: '#/components/responses/Error'
          description: ''
      security:
        - oauth2:
            - crm.schemas.custom.read
        - oauth2:
            - crm.objects.custom.sensitive.read.v2
        - oauth2:
            - crm.objects.custom.highly_sensitive.read.v2
        - oauth2:
            - crm.objects.custom.read
        - oauth2:
            - oauth
components:
  schemas:
    ObjectSchemaBatchReadRequest:
      required:
        - includeAssociationDefinitions
        - includeAuditMetadata
        - includePropertyDefinitions
        - inputs
      type: object
      properties:
        includeAssociationDefinitions:
          type: boolean
          description: >-
            Indica si se deben incluir definiciones de asociaciones en la
            respuesta.
        includeAuditMetadata:
          type: boolean
          description: Indica si se deben incluir metadatos de auditoría en la respuesta.
        includePropertyDefinitions:
          type: boolean
          description: >-
            Indica si se deben incluir definiciones de propiedades en la
            respuesta.
        inputs:
          type: array
          items:
            type: string
    CollectionResponseObjectSchemaNoPaging:
      required:
        - results
      type: object
      properties:
        results:
          type: array
          items:
            $ref: '#/components/schemas/ObjectSchema'
    ObjectSchema:
      required:
        - allowsSensitiveProperties
        - archived
        - associations
        - fullyQualifiedName
        - id
        - labels
        - name
        - objectTypeId
        - properties
        - requiredProperties
        - searchableProperties
        - secondaryDisplayProperties
      type: object
      properties:
        allowsSensitiveProperties:
          type: boolean
        archived:
          type: boolean
        associations:
          type: array
          description: Asociaciones definidas para un tipo de objeto determinado.
          items:
            $ref: '#/components/schemas/AssociationDefinition'
        createdAt:
          type: string
          description: Cuando se creó el esquema de objetos.
          format: date-time
        createdByUserId:
          type: integer
          format: int32
        description:
          type: string
        fullyQualifiedName:
          type: string
          description: >-
            Un ID único asignado para el objeto, que incluye el ID del portal y
            el nombre del objeto.
        id:
          type: string
          description: >-
            Un ID único para el tipo de objeto de este esquema. Se definirá como
            {meta-type}-{unique ID}.
        labels:
          $ref: '#/components/schemas/ObjectTypeDefinitionLabels'
        name:
          type: string
          description: Un nombre único para el tipo de objeto del esquema.
        objectTypeId:
          type: string
        primaryDisplayProperty:
          type: string
          description: >-
            El nombre de la propiedad principal de este objeto. Se mostrará como
            principal en la página de registro de HubSpot para este tipo de
            objeto.
        properties:
          type: array
          description: Propiedades definidas para este tipo de objeto.
          items:
            $ref: '#/components/schemas/Property'
        requiredProperties:
          type: array
          description: >-
            Los nombres de las propiedades que deben ser **obligatorias** cuando
            se cree un objeto de este tipo.
          items:
            type: string
        searchableProperties:
          type: array
          description: >-
            Los nombres de las propiedades que serán indexadas para este tipo de
            objeto en la búsqueda de productos de HubSpot.
          items:
            type: string
        secondaryDisplayProperties:
          type: array
          description: >-
            Los nombres de las propiedades secundarias de este objeto. Se
            mostrarán como secundarias en la página de registro de HubSpot para
            este tipo de objeto.
          items:
            type: string
        updatedAt:
          type: string
          description: Cuando se actualizó por última vez el esquema de objetos.
          format: date-time
        updatedByUserId:
          type: integer
          format: int32
    Error:
      required:
        - category
        - correlationId
        - message
      type: object
      properties:
        category:
          type: string
          description: La categoría del error
        context:
          type: object
          additionalProperties:
            type: array
            items:
              type: string
          description: Contexto de la condición de error
          example: >-
            {invalidPropertyName=[propertyValue], missingScopes=[scope1,
            scope2]}
        correlationId:
          type: string
          description: >-
            Un identificador único para la solicitud. Incluye este valor con
            cualquier informe de error o ticket de asistencia.
          format: uuid
          example: aeb5f871-7f07-4993-9211-075dc63e7cbf
        errors:
          type: array
          description: información adicional acerca del error
          items:
            $ref: '#/components/schemas/ErrorDetail'
        links:
          type: object
          additionalProperties:
            type: string
          description: >-
            Un mapa de nombres de enlaces a las URI asociadas que contienen
            documentación sobre el error o los pasos recomendados para
            solucionarlo
        message:
          type: string
          description: >-
            Un mensaje legible en el que se describa el error y los pasos para
            solucionarlo, si procede
          example: An error occurred
        subCategory:
          type: string
          description: >-
            Una categoría específica que contiene detalles más concretos acerca
            del 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
    AssociationDefinition:
      required:
        - fromObjectTypeId
        - id
        - toObjectTypeId
      type: object
      properties:
        createdAt:
          type: string
          description: Cuando se creó la asociación.
          format: date-time
        fromObjectTypeId:
          type: string
          description: ID del tipo de objeto principal desde el que se enlazará.
        id:
          type: string
          description: Un ID único para esta asociación.
        name:
          type: string
          description: Un nombre único para esta asociación.
        toObjectTypeId:
          type: string
          description: ID del tipo de objeto de destino con el que se enlazará.
        updatedAt:
          type: string
          description: Cuando se actualizó por última vez la asociación.
          format: date-time
      description: The definition of an association
    ObjectTypeDefinitionLabels:
      type: object
      properties:
        plural:
          type: string
          description: >-
            La palabra para múltiples objetos. (No hay forma de cambiar esto
            después.)
        singular:
          type: string
          description: >-
            La palabra para un solo objeto. (No hay forma de cambiar esto
            después.)
    Property:
      required:
        - description
        - fieldType
        - groupName
        - label
        - name
        - options
        - type
      type: object
      properties:
        archived:
          type: boolean
          description: Si la propiedad se archiva o no.
        archivedAt:
          type: string
          description: Cuando se archivó la propiedad.
          format: date-time
        calculated:
          type: boolean
          description: >-
            Para las propiedades predeterminadas, verdadero indica que la
            propiedad es calculada por un proceso de HubSpot. No tiene ningún
            efecto para las propiedades personalizadas.
        calculationFormula:
          type: string
          description: The formula used for calculated properties.
        createdAt:
          type: string
          description: Cuando se creó la propiedad
          format: date-time
        createdUserId:
          type: string
          description: >-
            El ID interno del usuario que creó la propiedad en HubSpot. Este
            campo puede no existir si la propiedad se creó fuera de HubSpot.
        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:
            - highly_sensitive
            - non_sensitive
            - sensitive
        dateDisplayHint:
          type: string
          description: >-
            Controla cómo se muestran las propiedades de fecha en la interfaz de
            usuario de HubSpot, con las siguientes opciones: "absolute",
            "absolute_with_relative", "time_since" y "time_until".
          enum:
            - absolute
            - absolute_with_relative
            - time_since
            - time_until
        description:
          type: string
          description: >-
            Una descripción de la propiedad que se mostrará como texto de ayuda
            en HubSpot.
        displayOrder:
          type: integer
          description: >-
            El orden en que esta propiedad debe mostrarse en la UI de HubSpot en
            relación con otras propiedades de este tipo de objeto. Las
            propiedades se muestran en orden comenzando con el valor entero
            positivo más bajo. Un valor de -1 hará que la propiedad se muestre
            **después** de todos los valores positivos.
          format: int32
        externalOptions:
          type: boolean
          description: >-
            Para las propiedades predeterminadas, verdadero indica que las
            opciones se almacenan fuera de la configuración de la propiedad.
        fieldType:
          type: string
          description: Controla cómo aparece la propiedad en HubSpot.
        formField:
          type: boolean
          description: Si la propiedad se puede usar o no en un formulario de HubSpot.
        groupName:
          type: string
          description: El nombre del grupo de propiedades al que pertenece la propiedad.
        hasUniqueValue:
          type: boolean
          description: >-
            Si el valor de la propiedad debe ser único o no. Una vez
            establecido, esto no se puede cambiar.
        hidden:
          type: boolean
          description: Las opciones ocultas no se mostrarán en HubSpot.
          example: false
        hubspotDefined:
          type: boolean
          description: >-
            Esto será verdadero para las propiedades de objeto predeterminadas
            integradas en HubSpot.
        label:
          type: string
          description: >-
            Una etiqueta de propiedad legible para humanos que se mostrará en
            HubSpot.
        modificationMetadata:
          $ref: '#/components/schemas/PropertyModificationMetadata'
        name:
          type: string
          description: >-
            El nombre interno de la propiedad, que debe usarse al referenciar la
            propiedad a través de la API.
        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
        options:
          type: array
          description: >-
            Una lista de opciones válidas para la propiedad. Este campo es
            obligatorio para las propiedades enumeradas, pero estará vacío para
            otros tipos de propiedad.
          items:
            $ref: '#/components/schemas/Option'
        referencedObjectType:
          type: string
          description: >-
            Si esta propiedad está relacionada con otros objetos, esos objetos
            se mostrarán aquí.
        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: >-
            Si la propiedad mostrará el símbolo de divisa en la configuración de
            la cuenta.
        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: El tipo de datos de la propiedad.
        updatedAt:
          type: string
          description: Cuando se actualizó por última vez el tipo de objeto.
          format: date-time
        updatedUserId:
          type: string
          description: >-
            El ID interno del usuario que creó la propiedad en HubSpot. Este
            campo puede no existir si la propiedad se actualizó fuera de
            HubSpot.
      description: A HubSpot property
    ErrorDetail:
      required:
        - message
      type: object
      properties:
        code:
          type: string
          description: El código de estado asociado al detalle del error
        context:
          type: object
          additionalProperties:
            type: array
            items:
              type: string
          description: Contexto de la condición de error
          example: '{missingScopes=[scope1, scope2]}'
        in:
          type: string
          description: El nombre del campo o parámetro en el que se encontró el error.
        message:
          type: string
          description: >-
            Un mensaje legible en el que se describa el error y los pasos para
            solucionarlo, si procede
        subCategory:
          type: string
          description: >-
            Una categoría específica que contiene detalles más concretos acerca
            del error
    PropertyModificationMetadata:
      required:
        - archivable
        - readOnlyDefinition
        - readOnlyValue
      type: object
      properties:
        archivable:
          type: boolean
          description: Indica si la propiedad se puede archivar.
        readOnlyDefinition:
          type: boolean
          description: Indica si la definición de la propiedad es de solo lectura.
        readOnlyOptions:
          type: boolean
          description: Indica si las opciones de la propiedad son de solo lectura.
        readOnlyValue:
          type: boolean
          description: Indica si el valor de la propiedad es de solo lectura.
    Option:
      required:
        - hidden
        - label
        - value
      type: object
      properties:
        description:
          type: string
          description: Una descripción de la opción.
        displayOrder:
          type: integer
          description: >-
            Las opciones se muestran en orden comenzando con el valor entero
            positivo más bajo. Los valores de -1 harán que la opción se muestre
            después de todos los valores positivos.
          format: int32
        hidden:
          type: boolean
          description: Las opciones ocultas no se mostrarán en HubSpot.
        label:
          type: string
          description: >-
            Una etiqueta de opción legible para humanos que se mostrará en
            HubSpot.
        value:
          type: string
          description: >-
            El valor interno de la opción, que debe usarse al establecer el
            valor de la propiedad a través de la API.
      description: A HubSpot property option
  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:
            crm.objects.custom.highly_sensitive.read.v2: ''
            crm.objects.custom.read: ''
            crm.objects.custom.sensitive.read.v2: ''
            crm.schemas.custom.read: ''
            crm.schemas.custom.write: ''
            oauth: ''

````