{"id":1762847254,"date":"2026-04-10T22:42:44","date_gmt":"2026-04-10T22:42:44","guid":{"rendered":"https:\/\/www.veloexotique.fr\/?page_id=1762847254"},"modified":"2026-04-12T23:08:14","modified_gmt":"2026-04-12T23:08:14","slug":"gpx-tracks-bike","status":"publish","type":"page","link":"https:\/\/www.veloexotique.fr\/en\/traces-gpx-velo\/","title":{"rendered":"Traces"},"content":{"rendered":"<div class=\"et_pb_section_0 et_pb_section et_section_regular et_flex_section\">\n<div class=\"et_pb_row_0 et_pb_row et_flex_row\">\n<div class=\"et_pb_column_0 et_pb_column et-last-child et_flex_column et_pb_css_mix_blend_mode_passthrough et_flex_column_24_24 et_flex_column_24_24_tablet et_flex_column_24_24_phone\">\n<div class=\"et_pb_text_0 et_pb_text et_pb_bg_layout_light et_pb_module et_flex_module\"><div class=\"et_pb_text_inner\"><h1 data-path-to-node=\"10\" style=\"text-align: center;\">Biblioth\u00e8que de Traces GPX<\/h1>\n<h1 data-path-to-node=\"10\" style=\"text-align: center;\">Gravel et Cyclotourisme<\/h1>\n<blockquote data-path-to-node=\"11\">\n<p data-path-to-node=\"11,0\">L\u2019exploration est l\u2019essence m\u00eame du cyclisme de d\u00e9couverte. Pourtant, la planification d'un itin\u00e9raire fiable reste l'un des principaux freins \u00e0 l'aventure. Pour r\u00e9pondre \u00e0 ce besoin, <b data-path-to-node=\"11,0\" data-index-in-node=\"184\">VeloExotique<\/b> a centralis\u00e9 une base de donn\u00e9es exhaustive de traces GPX, sp\u00e9cifiquement s\u00e9lectionn\u00e9es pour leur int\u00e9r\u00eat technique et paysager en gravel et cyclotourisme.<\/p>\n<p data-path-to-node=\"11,1\">Chaque parcours pr\u00e9sent dans cette biblioth\u00e8que a \u00e9t\u00e9 analys\u00e9 pour r\u00e9pondre aux exigences des pratiquants modernes : passages hors-route praticables, ratio d\u00e9nivel\u00e9\/distance \u00e9quilibr\u00e9 et int\u00e9r\u00eat cartographique. Que vous pr\u00e9pariez une sortie locale ou un voyage en bikepacking, notre outil de recherche vous permet de filtrer les traces par d\u00e9partement et par type de pratique.<\/p>\n<\/blockquote>\n<\/div><\/div>\n<\/div>\n<\/div>\n\n<div class=\"et_pb_row_1 et_pb_row et_flex_row\">\n<div class=\"et_pb_column_1 et_pb_column et-last-child et_flex_column et_pb_css_mix_blend_mode_passthrough et_flex_column_24_24 et_flex_column_24_24_tablet et_flex_column_24_24_phone\">\n<div class=\"et_pb_code_0 et_pb_code et_pb_module\"><div class=\"et_pb_code_inner\"><!DOCTYPE html>\n<html lang=\"fr\">\n<head>\n<meta charset=\"UTF-8\">\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\">\n<link rel=\"stylesheet\" href=\"https:\/\/cdnjs.cloudflare.com\/ajax\/libs\/leaflet\/1.9.4\/leaflet.min.css\"\/>\n<link rel=\"stylesheet\" href=\"https:\/\/cdnjs.cloudflare.com\/ajax\/libs\/leaflet.markercluster\/1.5.3\/MarkerCluster.css\"\/>\n<link rel=\"stylesheet\" href=\"https:\/\/cdnjs.cloudflare.com\/ajax\/libs\/leaflet.markercluster\/1.5.3\/MarkerCluster.Default.css\"\/>\n<style>\n\/* Style Global *\/\n.gpx-app { max-width: 1400px; margin: 0 auto; font-family: sans-serif; color: #1a1a1a; }\n.gpx-body { display: grid; grid-template-columns: 1fr 400px; gap: 20px; margin-top: 20px; }\n\n\/* Carte et Profil *\/\n.map-col { position: sticky; top: 20px; }\n#map { height: 450px; border-radius: 12px; border: 1px solid #ddd; }\n.details-panel { \n    background: #fff; border: 1px solid #eee; border-radius: 12px; \n    padding: 15px; margin-top: 15px; display: none; \n}\n.details-panel.active { display: block; }\n#chart-container { height: 150px; width: 100%; margin-top: 10px; }\n\n\/* Filtres et Liste *\/\n.filters-row { display: flex; gap: 15px; flex-wrap: wrap; background: #f8fafc; padding: 15px; border-radius: 10px; margin-bottom: 20px; align-items: center; }\n.filters-row input[type=\"text\"], .filters-row select { padding: 8px; border: 1px solid #cbd5e1; border-radius: 6px; }\n.filter-group { display: flex; flex-direction: column; gap: 4px; font-size: 0.8rem; font-weight: bold; color: #64748b; }\n\n.trace-list { height: 600px; overflow-y: auto; display: flex; flex-direction: column; gap: 10px; }\n.trace-card { border: 1px solid #e2e8f0; padding: 12px; border-radius: 8px; cursor: pointer; transition: 0.2s; }\n.trace-card:hover, .trace-card.active { border-color: #1D9E75; background: #f0fdf4; }\n.badge { font-size: 0.75rem; padding: 2px 8px; border-radius: 10px; font-weight: bold; }\n.badge-gravel { background: #dcfce7; color: #166534; }\n.badge-Cyclotourisme { background: #dbeafe; color: #1e40af; }\n\n@media (max-width: 900px) {\n    .gpx-body { grid-template-columns: 1fr; }\n    .map-col { position: static; }\n}\n<\/style>\n<\/head>\n<body>\n\n<div class=\"gpx-app\">\n    <div class=\"filters-row\">\n        <div class=\"filter-group\" style=\"flex: 1;\">\n            RECHERCHE\n            <input type=\"text\" id=\"searchInput\" placeholder=\"Ville, nom...\" oninput=\"applyFilters()\">\n        <\/div>\n\n        <div class=\"filter-group\">\n            TYPE\n            <select id=\"filterType\" onchange=\"applyFilters()\">\n                <option value=\"\">Tous les types<\/option>\n                <option value=\"V\u00e9lo Gravel\">V\u00e9lo Gravel<\/option>\n                <option value=\"Cyclotourisme\">Cyclotourisme<\/option>\n            <\/select>\n        <\/div>\n\n        <div class=\"filter-group\">\n            DISTANCE MAX : <span id=\"distVal\" style=\"color:#1D9E75\">250<\/span> km\n            <input type=\"range\" id=\"distRange\" min=\"0\" max=\"250\" value=\"250\" oninput=\"applyFilters()\">\n        <\/div>\n\n        <div class=\"filter-group\">\n            D\u00c9NIVEL\u00c9 MAX : <span id=\"denivVal\" style=\"color:#1D9E75\">4000<\/span> m\n            <input type=\"range\" id=\"denivRange\" min=\"0\" max=\"4000\" value=\"4000\" oninput=\"applyFilters()\">\n        <\/div>\n\n        <button onclick=\"resetFilters()\" style=\"cursor:pointer; background:none; border:none; color:#666; padding-top:15px;\">\u2715 Effacer<\/button>\n    <\/div>\n\n    <div class=\"gpx-body\">\n        <div class=\"map-col\">\n            <div id=\"map\"><\/div>\n            \n            <div id=\"detailsPanel\" class=\"details-panel\">\n                <h3 id=\"detailTitle\" style=\"margin:0;\">S\u00e9lectionnez une trace<\/h3>\n                <div id=\"detailStats\" style=\"margin:10px 0; font-size:0.9rem; color:#64748b;\"><\/div>\n                <p id=\"detailDesc\" style=\"font-size:0.9rem; line-height:1.4;\"><\/p>\n                <div id=\"chart-container\">\n                    <canvas id=\"elevationChart\"><\/canvas>\n                <\/div>\n                <div style=\"margin-top:15px;\">\n                    <a id=\"downloadBtn\" href=\"#\" download class=\"badge-gravel\" style=\"text-decoration:none; padding:8px 15px; display:inline-block; border-radius:6px;\">&#x2b07;&#xfe0f; T\u00e9l\u00e9charger GPX<\/a>\n                <\/div>\n            <\/div>\n        <\/div>\n\n        <div class=\"list-col\">\n            <div id=\"traceList\" class=\"trace-list\">\n                <p style=\"text-align:center; padding:20px;\">Chargement des traces...<\/p>\n            <\/div>\n        <\/div>\n    <\/div>\n<\/div>\n\n<script src=\"https:\/\/cdnjs.cloudflare.com\/ajax\/libs\/leaflet\/1.9.4\/leaflet.min.js\"><\/script>\n<script src=\"https:\/\/cdnjs.cloudflare.com\/ajax\/libs\/leaflet-gpx\/1.7.0\/gpx.min.js\"><\/script>\n<script src=\"https:\/\/cdnjs.cloudflare.com\/ajax\/libs\/leaflet.markercluster\/1.5.3\/leaflet.markercluster.js\"><\/script>\n<script src=\"https:\/\/cdnjs.cloudflare.com\/ajax\/libs\/Chart.js\/4.4.1\/chart.umd.min.js\"><\/script>\n\n<script>\nconst JSON_URL = \"https:\/\/www.veloexotique.fr\/wp-content\/uploads\/gpx\/traces.json\";\nconst GPX_BASE = \"https:\/\/www.veloexotique.fr\/wp-content\/uploads\/gpx\/\";\n\nlet allTraces = [];\nlet map, clusterGroup, chart;\nlet activeLayer = null;\n\nasync function init() {\n    map = L.map('map').setView([46.5, 2.5], 6);\n    L.tileLayer('https:\/\/{s}.tile.openstreetmap.org\/{z}\/{x}\/{y}.png').addTo(map);\n    clusterGroup = L.markerClusterGroup().addTo(map);\n\n    try {\n        const res = await fetch(JSON_URL);\n        const data = await res.json();\n        allTraces = data.traces;\n        applyFilters();\n    } catch (e) {\n        document.getElementById('traceList').innerHTML = \"Erreur de chargement des donn\u00e9es.\";\n    }\n}\n\nfunction applyFilters() {\n    const search = document.getElementById('searchInput').value.toLowerCase();\n    const type = document.getElementById('filterType').value;\n    const maxDist = parseInt(document.getElementById('distRange').value);\n    const maxDeniv = parseInt(document.getElementById('denivRange').value);\n\n    \/\/ Mise \u00e0 jour de l'affichage des valeurs des sliders\n    document.getElementById('distVal').innerText = maxDist;\n    document.getElementById('denivVal').innerText = maxDeniv;\n\n    const filtered = allTraces.filter(t => {\n        const matchSearch = t.titre.toLowerCase().includes(search);\n        const matchType = type === \"\" || t.activite === type;\n        const matchDist = t.distance_km <= maxDist;\n        const matchDeniv = t.denivele_pos <= maxDeniv;\n        \n        return matchSearch && matchType && matchDist && matchDeniv;\n    });\n\n    renderList(filtered);\n    renderMarkers(filtered);\n}\n\nfunction renderList(list) {\n    const container = document.getElementById('traceList');\n    if (list.length === 0) {\n        container.innerHTML = \"<p style='text-align:center; padding:20px;'>Aucun itin\u00e9raire ne correspond \u00e0 vos crit\u00e8res.<\/p>\";\n        return;\n    }\n    container.innerHTML = list.map(t => `\n        <div class=\"trace-card\" onclick=\"selectTrace('${t.id}')\" id=\"card-${t.id}\">\n            <div style=\"display:flex; justify-content:space-between; align-items:start;\">\n                <span style=\"font-weight:bold; font-size:0.9rem;\">${t.titre}<\/span>\n                <span class=\"badge ${t.activite === 'V\u00e9lo Gravel' ? 'badge-gravel' : 'badge-Cyclotourisme'}\">${t.activite}<\/span>\n            <\/div>\n            <div style=\"font-size:0.8rem; color:#666; margin-top:5px;\">\n                &#x1f4cf; ${t.distance_km} km | &#x26f0;&#xfe0f; +${t.denivele_pos} m\n            <\/div>\n        <\/div>\n    `).join('');\n}\n\nfunction renderMarkers(list) {\n    clusterGroup.clearLayers();\n    list.forEach(t => {\n        if (!t.center_lat) return;\n        const marker = L.marker([t.center_lat, t.center_lon]);\n        marker.on('click', () => selectTrace(t.id));\n        clusterGroup.addLayer(marker);\n    });\n}\n\nfunction selectTrace(id) {\n    const t = allTraces.find(x => x.id === id);\n    if (!t) return;\n\n    document.querySelectorAll('.trace-card').forEach(c => c.classList.remove('active'));\n    const selectedCard = document.getElementById(`card-${id}`);\n    if(selectedCard) selectedCard.classList.add('active');\n    \n    document.getElementById('detailsPanel').classList.add('active');\n    document.getElementById('detailTitle').innerText = t.titre;\n    document.getElementById('detailStats').innerText = `Distance : ${t.distance_km} km | D\u00e9nivel\u00e9 : +${t.denivele_pos} m`;\n    document.getElementById('detailDesc').innerText = t.description;\n    document.getElementById('downloadBtn').href = GPX_BASE + t.gpx_url;\n\n    if (activeLayer) map.removeLayer(activeLayer);\n    activeLayer = new L.GPX(GPX_BASE + t.gpx_url, {\n        async: true,\n        polyline_options: { color: '#e05c00', weight: 4, opacity: 0.8 },\n        marker_options: { startIconUrl: null, endIconUrl: null, shadowUrl: null }\n    }).on('loaded', e => map.fitBounds(e.target.getBounds())).addTo(map);\n\n    updateChart(t.profile);\n}\n\nfunction updateChart(profileData) {\n    const ctx = document.getElementById('elevationChart').getContext('2d');\n    if (chart) chart.destroy();\n    \n    chart = new Chart(ctx, {\n        type: 'line',\n        data: {\n            labels: profileData.map(p => p[0] + ' km'),\n            datasets: [{\n                label: 'Altitude (m)',\n                data: profileData.map(p => p[1]),\n                borderColor: '#1D9E75',\n                fill: true,\n                backgroundColor: 'rgba(29, 158, 117, 0.1)',\n                pointRadius: 0,\n                tension: 0.3\n            }]\n        },\n        options: { \n            responsive: true, maintainAspectRatio: false,\n            plugins: { legend: { display: false } },\n            scales: { x: { display: false } }\n        }\n    });\n}\n\nfunction resetFilters() {\n    document.getElementById('searchInput').value = '';\n    document.getElementById('filterType').value = '';\n    document.getElementById('distRange').value = 250;\n    document.getElementById('denivRange').value = 4000;\n    applyFilters();\n}\n\ninit();\n<\/script>\n<\/body>\n<\/html><\/div><\/div>\n<\/div>\n<\/div>\n<\/div>","protected":false},"excerpt":{"rendered":"","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"_acf_changed":false,"footnotes":""},"class_list":["post-1762847254","page","type-page","status-publish","hentry"],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v28.6 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Traces - VeloExotique.fr<\/title>\n<meta name=\"description\" content=\"Explorez notre base de donn\u00e9es de traces GPX d\u00e9di\u00e9es au v\u00e9lo gravel et au cyclotourisme. T\u00e9l\u00e9chargement gratuit de parcours v\u00e9rifi\u00e9s, class\u00e9s par d\u00e9partement et difficult\u00e9. Trouvez votre prochaine aventure avec VeloExotique\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.veloexotique.fr\/en\/gpx-tracks-bike\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Traces - VeloExotique.fr\" \/>\n<meta property=\"og:description\" content=\"Explorez notre base de donn\u00e9es de traces GPX d\u00e9di\u00e9es au v\u00e9lo gravel et au cyclotourisme. T\u00e9l\u00e9chargement gratuit de parcours v\u00e9rifi\u00e9s, class\u00e9s par d\u00e9partement et difficult\u00e9. Trouvez votre prochaine aventure avec VeloExotique\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.veloexotique.fr\/en\/gpx-tracks-bike\/\" \/>\n<meta property=\"og:site_name\" content=\"VeloExotique.fr\" \/>\n<meta property=\"article:modified_time\" content=\"2026-04-12T23:08:14+00:00\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/www.veloexotique.fr\\\/traces-gpx-velo\\\/\",\"url\":\"https:\\\/\\\/www.veloexotique.fr\\\/traces-gpx-velo\\\/\",\"name\":\"Traces - VeloExotique.fr\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.veloexotique.fr\\\/#website\"},\"datePublished\":\"2026-04-10T22:42:44+00:00\",\"dateModified\":\"2026-04-12T23:08:14+00:00\",\"description\":\"Explorez notre base de donn\u00e9es de traces GPX d\u00e9di\u00e9es au v\u00e9lo gravel et au cyclotourisme. T\u00e9l\u00e9chargement gratuit de parcours v\u00e9rifi\u00e9s, class\u00e9s par d\u00e9partement et difficult\u00e9. Trouvez votre prochaine aventure avec VeloExotique\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/www.veloexotique.fr\\\/traces-gpx-velo\\\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/www.veloexotique.fr\\\/traces-gpx-velo\\\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/www.veloexotique.fr\\\/traces-gpx-velo\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Accueil\",\"item\":\"https:\\\/\\\/www.veloexotique.fr\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Traces\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/www.veloexotique.fr\\\/#website\",\"url\":\"https:\\\/\\\/www.veloexotique.fr\\\/\",\"name\":\"VeloExotique.fr\",\"description\":\"Le meilleur d&#039;ailleurs\",\"publisher\":{\"@id\":\"https:\\\/\\\/www.veloexotique.fr\\\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/www.veloexotique.fr\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/www.veloexotique.fr\\\/#organization\",\"name\":\"VeloExotique.fr\",\"url\":\"https:\\\/\\\/www.veloexotique.fr\\\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/www.veloexotique.fr\\\/#\\\/schema\\\/logo\\\/image\\\/\",\"url\":\"https:\\\/\\\/www.veloexotique.fr\\\/wp-content\\\/uploads\\\/2025\\\/08\\\/ChatGPT-Image-26-aout-2025-09_42_31.png\",\"contentUrl\":\"https:\\\/\\\/www.veloexotique.fr\\\/wp-content\\\/uploads\\\/2025\\\/08\\\/ChatGPT-Image-26-aout-2025-09_42_31.png\",\"width\":1024,\"height\":1024,\"caption\":\"VeloExotique.fr\"},\"image\":{\"@id\":\"https:\\\/\\\/www.veloexotique.fr\\\/#\\\/schema\\\/logo\\\/image\\\/\"},\"sameAs\":[\"https:\\\/\\\/www.youtube.com\\\/channel\\\/UCizB2T3L7pbW-QG5BALTPRg\",\"https:\\\/\\\/www.instagram.com\\\/veloexotique.fr\\\/\"]}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Traces - VeloExotique.fr","description":"Explore our database of GPX tracks dedicated to gravel biking and cycle touring. Free download of verified routes, sorted by department and difficulty. Find your next adventure with VeloExotique","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.veloexotique.fr\/en\/gpx-tracks-bike\/","og_locale":"en_US","og_type":"article","og_title":"Traces - VeloExotique.fr","og_description":"Explorez notre base de donn\u00e9es de traces GPX d\u00e9di\u00e9es au v\u00e9lo gravel et au cyclotourisme. T\u00e9l\u00e9chargement gratuit de parcours v\u00e9rifi\u00e9s, class\u00e9s par d\u00e9partement et difficult\u00e9. Trouvez votre prochaine aventure avec VeloExotique","og_url":"https:\/\/www.veloexotique.fr\/en\/gpx-tracks-bike\/","og_site_name":"VeloExotique.fr","article_modified_time":"2026-04-12T23:08:14+00:00","twitter_card":"summary_large_image","schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/www.veloexotique.fr\/traces-gpx-velo\/","url":"https:\/\/www.veloexotique.fr\/traces-gpx-velo\/","name":"Traces - VeloExotique.fr","isPartOf":{"@id":"https:\/\/www.veloexotique.fr\/#website"},"datePublished":"2026-04-10T22:42:44+00:00","dateModified":"2026-04-12T23:08:14+00:00","description":"Explore our database of GPX tracks dedicated to gravel biking and cycle touring. Free download of verified routes, sorted by department and difficulty. Find your next adventure with VeloExotique","breadcrumb":{"@id":"https:\/\/www.veloexotique.fr\/traces-gpx-velo\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.veloexotique.fr\/traces-gpx-velo\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/www.veloexotique.fr\/traces-gpx-velo\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Accueil","item":"https:\/\/www.veloexotique.fr\/"},{"@type":"ListItem","position":2,"name":"Traces"}]},{"@type":"WebSite","@id":"https:\/\/www.veloexotique.fr\/#website","url":"https:\/\/www.veloexotique.fr\/","name":"VeloExotique.fr","description":"The best of elsewhere","publisher":{"@id":"https:\/\/www.veloexotique.fr\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.veloexotique.fr\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/www.veloexotique.fr\/#organization","name":"VeloExotique.fr","url":"https:\/\/www.veloexotique.fr\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.veloexotique.fr\/#\/schema\/logo\/image\/","url":"https:\/\/www.veloexotique.fr\/wp-content\/uploads\/2025\/08\/ChatGPT-Image-26-aout-2025-09_42_31.png","contentUrl":"https:\/\/www.veloexotique.fr\/wp-content\/uploads\/2025\/08\/ChatGPT-Image-26-aout-2025-09_42_31.png","width":1024,"height":1024,"caption":"VeloExotique.fr"},"image":{"@id":"https:\/\/www.veloexotique.fr\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.youtube.com\/channel\/UCizB2T3L7pbW-QG5BALTPRg","https:\/\/www.instagram.com\/veloexotique.fr\/"]}]}},"_links":{"self":[{"href":"https:\/\/www.veloexotique.fr\/en\/wp-json\/wp\/v2\/pages\/1762847254","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.veloexotique.fr\/en\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/www.veloexotique.fr\/en\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/www.veloexotique.fr\/en\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.veloexotique.fr\/en\/wp-json\/wp\/v2\/comments?post=1762847254"}],"version-history":[{"count":25,"href":"https:\/\/www.veloexotique.fr\/en\/wp-json\/wp\/v2\/pages\/1762847254\/revisions"}],"predecessor-version":[{"id":1762847445,"href":"https:\/\/www.veloexotique.fr\/en\/wp-json\/wp\/v2\/pages\/1762847254\/revisions\/1762847445"}],"wp:attachment":[{"href":"https:\/\/www.veloexotique.fr\/en\/wp-json\/wp\/v2\/media?parent=1762847254"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}