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

# Create multiple events

> Créer par lots plusieurs instances d'événements de chronologie à partir d'un modèle d'événement. Une fois créés, ces événements sont immuables dans la chronologie de l'objet et ne peuvent pas être modifiés. Si le modèle d'événement a été configuré pour mettre à jour les propriétés de l'objet via « objectPropertyName », cet appel tentera également de mettre à jour ces propriétés ou de les ajouter si elles n'existent pas.

export const ScopesList = ({scopes = [], description = "Cette API requiert l'une des portées suivantes :"}) => {
  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: "Produits pris en charge",
    description: "Exige l'un des produits suivants ou un produit supérieur.",
    productNames: {
      marketing: "Marketing Hub",
      sales: "Sales Hub",
      service: "Service Hub",
      cms: "Content Hub"
    },
    tiers: {
      free: "Gratuit",
      starter: "Starter",
      professional: "Pro",
      enterprise: "Entreprise"
    }
  };
  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="FREE" salesLevel="FREE" serviceLevel="FREE" cmsLevel="FREE" />
  </Accordion>

  <Accordion title="Required Scopes" icon="key">
    <ScopesList
      scopes={[
  'crm.schemas.contacts.write',
  'crm.objects.deals.sensitive.write.v2',
  'tickets',
  'crm.objects.companies.highly_sensitive.write.v2',
  'crm.objects.deals.highly_sensitive.write.v2',
  'tickets.sensitive.v2',
  'crm.objects.deals.write',
  'crm.objects.companies.write',
  'tickets.highly_sensitive.v2',
  'crm.schemas.deals.write',
  'crm.objects.companies.sensitive.write.v2',
  'crm.objects.contacts.write',
  'crm.schemas.companies.write',
  'crm.objects.contacts.highly_sensitive.write.v2',
  'crm.objects.contacts.sensitive.write.v2',
  'timeline'
]}
    />
  </Accordion>
</AccordionGroup>


## OpenAPI

````yaml specs/legacy/v3/crm-timeline-v3.json POST /integrators/timeline/v3/events/batch/create
openapi: 3.0.1
info:
  title: Chronologie
  description: Basepom for all HubSpot Projects
  version: v3
  x-hubspot-product-tier-requirements:
    marketing: FREE
    sales: FREE
    service: FREE
    cms: FREE
    commerce: FREE
    crmHub: FREE
    dataHub: FREE
  x-hubspot-api-use-case: >-
    Après avoir configuré un nouvel ensemble de flux d'inscription sur votre
    site, actualisez les chronologies de contact pour indiquer le flux complété.
    Pour chaque événement, vous pourriez aussi ajouter un lien ouvrant une
    iframe qui présente des données externes additionnelles sur l'événement.
  x-hubspot-related-documentation:
    - name: Timeline Events Guide
      url: https://developers.hubspot.com/docs/guides/api/crm/extensions/timeline
  x-hubspot-introduction: >-
    Utilisez l'API des événements de la chronologie pour ajouter des
    informations sur des événements personnalisés aux chronologies des dossiers
    CRM. Vous aurez d'abord besoin de créer une application publique puis un
    modèle d'événement pour présenter les données d'événement. 
servers:
  - url: https://api.hubapi.com
security: []
tags:
  - name: Advanced
  - name: Basic
  - name: Batch
