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

# Create or update a batch of listings by unique property values

> Crie ou atualize um lote de objetos do CRM por valores de propriedade exclusivos. Este endpoint permite gerenciar com eficiência vários objetos em uma única solicitação, garantindo que objetos sejam criados ou atualizados com base nos identificadores exclusivos.

> **Supported products**

> **Required Scopes**


## OpenAPI

````yaml specs/2026-09/crm-listings-v2026-09.json POST /crm/objects/2026-09/0-420/batch/upsert
openapi: 3.0.1
info:
  title: CRM Listings
  description: Basepom for all HubSpot Projects
  version: 2026-09
  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
  - name: Search
paths:
  /crm/objects/2026-09/0-420/batch/upsert:
    post:
      tags:
        - Batch
      summary: Fazer upsert de objetos em lote
      description: >-
        Crie ou atualize um lote de objetos do CRM por valores de propriedade
        exclusivos. Este endpoint permite gerenciar com eficiência vários
        objetos em uma única solicitação, garantindo que objetos sejam criados
        ou atualizados com base nos identificadores exclusivos.
      operationId: >-
        post-/crm/objects/2026-09/0-420/batch/upsert_/crm/objects/2026-09-beta/{objectType}/batch/upsert
      parameters: []
      requestBody:
        content:
          application/json:
            schema:
              $ref: >-
                #/components/schemas/BatchInputSimplePublicObjectBatchInputUpsert
        required: true
      responses:
        '200':
          description: successful operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BatchResponseSimplePublicUpsertObject'
        '207':
          description: multiple statuses
          content:
            application/json:
              schema:
                $ref: >-
                  #/components/schemas/BatchResponseSimplePublicUpsertObjectWithErrors
        default:
          $ref: '#/components/responses/Error'
          description: ''
      security:
        - oauth2:
            - crm.objects.deals.read
        - oauth2:
            - crm.objects.subscriptions.read
        - oauth2:
            - crm.objects.services.read
        - oauth2:
            - crm.objects.tickets.sensitive.read
        - oauth2:
            - crm.objects.orders.read
        - oauth2:
            - crm.objects.listings.write
        - oauth2:
            - crm.objects.custom.read
        - oauth2:
            - crm.objects.companies.write
        - oauth2:
            - crm.objects.tasks.read
        - oauth2:
            - crm.objects.custom.sensitive.write.v2
        - oauth2:
            - crm.objects.custom.highly_sensitive.write.v2
        - oauth2:
            - crm.objects.companies.read
        - oauth2:
            - crm.objects.appointments.sensitive.read.v2
        - oauth2:
            - crm.objects.contacts.highly_sensitive.read.v2
        - oauth2:
            - crm.objects.tickets.highly_sensitive.read
        - oauth2:
            - crm.objects.companies.sensitive.read.v2
        - oauth2:
            - crm.objects.tickets.sensitive.write
        - oauth2:
            - media_bridge.read
        - oauth2:
            - crm.objects.deals.highly_sensitive.read.v2
        - oauth2:
            - crm.objects.contacts.highly_sensitive.write.v2
        - oauth2:
            - crm.objects.companies.highly_sensitive.read.v2
        - oauth2:
            - crm.objects.commercepayments.write
        - oauth2:
            - crm.objects.invoices.write
        - oauth2:
            - crm.objects.contacts.sensitive.write.v2
        - oauth2:
            - crm.objects.calls.read
        - oauth2:
            - crm.objects.users.write
        - oauth2:
            - crm.objects.meetings.read
        - oauth2:
            - crm.objects.custom.sensitive.read.v2
        - oauth2:
            - crm.objects.users.read
        - oauth2:
            - crm.objects.partner-services.read
        - oauth2:
            - crm.objects.orders.write
        - oauth2:
            - crm.objects.partner-services.write
        - oauth2:
            - crm.objects.appointments.write
        - oauth2:
            - crm.objects.projects.highly_sensitive.write
        - oauth2:
            - crm.objects.carts.write
        - oauth2:
            - crm.objects.tickets.highly_sensitive.write
        - oauth2:
            - crm.objects.commercepayments.read
        - oauth2:
            - crm.objects.products.write
        - oauth2:
            - crm.objects.feedback_submissions.read
        - oauth2:
            - crm.objects.services.write
        - oauth2:
            - crm.objects.subscriptions.write
        - oauth2:
            - crm.objects.deals.sensitive.write.v2
        - oauth2:
            - crm.objects.contacts.read
        - oauth2:
            - crm.objects.appointments.sensitive.write.v2
        - oauth2:
            - crm.objects.projects.highly_sensitive.read
        - oauth2:
            - crm.objects.invoices.read
        - oauth2:
            - crm.objects.custom.write
        - oauth2:
            - tickets.sensitive.v2
        - oauth2:
            - crm.objects.deals.write
        - oauth2:
            - e-commerce
        - oauth2:
            - crm.objects.appointments.read
        - oauth2:
            - crm.objects.projects.read
        - oauth2:
            - crm.objects.companies.sensitive.write.v2
        - oauth2:
            - crm.objects.companies.highly_sensitive.write.v2
        - oauth2:
            - crm.objects.deals.highly_sensitive.write.v2
        - oauth2:
            - crm.objects.custom.highly_sensitive.read.v2
        - oauth2:
            - crm.objects.goals.write
        - oauth2:
            - crm.objects.projects.sensitive.read
        - oauth2:
            - crm.objects.line_items.write
        - oauth2:
            - crm.objects.contacts.write
        - oauth2:
            - crm.objects.goals.read
        - oauth2:
            - crm.objects.line_items.read
        - oauth2:
            - crm.objects.partner-clients.write
        - oauth2:
            - crm.objects.projects.write
        - oauth2:
            - crm.objects.projects.sensitive.write
        - oauth2:
            - crm.objects.deals.sensitive.read.v2
        - oauth2:
            - crm.objects.quotes.write
        - oauth2:
            - tickets.highly_sensitive.v2
        - oauth2:
            - crm.objects.leads.read
        - oauth2:
            - crm.objects.leads.write
        - oauth2:
            - crm.objects.carts.read
        - oauth2:
            - crm.objects.emails.read
        - oauth2:
            - crm.objects.quotes.read
        - oauth2:
            - crm.objects.courses.write
        - oauth2:
            - crm.objects.partner-clients.read
        - oauth2:
            - crm.objects.notes.read
        - oauth2:
            - crm.objects.courses.read
        - oauth2:
            - crm.objects.listings.read
        - oauth2:
            - crm.objects.contacts.sensitive.read.v2
        - oauth2:
            - crm.objects.products.read
