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

# Upsert carts

> Crie ou atualize um lote de objetos do CRM com base em valores de propriedades exclusivos. Esta operação permite inserir novos objetos ou atualizar os já existentes com base nos identificadores exclusivos fornecidos. É útil para operações em massa nas quais é necessário garantir que os objetos estejam atualizados ou sejam adicionados caso não existam.

> **Supported products**

> **Required Scopes**


## OpenAPI

````yaml specs/2026-09/crm-carts-v2026-09.json POST /crm/objects/2026-09/carts/batch/upsert
openapi: 3.0.1
info:
  title: CRM Carts
  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/carts/batch/upsert:
    post:
      tags:
        - Batch
      summary: Fazer upsert de objetos em lote
      description: >-
        Crie ou atualize um lote de objetos do CRM com base em valores de
        propriedades exclusivos. Esta operação permite inserir novos objetos ou
        atualizar os já existentes com base nos identificadores exclusivos
        fornecidos. É útil para operações em massa nas quais é necessário
        garantir que os objetos estejam atualizados ou sejam adicionados caso
        não existam.
      operationId: >-
        post-/crm/objects/2026-09/carts/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 a serem atualizados ou inseridos, cada um
            representado por um esquema SimplePublicObjectBatchInputUpsert.
          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 recursos
            adicionais ou documentação relacionada à 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 que representa 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: >-
            Matriz de erros encontrados durante a operação em lote, cada um
            representado como um StandardError.
          items:
            $ref: '#/components/schemas/StandardError'
        links:
          type: object
          additionalProperties:
            type: string
          description: >-
            Um mapa de nomes de links para URIs associadas, fornecendo contexto
            ou ações adicionais relacionadas à operação em lote.
        numErrors:
          type: integer
          description: O número total 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: >-
            Matriz de resultados da operação de upsert em lote, cada um
            representado como um SimplePublicUpsertObject.
          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: >-
            Uma string que representa o identificador exclusivo do objeto. Ela é
            usada para identificar o objeto na operação em lote.
        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 do objeto,
            útil para depuração e acompanhamento de alterações.
        properties:
          type: object
          additionalProperties:
            type: string
          description: >-
            Um objeto que contém pares chave-valor representando as propriedades
            do objeto a ser inserido ou atualizado. Cada chave é o nome de uma
            propriedade, e o valor é o valor dessa propriedade.
      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 o objeto está arquivado.
        archivedAt:
          type: string
          description: A data e a hora em que o objeto foi arquivado, no formato ISO 8601.
          format: date-time
        createdAt:
          type: string
          description: A data e hora em que o objeto foi criado, no formato ISO 8601.
          format: date-time
        id:
          type: string
          description: Identificador exclusivo do objeto, representado como uma string.
        new:
          type: boolean
          description: Um booleano que indica se o objeto foi criado recentemente.
        objectWriteTraceId:
          type: string
          description: >-
            Um identificador de string usado para rastrear a operação de
            gravação do objeto.
        properties:
          type: object
          additionalProperties:
            type: string
          description: >-
            Um mapa de nomes de propriedades para seus valores, em que cada
            valor é uma string.
        propertiesWithHistory:
          type: object
          additionalProperties:
            type: array
            items:
              $ref: '#/components/schemas/ValueWithTimestamp'
          description: >-
            Um mapa de nomes de propriedades para matrizes de seus valores
            históricos, cada entrada contendo um valor e um carimbo de
            data/hora.
        updatedAt:
          type: string
          description: >-
            A data e a hora da última atualização do objeto, no formato ISO
            8601.
          format: date-time
        url:
          type: string
          description: Uma string que representa a URL do objeto.
        warnings:
          type: array
          description: >-
            Uma matriz de avisos relacionados ao 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 erro.
        context:
          type: object
          additionalProperties:
            type: array
            items:
              type: string
          description: >-
            Um objeto que contém contexto adicional sobre o erro, com cada
            propriedade sendo uma matriz de strings.
        errors:
          type: array
          description: >-
            Uma matriz de objetos ErrorDetail que fornece mais informações sobre
            erros individuais.
          items:
            $ref: '#/components/schemas/ErrorDetail'
        id:
          type: string
          description: Uma string que representa o identificador exclusivo de um 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 fornece uma categorização mais específica 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: Um identificador de string para a fonte específica do valor.
        sourceLabel:
          type: string
          description: >-
            Um rótulo de string que fornece contexto ou descrição adicional para
            a origem.
        sourceType:
          type: string
          description: >-
            Uma string que indica o tipo de fonte da qual o valor foi obtido.
            Este campo é obrigatório.
        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: >-
            Um número inteiro que representa o ID do usuário que atualizou o
            valor pela última vez.
          format: int32
        value:
          type: string
          description: >-
            O valor real da propriedade no carimbo de data/hora fornecido. É 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: >-
            Um objeto que fornece contexto adicional para o aviso, com
            propriedades de string.
        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: ''

````