paths:
  /integrators/timeline/v3/events/batch/create:
    post:
      tags:
        - Batch
      summary: Créer plusieurs événements
      description: "Créer par lots plusieurs instances d'événements de chronologie à partir d'un modèle d'événement. Une fois créés, ces événements sont immuables dans la chronologie de l'objet et ne peuvent pas être modifiés. Si le modèle d'événement a été configuré pour mettre à jour les propriétés de l'objet via «\_objectPropertyName\_», cet appel tentera également de mettre à jour ces propriétés ou de les ajouter si elles n'existent pas."
      operationId: post-/integrators/timeline/v3/events/batch/create_createBatch
      parameters: []
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/BatchInputTimelineEvent'
        required: true
      responses:
        '201':
          description: successful operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BatchResponseTimelineEventResponse'
        '207':
          description: multiple statuses
          content:
            application/json:
              schema:
                $ref: >-
                  #/components/schemas/BatchResponseTimelineEventResponseWithErrors
        default:
          $ref: '#/components/responses/Error'
          description: ''
      deprecated: true
      security:
        - oauth2:
            - crm.objects.contacts.highly_sensitive.write.v2
        - oauth2:
            - crm.objects.contacts.write
        - oauth2:
            - crm.objects.contacts.sensitive.write.v2
        - oauth2:
            - crm.schemas.contacts.write
        - oauth2:
            - crm.objects.companies.write
        - oauth2:
            - crm.objects.companies.sensitive.write.v2
        - oauth2:
            - crm.objects.companies.highly_sensitive.write.v2
        - oauth2:
            - crm.schemas.companies.write
        - oauth2:
            - crm.schemas.deals.write
        - oauth2:
            - crm.objects.deals.write
        - oauth2:
            - crm.objects.deals.sensitive.write.v2
        - oauth2:
            - crm.objects.deals.highly_sensitive.write.v2
        - oauth2:
            - tickets
        - oauth2:
            - tickets.sensitive.v2
        - oauth2:
            - tickets.highly_sensitive.v2
        - oauth2:
            - timeline.write
        - oauth2:
            - timeline
