> ## 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 a redirect

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="PROFESSIONAL" salesLevel="FREE" serviceLevel="FREE" cmsLevel="STARTER" />
  </Accordion>

  <Accordion title="Required Scopes" icon="key">
    <ScopesList
      scopes={[
  'content'
]}
    />
  </Accordion>
</AccordionGroup>


## OpenAPI

````yaml specs/2026-03/cms-url-redirects-v2026-03.json POST /cms/url-redirects/2026-03
openapi: 3.0.1
info:
  title: Redirections d'URL
  description: Basepom for all HubSpot Projects
  version: 2026-03
  x-hubspot-product-tier-requirements:
    marketing: PROFESSIONAL
    sales: FREE
    service: FREE
    cms: STARTER
    commerce: FREE
    crmHub: FREE
    dataHub: FREE
  x-hubspot-api-use-case: >-
    Redirigez une page vers une autre, ou redirigez un blog entier avec une
    seule URL en utilisant des modèles de variables flexibles.
  x-hubspot-introduction: >-
    Utilisez l'API de redirections d'URL pour rediriger le trafic depuis une
    page ou un article de blog hébergé par HubSpot vers toute URL. Redirigez des
    pages vers des URL spécifiques ou employez des modèles de redirections
    flexibles pour rediriger plusieurs pages en utilisant des variables. En
    savoir plus sur la gestion des redirections dans HubSpot.
servers:
  - url: https://api.hubapi.com
security: []
tags:
  - name: Basic
paths:
  /cms/url-redirects/2026-03:
    post:
      tags:
        - Basic
      operationId: post-/cms/url-redirects/2026-03_/cms/url-redirects/v3
      parameters: []
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/UrlMappingCreateRequestBody'
        required: true
      responses:
        '201':
          description: successful operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UrlMapping'
        default:
          $ref: '#/components/responses/Error'
          description: ''
      security:
        - oauth2:
            - content
components:
  schemas:
    UrlMappingCreateRequestBody:
      required:
        - destination
        - redirectStyle
        - routePrefix
      type: object
      properties:
        destination:
          type: string
          description: "L'URL de destination, où l'URL cible doit être redirigée si elle correspond au «\_routePrefix\_»."
        isMatchFullUrl:
          type: boolean
          description: "Si «\_routePrefix\_» doit correspondre à l'URL entière, y compris le domaine."
        isMatchQueryString:
          type: boolean
          description: "Si «\_routePrefix\_» doit correspondre au chemin complet de l'URL, y compris la chaîne de requête."
        isOnlyAfterNotFound:
          type: boolean
          description: >-
            Si la redirection d'URL doit s'appliquer seulement si une page en
            ligne à l'URL n'est pas trouvée. Si Faux, la redirection d'URL aura
            la priorité sur toute page existante.
        isPattern:
          type: boolean
          description: "Si «\_routePrefix\_» doit correspondre en fonction du modèle."
        isProtocolAgnostic:
          type: boolean
          description: "Si «\_routePrefix\_» doit correspondre aux protocoles HTTP et HTTPS."
        isTrailingSlashOptional:
          type: boolean
          description: Si une barre oblique sera ignorée.
        precedence:
          type: integer
          description: >-
            Utilisé pour prioriser la redirection d'URL. Si une URL donnée
            correspond à plus d'une redirection, celle avec la priorité **la
            plus basse** sera utilisée.
          format: int32
        redirectStyle:
          type: integer
          description: "Le type de redirection à créer. Les options incluent\_: 301 (permanent), 302 (temporaire) ou 305 (proxy). Trouvez plus de détails [ici] (https://knowledge.hubspot.com/cos-general/how-to-redirect-a-hubspot-page)."
          format: int32
        routePrefix:
          type: string
          description: >-
            L'URL, le chemin ou le motif d'entrée cible à faire correspondre
            pour la redirection.
    UrlMapping:
      required:
        - created
        - destination
        - id
        - isMatchFullUrl
        - isMatchQueryString
        - isOnlyAfterNotFound
        - isPattern
        - isProtocolAgnostic
        - isTrailingSlashOptional
        - precedence
        - redirectStyle
        - routePrefix
        - updated
      type: object
      properties:
        created:
          type: string
          description: Date et heure auxquelles le mappage d'URL a été initialement créé.
          format: date-time
        destination:
          type: string
          description: "L'URL de destination, où l'URL cible doit être redirigée si elle correspond au «\_routePrefix\_»."
        id:
          type: string
          description: L'identifiant unique de cette redirection d'URL.
        isMatchFullUrl:
          type: boolean
          description: "Si «\_routePrefix\_» doit correspondre à l'URL entière, y compris le domaine."
        isMatchQueryString:
          type: boolean
          description: "Si «\_routePrefix\_» doit correspondre au chemin complet de l'URL, y compris la chaîne de requête."
        isOnlyAfterNotFound:
          type: boolean
          description: >-
            Si la redirection d'URL doit s'appliquer seulement si une page en
            ligne à l'URL n'est pas trouvée. Si Faux, la redirection d'URL aura
            la priorité sur toute page existante.
        isPattern:
          type: boolean
          description: "Si «\_routePrefix\_» doit correspondre en fonction du modèle."
        isProtocolAgnostic:
          type: boolean
          description: "Si «\_routePrefix\_» doit correspondre aux protocoles HTTP et HTTPS."
        isTrailingSlashOptional:
          type: boolean
          description: Si une barre oblique sera ignorée.
        precedence:
          type: integer
          description: >-
            Utilisé pour prioriser la redirection d'URL. Si une URL donnée
            correspond à plus d'une redirection, celle avec la priorité **la
            plus basse** sera utilisée.
          format: int32
        redirectStyle:
          type: integer
          description: "Le type de redirection à créer. Les options incluent\_: 301 (permanent), 302 (temporaire) ou 305 (proxy). Trouvez plus de détails [ici] (https://knowledge.hubspot.com/cos-general/how-to-redirect-a-hubspot-page)."
          format: int32
        routePrefix:
          type: string
          description: >-
            L'URL, le chemin ou le motif d'entrée cible à faire correspondre
            pour la redirection.
        updated:
          type: string
          description: Date et heure de la dernière modification du mappage d'URL.
          format: date-time
    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
    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:
            cms-url-redirects-delete: ''
            content: ''

````