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

# Retrieve meeting link slug

> Obtenez des détails sur les informations initiales nécessaires à un planificateur de réunions.

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={[
  'scheduler.meetings.meeting-link.read'
]}
    />
  </Accordion>
</AccordionGroup>


## OpenAPI

````yaml specs/2026-03/scheduler-meetings-v2026-03.json GET /scheduler/2026-03/meetings/meeting-links/book/{slug}
openapi: 3.0.1
info:
  title: Scheduler Meetings
  description: Meetings Service For HubSpot Sales
  version: 2026-03
  x-hubspot-product-tier-requirements:
    marketing: FREE
    sales: FREE
    service: FREE
    cms: FREE
    commerce: FREE
    crmHub: FREE
    dataHub: FREE
servers:
  - url: https://api.hubapi.com
security: []
tags:
  - name: Advanced
  - name: Basic
paths:
  /scheduler/2026-03/meetings/meeting-links/book/{slug}:
    get:
      tags:
        - Basic
      summary: Informations de la liste des réservations
      description: >-
        Obtenez des détails sur les informations initiales nécessaires à un
        planificateur de réunions.
      operationId: get-/scheduler/2026-03/meetings/meeting-links/book/{slug}
      parameters:
        - name: slug
          in: path
          description: ''
          required: true
          style: simple
          explode: false
          schema:
            type: string
        - name: timezone
          in: query
          description: ''
          required: true
          style: form
          explode: true
          schema:
            type: string
      responses:
        '200':
          description: successful operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ExternalBookingInfo'
        default:
          $ref: '#/components/responses/Error'
          description: ''
      security:
        - oauth2:
            - scheduler.meetings.meeting-link.read