components:
  schemas:
    BatchInputSimplePublicObjectBatchInputUpsert:
      required:
        - inputs
      type: object
      properties:
        inputs:
          type: array
          description: >-
            Uma matriz de objetos SimplePublicObjectBatchInputUpsert, cada um
            representando um objeto do CRM individual a ser criado ou
            atualizado. Esta propriedade é obrigatória.
          items:
            $ref: '#/components/schemas/SimplePublicObjectBatchInputUpsert'
      description: >-
        Representa uma operação de entrada em lote para fazer upsert de objetos
        públicos simples no HubSpot. Este componente é usado para processar
        várias operações de upsert em uma única solicitação, melhorando a
        eficiência e o desempenho.
    BatchResponseSimplePublicUpsertObject:
      required:
        - completedAt
        - results
        - startedAt
        - status
      type: object
      properties:
        completedAt:
          type: string
          description: >-
            A data e hora em que a operação em lote foi concluída, no formato
            ISO 8601.
          format: date-time
        links:
          type: object
          additionalProperties:
            type: string
          description: >-
            Um mapa de nomes de links para URIs associadas, fornecendo
            informações ou ações adicionais relacionadas à operação em lote.
        requestedAt:
          type: string
          description: >-
            A data e a hora em que a operação em lote foi solicitada, no formato
            ISO 8601.
          format: date-time
        results:
          type: array
          description: >-
            Uma matriz de itens SimplePublicUpsertObject, representando os
            resultados individuais da operação de upsert para cada objeto no
            lote.
          items:
            $ref: '#/components/schemas/SimplePublicUpsertObject'
        startedAt:
          type: string
          description: >-
            A data e a hora em que a operação em lote foi iniciada, no formato
            ISO 8601.
          format: date-time
        status:
          type: string
          description: >-
            O status atual da operação em lote. Os valores válidos incluem
            'PENDENTE', 'PROCESSANDO', 'CANCELADO' e 'CONCLUÍDO'.
          enum:
            - CANCELED
            - COMPLETE
            - PENDING
            - PROCESSING
      description: >-
        Representa o resultado de uma operação de upsert em lote, incluindo o
        status da operação, carimbos de data/hora e uma lista de objetos criados
        ou atualizados com sucesso.
    BatchResponseSimplePublicUpsertObjectWithErrors:
      required:
        - completedAt
        - results
        - startedAt
        - status
      type: object
      properties:
        completedAt:
          type: string
          description: >-
            A data e hora em que a operação em lote foi concluída, no formato
            ISO 8601.
          format: date-time
        errors:
          type: array
          description: >-
            Uma matriz de objetos StandardError detalhando quaisquer erros que
            ocorreram durante a operação em lote.
          items:
            $ref: '#/components/schemas/StandardError'
        links:
          type: object
          additionalProperties:
            type: string
          description: >-
            Um mapa de nomes de links para URIs associadas, fornecendo
            informações ou ações adicionais relacionadas à operação em lote.
        numErrors:
          type: integer
          description: O número de erros encontrados durante a operação em lote.
          format: int32
        requestedAt:
          type: string
          description: >-
            A data e a hora em que a operação em lote foi solicitada, no formato
            ISO 8601.
          format: date-time
        results:
          type: array
          description: >-
            Uma matriz de itens SimplePublicUpsertObject representando os
            resultados da operação de upsert em lote.
          items:
            $ref: '#/components/schemas/SimplePublicUpsertObject'
        startedAt:
          type: string
          description: >-
            A data e a hora em que a operação em lote foi iniciada, no formato
            ISO 8601.
          format: date-time
        status:
          type: string
          description: >-
            O status atual da operação em lote. Os valores válidos incluem
            'PENDENTE', 'PROCESSANDO', 'CANCELADO' e 'CONCLUÍDO'.
          enum:
            - CANCELED
            - COMPLETE
            - PENDING
            - PROCESSING
      description: >-
        Representa a resposta de uma operação de upsert em lote, incluindo
        status, data/hora, objetos processados com sucesso e quaisquer erros que
        ocorreram durante o processamento.
    SimplePublicObjectBatchInputUpsert:
      required:
        - id
        - properties
      type: object
      properties:
        id:
          type: string
          description: >-
            String que representa o identificador exclusivo para o objeto. Este
            ID é usado para determinar se um novo objeto deve ser criado ou um
            existente deve ser atualizado.
        idProperty:
          type: string
          description: >-
            O nome de uma propriedade cujos valores são exclusivos para este
            objeto
        objectWriteTraceId:
          type: string
          description: >-
            Uma string usada para rastrear a operação de gravação para fins de
            depuração ou registro.
        properties:
          type: object
          additionalProperties:
            type: string
          description: >-
            Objeto que contém pares chave-valor, em que cada chave é um nome de
            propriedade e cada valor é o valor da propriedade correspondente.
            Essas propriedades definem os atributos do objeto que foi inserido
            ou atualizado.
      description: >-
        Representa um objeto usado em operações de upsert em lote, contendo o
        identificador exclusivo de um objeto, suas propriedades e,
        opcionalmente, o nome da propriedade exclusiva e um ID de rastreamento
        de gravação.
    SimplePublicUpsertObject:
      required:
        - archived
        - createdAt
        - id
        - new
        - properties
        - updatedAt
      type: object
      properties:
        archived:
          type: boolean
          description: Um booleano que indica se este objeto está arquivado.
        archivedAt:
          type: string
          description: >-
            A data e a hora em que este objeto foi arquivado, no formato ISO
            8601.
          format: date-time
        createdAt:
          type: string
          description: A data e a hora em que este objeto foi criado, no formato ISO 8601.
          format: date-time
        id:
          type: string
          description: O identificador exclusivo deste objeto.
        new:
          type: boolean
          description: >-
            Um booleano que indica se este objeto foi recém-criado como
            resultado da operação de upsert.
        objectWriteTraceId:
          type: string
          description: >-
            Um identificador para rastrear a solicitação de criação ou
            atualização do objeto.
        properties:
          type: object
          additionalProperties:
            type: string
          description: >-
            Um mapa de nomes de propriedades para seus valores, representando os
            dados do objeto.
        propertiesWithHistory:
          type: object
          additionalProperties:
            type: array
            items:
              $ref: '#/components/schemas/ValueWithTimestamp'
          description: >-
            Mapa de nomes de propriedades para matrizes de valores com
            data/hora, mostrando o histórico de alterações para cada
            propriedade.
        updatedAt:
          type: string
          description: >-
            A data e a hora da última atualização deste objeto, no formato ISO
            8601.
          format: date-time
        url:
          type: string
          description: O URL associado a este objeto.
        warnings:
          type: array
          description: >-
            Uma matriz de avisos relacionados a este objeto, cada um contendo
            uma categoria, mensagem e contexto.
          items:
            $ref: '#/components/schemas/PublicObjectWarning'
      description: Representa um objeto do CRM que foi criado ou atualizado (upserted)
    StandardError:
      required:
        - category
        - context
        - errors
        - links
        - message
        - status
      type: object
      properties:
        category:
          type: string
          description: Uma string que categoriza o tipo de erro.
        context:
          type: object
          additionalProperties:
            type: array
            items:
              type: string
          description: >-
            Objeto que contém contexto adicional sobre o erro, em que cada chave
            é mapeada para uma matriz de strings.
        errors:
          type: array
          description: >-
            Uma matriz de objetos ErrorDetail que fornece mais informações sobre
            o erro.
          items:
            $ref: '#/components/schemas/ErrorDetail'
        id:
          type: string
          description: Uma string que representa o identificador exclusivo do erro.
        links:
          type: object
          additionalProperties:
            type: string
          description: >-
            Um objeto que mapeia nomes de links a URIs associados que contêm
            documentação ou etapas de remediação recomendadas para o erro.
        message:
          type: string
          description: >-
            Uma string contendo uma mensagem legível por humanos que descreve o
            erro.
        status:
          type: string
          description: Uma string que indica o status do erro.
        subCategory:
          type: object
          properties: {}
          description: >-
            Um objeto que pode conter detalhes mais específicos sobre a
            subcategoria do erro.
      description: >-
        Representa uma resposta de erro padrão na API do HubSpot, fornecendo
        informações detalhadas sobre um erro ocorrido durante uma solicitação de
        API.
    Error:
      required:
        - category
        - correlationId
        - message
      type: object
      properties:
        category:
          type: string
          description: A categoria de erro
        context:
          type: object
          additionalProperties:
            type: array
            items:
              type: string
          description: Contexto sobre a condição do erro
          example: >-
            {invalidPropertyName=[propertyValue], missingScopes=[scope1,
            scope2]}
        correlationId:
          type: string
          description: >-
            Um identificador exclusivo para a solicitação. Inclua este valor em
            relatórios de erro ou tickets de suporte
          format: uuid
          example: aeb5f871-7f07-4993-9211-075dc63e7cbf
        errors:
          type: array
          description: mais informações sobre o erro
          items:
            $ref: '#/components/schemas/ErrorDetail'
        links:
          type: object
          additionalProperties:
            type: string
          description: >-
            Um mapa de nomes de links para URIs associados que contêm
            documentação sobre o erro ou as etapas de correção recomendadas
        message:
          type: string
          description: >-
            Uma mensagem legível por humanos que descreve o erro, juntamente com
            as etapas de correção, quando apropriado
          example: An error occurred
        subCategory:
          type: string
          description: >-
            Uma categoria específica que contém mais detalhes específicos sobre
            o erro
      description: >-
        Representa uma resposta de erro retornada pela API quando uma operação
        falha. Este componente é usado em vários endpoints para fornecer
        informações detalhadas sobre o erro encontrado.
      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
    ValueWithTimestamp:
      required:
        - sourceType
        - timestamp
        - value
      type: object
      properties:
        sourceId:
          type: string
          description: Identificador da origem de onde o valor foi derivado. É uma string.
        sourceLabel:
          type: string
          description: Um rótulo que descreve a origem do valor. É uma string.
        sourceType:
          type: string
          description: >-
            Tipo de origem de onde o valor foi derivado. É uma string e é
            obrigatória.
        timestamp:
          type: string
          description: >-
            A data e a hora em que o registro foi adicionado, no formato ISO
            8601.
          format: date-time
        updatedByUserId:
          type: integer
          description: >-
            ID do usuário que atualizou o valor pela última vez. É um número
            inteiro.
          format: int32
        value:
          type: string
          description: O valor da propriedade na data/hora fornecida. É uma string.
      description: Modelo de propriedade que inclui data e hora.
    PublicObjectWarning:
      required:
        - category
        - context
        - message
      type: object
      properties:
        category:
          type: string
          description: Uma string que representa a categoria do aviso.
        context:
          type: object
          additionalProperties:
            type: string
          description: >-
            Objeto que fornece contexto adicional para o aviso, com valores de
            string para cada chave de contexto.
        message:
          type: string
          description: Uma string contendo a mensagem de aviso.
      description: >-
        Representa uma mensagem de aviso relacionada a um objeto público no
        HubSpot, fornecendo detalhes sobre a natureza e o contexto do aviso.
    ErrorDetail:
      required:
        - message
      type: object
      properties:
        code:
          type: string
          description: O código de status associado ao detalhe do erro
        context:
          type: object
          additionalProperties:
            type: array
            items:
              type: string
          description: Contexto sobre a condição do erro
          example: '{missingScopes=[scope1, scope2]}'
        in:
          type: string
          description: O nome do campo ou parâmetro no qual o erro foi encontrado.
        message:
          type: string
          description: >-
            Uma mensagem legível por humanos que descreve o erro, juntamente com
            as etapas de correção, quando apropriado
        subCategory:
          type: string
          description: >-
            Uma categoria específica que contém mais detalhes específicos sobre
            o erro
      description: >-
        Representa informações detalhadas sobre um erro ocorrido na API. Este
        componente é usado para fornecer contexto e detalhes adicionais sobre os
        erros, geralmente como parte de uma resposta de erro.
  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.appointments.read: ''
            crm.objects.appointments.sensitive.read.v2: ''
            crm.objects.appointments.sensitive.write.v2: ''
            crm.objects.appointments.write: ''
            crm.objects.calls.read: ''
            crm.objects.carts.read: ''
            crm.objects.carts.write: ''
            crm.objects.commercepayments.read: ''
            crm.objects.commercepayments.write: ''
            crm.objects.companies.highly_sensitive.read.v2: ''
            crm.objects.companies.highly_sensitive.write.v2: ''
            crm.objects.companies.read: ''
            crm.objects.companies.sensitive.read.v2: ''
            crm.objects.companies.sensitive.write.v2: ''
            crm.objects.companies.write: ''
            crm.objects.contacts.highly_sensitive.read.v2: ''
            crm.objects.contacts.highly_sensitive.write.v2: ''
            crm.objects.contacts.read: ''
            crm.objects.contacts.sensitive.read.v2: ''
            crm.objects.contacts.sensitive.write.v2: ''
            crm.objects.contacts.write: ''
            crm.objects.courses.read: ''
            crm.objects.courses.write: ''
            crm.objects.custom.highly_sensitive.read.v2: ''
            crm.objects.custom.highly_sensitive.write.v2: ''
            crm.objects.custom.read: ''
            crm.objects.custom.sensitive.read.v2: ''
            crm.objects.custom.sensitive.write.v2: ''
            crm.objects.custom.write: ''
            crm.objects.deals.highly_sensitive.read.v2: ''
            crm.objects.deals.highly_sensitive.write.v2: ''
            crm.objects.deals.read: ''
            crm.objects.deals.sensitive.read.v2: ''
            crm.objects.deals.sensitive.write.v2: ''
            crm.objects.deals.write: ''
            crm.objects.emails.read: ''
            crm.objects.feedback_submissions.read: ''
            crm.objects.goals.read: ''
            crm.objects.goals.write: ''
            crm.objects.invoices.read: ''
            crm.objects.invoices.write: ''
            crm.objects.leads.read: ''
            crm.objects.leads.write: ''
            crm.objects.line_items.read: ''
            crm.objects.line_items.write: ''
            crm.objects.listings.read: ''
            crm.objects.listings.write: ''
            crm.objects.meetings.read: ''
            crm.objects.notes.read: ''
            crm.objects.orders.read: ''
            crm.objects.orders.write: ''
            crm.objects.partner-clients.read: ''
            crm.objects.partner-clients.write: ''
            crm.objects.partner-services.read: ''
            crm.objects.partner-services.write: ''
            crm.objects.products.read: ''
            crm.objects.products.write: ''
            crm.objects.projects.highly_sensitive.read: ''
            crm.objects.projects.highly_sensitive.write: ''
            crm.objects.projects.read: ''
            crm.objects.projects.sensitive.read: ''
            crm.objects.projects.sensitive.write: ''
            crm.objects.projects.write: ''
            crm.objects.quotes.read: ''
            crm.objects.quotes.write: ''
            crm.objects.services.read: ''
            crm.objects.services.write: ''
            crm.objects.subscriptions.read: ''
            crm.objects.subscriptions.write: ''
            crm.objects.tasks.read: ''
            crm.objects.tickets.highly_sensitive.read: ''
            crm.objects.tickets.highly_sensitive.write: ''
            crm.objects.tickets.sensitive.read: ''
            crm.objects.tickets.sensitive.write: ''
            crm.objects.users.read: ''
            crm.objects.users.write: ''
            e-commerce: ''
            media_bridge.read: ''
            tickets.highly_sensitive.v2: ''
            tickets.sensitive.v2: ''

````