components:
  schemas:
    BatchInputTimelineEvent:
      required:
        - inputs
      type: object
      properties:
        inputs:
          type: array
          description: >-
            Une collection d'événements de la chronologie que nous voulons
            créer.
          items:
            $ref: '#/components/schemas/TimelineEvent'
    BatchResponseTimelineEventResponse:
      required:
        - completedAt
        - results
        - startedAt
        - status
      type: object
      properties:
        completedAt:
          type: string
          description: L'heure à laquelle la demande a été complétée.
          format: date-time
        links:
          type: object
          additionalProperties:
            type: string
          description: Tout lien vers la documentation.
        requestedAt:
          type: string
          description: L'heure à laquelle la demande a été produite.
          format: date-time
        results:
          type: array
          description: Événements correctement créés.
          items:
            $ref: '#/components/schemas/TimelineEventResponse'
        startedAt:
          type: string
          description: L'heure à laquelle la demande a commencé à être traitée.
          format: date-time
        status:
          type: string
          description: >-
            Le statut de la réponse en lot. Doit toujours être TERMINÉ si
            traitée.
          enum:
            - CANCELED
            - COMPLETE
            - PENDING
            - PROCESSING
    BatchResponseTimelineEventResponseWithErrors:
      required:
        - completedAt
        - results
        - startedAt
        - status
      type: object
      properties:
        completedAt:
          type: string
          description: Lorsque la demande est terminée.
          format: date-time
        errors:
          type: array
          items:
            $ref: '#/components/schemas/StandardError'
        links:
          type: object
          additionalProperties:
            type: string
          description: Liens vers toute documentation utile.
        numErrors:
          type: integer
          description: Le nombre d'erreurs rencontrées, le cas échéant.
          format: int32
        requestedAt:
          type: string
          description: Lorsque la demande a été émise, le cas échéant.
          format: date-time
        results:
          type: array
          items:
            $ref: '#/components/schemas/TimelineEventResponse'
        startedAt:
          type: string
          description: Lorsque la demande a commencé.
          format: date-time
        status:
          type: string
          description: Statut résultant de l'opération par lots.
          enum:
            - CANCELED
            - COMPLETE
            - PENDING
            - PROCESSING
    TimelineEvent:
      required:
        - eventTemplateId
        - id
        - tokens
      type: object
      properties:
        customObjectTypeId:
          type: string
        domain:
          type: string
          description: Le domaine de l'événement (souvent associé à utk).
        email:
          type: string
          description: >-
            L'adresse e-mail utilisée pour des événements spécifiques aux
            contacts. Cela peut être utilisé pour identifier des contacts
            existants, en créer de nouveaux ou changer l'e-mail d'un contact
            existant (si associé à `objectId`).
        eventTemplateId:
          type: string
          description: L'ID du modèle d'événement.
        extraData:
          type: object
          properties: {}
          description: >-
            Données supplémentaires spécifiques à l'événement pouvant être
            interprétées par le markdown du modèle.
        id:
          type: string
          description: >-
            Identifiant pour l'événement. Ceci est facultatif, et nous vous
            recommandons de ne pas l'indiquer. Nous en créerons un pour vous si
            vous l'omettez. Vous pouvez également utiliser `{{uuid}}` n'importe
            où dans l'ID pour générer une chaîne unique, garantissant l'unicité.
        objectId:
          type: string
          description: >-
            L'identifiant de l'objet CRM. Cela est requis pour chaque événement
            autre que les contacts (où utk ou e-mail peuvent être utilisés).
        timelineIFrame:
          $ref: '#/components/schemas/TimelineEventIFrame'
        timestamp:
          type: string
          description: >-
            L'heure à laquelle l'événement s'est produit. Si non spécifiée,
            l'heure actuelle sera supposée. Cela est utilisé pour déterminer où
            un événement sera affiché sur la chronologie de l'objet CRM.
          format: date-time
        tokens:
          type: object
          additionalProperties:
            type: string
          description: >-
            Une collection de clés de jetons et de valeurs associées aux jetons
            de modèle.
        utk:
          type: string
          description: >-
            Utilisez le paramètre `utk` pour associer un événement à un contact
            par `usertoken`. Ceci est recommandé si vous ne connaissez pas
            l'e-mail d'un utilisateur, mais que vous avez un jeton utilisateur
            identifiant dans vos cookies.
    TimelineEventResponse:
      required:
        - eventTemplateId
        - id
        - objectType
        - tokens
      type: object
      properties:
        createdAt:
          type: string
          description: Non utilis.
          format: date-time
        customObjectTypeId:
          type: string
        domain:
          type: string
          description: Le domaine de l'événement (souvent associé à utk).
        email:
          type: string
          description: >-
            L'adresse e-mail utilisée pour des événements spécifiques aux
            contacts. Cela peut être utilisé pour identifier des contacts
            existants, en créer de nouveaux ou changer l'e-mail d'un contact
            existant (si associé à `objectId`).
        eventTemplateId:
          type: string
          description: L'ID du modèle d'événement.
        extraData:
          type: object
          properties: {}
          description: >-
            Données supplémentaires spécifiques à l'événement pouvant être
            interprétées par le markdown du modèle.
        id:
          type: string
          description: >-
            Identifiant pour l'événement. Celui-ci doit être unique à
            l'application et au modèle d'événement. Si vous utilisez le même ID
            pour différents objets CRM, le dernier à être traité l'emportera et
            le premier ne bénéficiera pas d'une fiche d'informations. Vous
            pouvez également utiliser `{{uuid}}` n'importe où dans l'ID pour
            générer une chaîne unique, garantissant l'unicité.
        objectId:
          type: string
          description: >-
            L'identifiant de l'objet CRM. Cela est requis pour chaque événement
            autre que les contacts (où utk ou e-mail peuvent être utilisés).
        objectType:
          type: string
          description: Le ObjectType associé au EventTemplate.
        timelineIFrame:
          $ref: '#/components/schemas/TimelineEventIFrame'
        timestamp:
          type: string
          description: >-
            L'heure à laquelle l'événement s'est produit. Si non spécifiée,
            l'heure actuelle sera supposée. Cela est utilisé pour déterminer où
            un événement sera affiché sur la chronologie de l'objet CRM.
          format: date-time
        tokens:
          type: object
          additionalProperties:
            type: string
          description: >-
            Une collection de clés de jetons et de valeurs associées aux jetons
            de modèle.
        utk:
          type: string
          description: >-
            Utilisez le paramètre `utk` pour associer un événement à un contact
            par `usertoken`. Ceci est recommandé si vous ne connaissez pas
            l'e-mail d'un utilisateur, mais que vous avez un jeton utilisateur
            identifiant dans vos cookies.
    StandardError:
      required:
        - category
        - context
        - errors
        - links
        - message
        - status
      type: object
      properties:
        category:
          type: string
          description: La catégorie de l'erreur.
        context:
          type: object
          additionalProperties:
            type: array
            items:
              type: string
          description: >-
            Le contexte de l'erreur, pouvant inclure des informations sur son
            occurrence.
        errors:
          type: array
          description: Les objets d'erreur détaillés.
          items:
            $ref: '#/components/schemas/ErrorDetail'
        id:
          type: string
          description: L'ID d'erreur, le cas échéant.
        links:
          type: object
          additionalProperties:
            type: string
          description: Liens vers toute documentation utile.
        message:
          type: string
          description: Le message d'erreur, le cas échéant.
        status:
          type: string
          description: Statut résultant de l'opération par lots.
        subCategory:
          type: object
          properties: {}
          description: Sous-catégorie de l'erreur, le cas échéant.
      description: >-
        Représente une réponse aux erreurs standard dans l'API HubSpot,
        fournissant des informations détaillées sur une erreur survenue lors
        d'une requête API.
    Error:
      required:
        - category
        - correlationId
        - message
      type: object
      properties:
        category:
          type: string
          description: La catégorie d'erreur
        context:
          type: object
          additionalProperties:
            type: array
            items:
              type: string
          description: Contexte concernant la condition d'erreur
          example: >-
            {invalidPropertyName=[propertyValue], missingScopes=[scope1,
            scope2]}
        correlationId:
          type: string
          description: >-
            Un identifiant unique pour la demande. Incluez cette valeur dans
            tous les rapports d'erreurs ou tickets d'assistance
          format: uuid
          example: aeb5f871-7f07-4993-9211-075dc63e7cbf
        errors:
          type: array
          description: informations supplémentaires à propos de l'erreur
          items:
            $ref: '#/components/schemas/ErrorDetail'
        links:
          type: object
          additionalProperties:
            type: string
          description: >-
            Une carte des noms de liens vers les URI associés contenant de la
            documentation sur l'erreur ou les mesures correctives recommandées
        message:
          type: string
          description: >-
            Un message lisible par la personne décrivant l'erreur ainsi que les
            mesures correctives possibles, le cas échéant
          example: An error occurred
        subCategory:
          type: string
          description: >-
            Une catégorie spécifique qui contient des détails plus précis sur
            l'erreur
      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
    TimelineEventIFrame:
      required:
        - headerLabel
        - height
        - linkLabel
        - url
        - width
      type: object
      properties:
        headerLabel:
          type: string
          description: Le libellé de la fenêtre modale qui affiche le contenu de l'iframe.
        height:
          type: integer
          description: La hauteur de la fenêtre modale en pixels.
          format: int32
        linkLabel:
          type: string
          description: Le texte affichant le lien qui affichera l'iframe.
        url:
          type: string
          description: L'URI du contenu de l'iframe.
        width:
          type: integer
          description: La largeur de la fenêtre modale en pixels.
          format: int32
    ErrorDetail:
      required:
        - message
      type: object
      properties:
        code:
          type: string
          description: Le code du statut associé au détail de l'erreur
        context:
          type: object
          additionalProperties:
            type: array
            items:
              type: string
          description: Contexte concernant la condition d'erreur
          example: '{missingScopes=[scope1, scope2]}'
        in:
          type: string
          description: Le nom du champ ou du paramètre dans lequel l'erreur a été trouvée.
        message:
          type: string
          description: >-
            Un message lisible par la personne décrivant l'erreur ainsi que les
            mesures correctives possibles, le cas échéant
        subCategory:
          type: string
          description: >-
            Une catégorie spécifique qui contient des détails plus précis sur
            l'erreur
  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.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.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.schemas.companies.read: ''
            crm.schemas.companies.write: ''
            crm.schemas.contacts.read: ''
            crm.schemas.contacts.write: ''
            crm.schemas.deals.read: ''
            crm.schemas.deals.write: ''
            developers-read: ''
            developers-write: ''
            tickets: ''
            tickets.highly_sensitive.v2: ''
            tickets.sensitive.v2: ''
            timeline: ''
            timeline.read: ''
            timeline.write: ''

````