components:
  schemas:
    ExternalBookingInfo:
      required:
        - allUsersBusyTimes
        - customParams
        - isOffline
        - linkId
        - linkType
      type: object
      properties:
        allUsersBusyTimes:
          type: array
          items:
            $ref: '#/components/schemas/ExternalUserBusyTimes'
        brandingMetadata:
          $ref: '#/components/schemas/ExternalBrandingMetadata'
        customParams:
          $ref: '#/components/schemas/ExternalMeetingsLinkSettings'
        isOffline:
          type: boolean
          description: >-
            Si la réunion a été réservée hors ligne, ce qui signifie qu'aucun
            événement associé n'a été créé dans le calendrier.
        linkAvailability:
          $ref: '#/components/schemas/ExternalLinkAvailability'
        linkId:
          type: string
          description: Identifiant unique du lien de prise de rendez-vous.
        linkType:
          type: string
          description: "Type du lien de prise de rendez-vous. Les valeurs acceptées sont\_: GROUP_CALENDAR, PERSONAL_LINK, ROUND_ROBIN_CALENDAR."
          enum:
            - GROUP_CALENDAR
            - PERSONAL_LINK
            - ROUND_ROBIN_CALENDAR
    ExternalUserBusyTimes:
      required:
        - busyTimes
        - isOffline
        - meetingsUser
      type: object
      properties:
        busyTimes:
          type: array
          items:
            $ref: '#/components/schemas/ExternalTimeRange'
        isOffline:
          type: boolean
          description: Si l'utilisateur est hors ligne.
        meetingsUser:
          $ref: '#/components/schemas/ExternalMeetingsUser'
    ExternalBrandingMetadata:
      required:
        - logoAltText
        - showMarketingAd
        - showSalesAd
      type: object
      properties:
        accent2Color:
          type: string
          description: La couleur du thème secondaire utilisée dans le branding.
        accentColor:
          type: string
          description: La couleur du thème principal utilisée dans le branding.
        companyAddressLine1:
          type: string
          description: La première ligne de l'adresse de l'entreprise.
        companyAddressLine2:
          type: string
          description: La deuxième ligne de l'adresse de l'entreprise.
        companyAvatar:
          type: string
          description: L'URL de l'image d'avatar de l'entreprise.
        companyCity:
          type: string
          description: La ville où se trouve l'entreprise.
        companyCountry:
          type: string
          description: Le pays où se trouve l'entreprise.
        companyDomain:
          type: string
          description: Le domaine du site web de l'entreprise.
        companyName:
          type: string
          description: Le nom de l'entreprise.
        companyState:
          type: string
          description: L'État où se trouve l'entreprise.
        companyZip:
          type: string
          description: Le code postal du lieu où se trouve l'entreprise.
        logoAltText:
          type: string
          description: Texte alternatif pour le logo actuel.
        logoHeight:
          type: integer
          description: La hauteur du logo en pixels.
          format: int32
        logoUrl:
          type: string
          description: L'URL d'une image de logo personnalisé.
        logoWidth:
          type: integer
          description: La largeur du logo en pixels.
          format: int32
        primaryColor:
          type: string
          description: La couleur principale utilisée dans le branding.
        secondaryColor:
          type: string
          description: La couleur secondaire utilisée dans le branding.
        showMarketingAd:
          type: boolean
          description: Si les publicités Marketing Hub sont affichées.
        showSalesAd:
          type: boolean
          description: Si les publicités Sales Hub sont affichées.
    ExternalMeetingsLinkSettings:
      required:
        - availability
        - durations
        - formFields
        - legalConsentEnabled
        - meetingBufferTime
        - ownerPrioritized
        - startTimeIncrementMinutes
        - weeksToAdvertise
      type: object
      properties:
        availability:
          type: object
          additionalProperties:
            $ref: '#/components/schemas/ExternalClosedRange'
          description: "Tableau contenant les plages horaires disponibles pour un lien de prise de rendez-vous. Les plages horaires sont indiquées en minutes à partir de minuit (par exemple, 540\_correspond à 9\_h)."
        customAvailabilityEndDate:
          type: integer
          description: >-
            Date de fin de la fenêtre de disponibilité personnalisée d'un lien
            de réunion, représentée en horaires Unix en millisecondes.
          format: int64
        customAvailabilityStartDate:
          type: integer
          description: >-
            Date de début de la fenêtre de disponibilité personnalisée d'un lien
            de réunion, représentée en horaires Unix en millisecondes.
          format: int64
        displayInfo:
          $ref: '#/components/schemas/ExternalLinkDisplayInfo'
        durations:
          type: array
          items:
            type: integer
            format: int64
        formFields:
          type: array
          items:
            $ref: '#/components/schemas/ExternalLinkFormField'
        guestSettings:
          $ref: '#/components/schemas/ExternalGuestSettings'
        language:
          type: string
          description: Les paramètres linguistiques utilisés pour le lien vers la réunion.
        legalConsentEnabled:
          type: boolean
          description: >-
            Si la case à cocher relative au consentement légal s'affiche lors de
            la réservation d'une réunion.
        legalConsentOptions:
          $ref: '#/components/schemas/ExternalLegalConsentOptions'
        locale:
          type: string
          description: >-
            Les paramètres régionaux utilisés pour le formatage des dates et des
            heures dans le lien de réunion.
        location:
          type: string
          description: Le lieu physique ou virtuel où se tiendra la réunion.
        meetingBufferTime:
          type: integer
          description: Le délai minimum en millisecondes entre deux réunions consécutives.
          format: int64
        ownerPrioritized:
          type: boolean
          description: >-
            Indique si le propriétaire de la réunion est prioritaire lors de la
            réservation. S'applique uniquement aux types de lien ROUND_ROBIN.
        redirectUrl:
          type: string
          description: L'URL vers laquelle rediriger après la réservation d'une réunion.
        startTimeIncrementMinutes:
          type: string
          description: "L'incrément pour les heures de début disponibles des réunions, exprimé en lettres (par exemple, un incrément de 15\_minutes correspond à «\_FIFTEEN\_»). «\_MEETING_DURATION\_» est également une valeur valide."
          enum:
            - FIFTEEN
            - FIVE
            - FORTY_FIVE
            - MEETING_DURATION
            - NINETY
            - ONE_HUNDRED_TWENTY
            - SIXTY
            - TEN
            - THIRTY
            - TWENTY
        weeksToAdvertise:
          type: integer
          description: >-
            Propriété héritée qui indique le nombre de semaines à l'avance
            pendant lesquelles la disponibilité est annoncée. Peut être obsolète
            ou remplacée par d'autres propriétés.
          format: int32
        welcomeScreenInfo:
          $ref: '#/components/schemas/ExternalMeetingsWelcomeScreenInfo'
    ExternalLinkAvailability:
      required:
        - hasMore
        - linkAvailabilityByDuration
      type: object
      properties:
        hasMore:
          type: boolean
          description: >-
            S'il existe d'autres créneaux horaires disponibles en dehors de ceux
            proposés.
        linkAvailabilityByDuration:
          type: object
          additionalProperties:
            $ref: '#/components/schemas/ExternalLinkAvailabilityForDuration'
          description: Créneaux disponibles pour la réunion, regroupés par durée.
    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
    ExternalTimeRange:
      required:
        - end
        - start
      type: object
      properties:
        end:
          type: integer
          description: >-
            La fin de la plage horaire, représentée sous forme d'horaires Unix
            en millisecondes.
          format: int64
        start:
          type: integer
          description: >-
            Heure de début de la plage horaire, représentée sous forme
            d'horaires Unix en millisecondes.
          format: int64
    ExternalMeetingsUser:
      required:
        - calendarProvider
        - id
        - isSalesStarter
        - userId
        - userProfile
      type: object
      properties:
        calendarProvider:
          type: string
          description: "Fournisseur de calendrier associé à l'utilisateur. Les valeurs acceptées sont\_: GOOGLE, OFFICE365, EXCHANGE, UNKNOWN."
          enum:
            - EXCHANGE
            - GOOGLE
            - OFFICE365
            - UNKNOWN
        id:
          type: string
          description: >-
            Identifiant de l'utilisateur des réunions. Cette valeur est
            différente de l'identifiant utilisateur.
        isSalesStarter:
          type: boolean
          description: Si l'utilisateur dispose d'une licence Sales Starter.
        userId:
          type: string
          description: L'identifiant de l'utilisateur.
        userProfile:
          $ref: '#/components/schemas/ExternalUserProfile'
    ExternalClosedRange:
      required:
        - end
        - start
      type: object
      properties:
        end:
          type: integer
          description: >-
            La valeur de fin de l'intervalle fermé, représentée sous forme
            d'entier.
          format: int64
        start:
          type: integer
          description: >-
            La valeur de début de l'intervalle fermé, représentée sous forme
            d'entier.
          format: int64
    ExternalLinkDisplayInfo:
      type: object
      properties:
        avatar:
          type: string
          description: >-
            L'URL de l'image d'avatar personnalisée téléchargée par
            l'utilisateur.
        companyAvatar:
          type: string
          description: L'URL de l'image d'avatar de l'entreprise.
        headline:
          type: string
          description: >-
            Champ obsolète sans incidence sur l'affichage des informations
            relatives au lien.
        publicDisplayAvatarOption:
          type: string
          description: "Option permettant de déterminer quel avatar afficher sur la page de planification. Les valeurs acceptées sont\_: PROFILE_IMAGE, COMPANY_LOGO, CUSTOM_AVATAR,"
          enum:
            - COMPANY_LOGO
            - CUSTOM_AVATAR
            - PROFILE_IMAGE
    ExternalLinkFormField:
      required:
        - fieldType
        - isCustom
        - isRequired
        - label
        - name
        - options
        - type
      type: object
      properties:
        fieldType:
          type: string
          description: >-
            Le type de champ spécifique du champ du formulaire. Il correspond
            aux types de propriétés (par exemple, `select`, `radio`, `date`,
            etc.)
        isCustom:
          type: boolean
          description: Si le champ du formulaire est un champ personnalisé.
        isRequired:
          type: boolean
          description: Si le champ du formulaire est obligatoire.
        label:
          type: string
          description: Le libellé du champ du formulaire.
        name:
          type: string
          description: Identifiant du nom pour le champ du formulaire.
        options:
          type: array
          items:
            $ref: '#/components/schemas/ExternalOption'
        type:
          type: string
          description: >-
            Le type de données accepté par le champ du formulaire (par exemple,
            `date`, `enumeration`, etc.)
    ExternalGuestSettings:
      required:
        - canAddGuests
        - maxGuestCount
      type: object
      properties:
        canAddGuests:
          type: boolean
          description: Indique si des invités peuvent être ajoutés à la réunion.
        maxGuestCount:
          type: integer
          description: Le nombre maximal d'invités pouvant être ajoutés à la réunion.
          format: int32
    ExternalLegalConsentOptions:
      required:
        - communicationConsentCheckboxes
        - communicationConsentText
        - isLegitimateInterest
        - legitimateInterestSubscriptionTypes
        - privacyPolicyText
        - processingConsentCheckboxLabel
        - processingConsentFooterText
        - processingConsentText
        - processingConsentType
      type: object
      properties:
        communicationConsentCheckboxes:
          type: array
          items:
            $ref: '#/components/schemas/ExternalCommunicationConsentCheckbox'
        communicationConsentText:
          type: string
          description: >-
            Le texte qui décrit le consentement aux préférences de
            communication.
        isLegitimateInterest:
          type: boolean
          description: Si la base juridique du traitement est l'intérêt légitime.
        legitimateInterestLegalBasis:
          type: string
          description: "La base juridique pour le traitement des données du contact dans le cadre d'un intérêt légitime. Les valeurs acceptées sont les suivantes\_: LEGITIMATE_INTEREST_PQL, LEGITIMATE_INTEREST_CLIENT, PERFORMANCE_OF_CONTRACT, CONSENT_WITH_NOTICE, NON_GDPR, PROCESS_AND_STORE, LEGITIMATE_INTEREST_OTHER."
          enum:
            - CONSENT_WITH_NOTICE
            - LEGITIMATE_INTEREST_CLIENT
            - LEGITIMATE_INTEREST_OTHER
            - LEGITIMATE_INTEREST_PQL
            - NON_GDPR
            - PERFORMANCE_OF_CONTRACT
            - PROCESS_AND_STORE
        legitimateInterestSubscriptionTypes:
          type: array
          items:
            type: integer
            format: int64
        privacyPolicyText:
          type: string
          description: >-
            Le texte qui décrit la politique de confidentialité relative au
            traitement des données.
        processingConsentCheckboxLabel:
          type: string
          description: >-
            Le libellé de la case à cocher utilisée pour obtenir le consentement
            au traitement des données.
        processingConsentFooterText:
          type: string
          description: >-
            Texte de pied de page accompagnant le consentement au traitement des
            données. Ce champ n'est pas utilisé par la plateforme de réunion et
            sera toujours vide.
        processingConsentText:
          type: string
          description: >-
            Le texte qui décrit le consentement au traitement des données
            personnelles.
        processingConsentType:
          type: string
          description: "Type de consentement requis pour le traitement. Les valeurs acceptées sont\_: IMPLICIT, REQUIRED_CHECKBOX."
          enum:
            - IMPLICIT
            - REQUIRED_CHECKBOX
    ExternalMeetingsWelcomeScreenInfo:
      type: object
      properties:
        description:
          type: string
          description: >-
            Une brève description s'affichait sur l'écran d'accueil sous le
            titre.
        logoUrl:
          type: string
          description: >-
            URL de l'image du logo à afficher sur l'écran d'accueil, utilisée
            uniquement si `useCompanyLogo` est faux.
        showWelcomeScreen:
          type: boolean
          description: >-
            Propriété obsolète. La valeur peut être ignorée, mais sera toujours
            fausse.
        title:
          type: string
          description: Le titre principal affiché sur l'écran d'accueil.
        useCompanyLogo:
          type: boolean
          description: Si le logo de l'entreprise doit être affiché sur l'écran d'accueil.
    ExternalLinkAvailabilityForDuration:
      required:
        - availabilities
        - meetingDurationMillis
      type: object
      properties:
        availabilities:
          type: array
          items:
            $ref: '#/components/schemas/ExternalMeetingAvailability'
        meetingDurationMillis:
          type: integer
          description: La durée de la réunion en millisecondes.
          format: int64
    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
    ExternalUserProfile:
      required:
        - email
      type: object
      properties:
        email:
          type: string
          description: L'adresse e-mail de l'utilisateur.
        firstName:
          type: string
          description: Le prénom de l'utilisateur.
        fullName:
          type: string
          description: Nom complet de l'utilisateur.
        lastName:
          type: string
          description: Le nom de famille de l'utilisateur.
    ExternalOption:
      required:
        - description
        - displayOrder
        - doubleData
        - hidden
        - label
        - readOnly
        - value
      type: object
      properties:
        description:
          type: string
          description: Une brève description de l'option.
        displayOrder:
          type: integer
          description: L'ordre dans lequel l'option doit être affichée.
          format: int32
        doubleData:
          type: number
          description: Propriété obsolète. Sera toujours égale à 0.
        hidden:
          type: boolean
          description: Si l'option doit être masquée pour l'utilisateur.
        label:
          type: string
          description: Le libellé du texte pour l'option.
        readOnly:
          type: boolean
          description: Indique si l'option est en lecture seule.
        value:
          type: string
          description: La valeur associée à l'option.
    ExternalCommunicationConsentCheckbox:
      required:
        - communicationTypeId
        - label
        - required
      type: object
      properties:
        communicationTypeId:
          type: string
          description: >-
            L'identifiant du formulaire de consentement à la communication
            enregistré.
        label:
          type: string
          description: Le libellé décrivant le consentement être donné.
        required:
          type: boolean
          description: Si la case à cocher pour le consentement est obligatoire.
    ExternalMeetingAvailability:
      required:
        - endMillisUtc
        - startMillisUtc
      type: object
      properties:
        endMillisUtc:
          type: integer
          description: >-
            L'heure de fin de la disponibilité de la réunion, représentée sous
            forme d'heure Unix en millisecondes.
          format: int64
        startMillisUtc:
          type: integer
          description: >-
            L'heure de début de la disponibilité de la réunion, représentée sous
            forme d'heure Unix en millisecondes.
          format: int64
  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.contacts.sensitive.write.v2: ''
            meetings-write: ''
            scheduler.meetings.meeting-link.read: ''

````