Aller au contenu

Composants

Un composant est un bloc de liens et de titres partagé entre les pages d'un environnement : posé sur trois pages, il s'y affiche à l'identique, et le modifier les modifie toutes. Ses liens se gèrent avec les mêmes routes que ceux d'une page. Créer, dupliquer ou poser un composant dépend de l'offre.

Lister les composants

GET/v1/components

Les composants de l'environnement, par ordre alphabétique. links_count compte les liens non archivés, pages_count les pages où le composant est posé. Portée Lecture.

curl https://api.tinylink.fr/v1/components \
  -H "Authorization: Bearer tl_votre_jeton"

Réponses possibles

{
  "data": [
    {
      "id": "C6ad34a13d28745",
      "name": "Mes réseaux",
      "description": "Les mêmes liens sur toutes mes pages",
      "links_count": 2,
      "pages_count": 0,
      "created_at": "2026-10-17T12:12:35+02:00",
      "edit_url": "https://app.tinylink.fr/component-edit?id=C6ad34a13d28745"
    }
  ]
}

Créer un composant

POST/v1/components

name est obligatoire (100 caractères au plus), description facultative (500 au plus). links ajoute d'un coup jusqu'à 100 liens, décrits comme sur une page. Portée Écriture.

curl -X POST https://api.tinylink.fr/v1/components \
  -H "Authorization: Bearer tl_votre_jeton" \
  -H "Content-Type: application/json" \
  -d '{
    "name": "Mes réseaux",
    "description": "Les mêmes liens sur toutes mes pages",
    "links": [
      {
        "title": "Instagram",
        "url": "https://instagram.com/exemple"
      },
      {
        "title": "YouTube",
        "url": "https://youtube.com/@exemple"
      }
    ]
  }'

Réponses possibles

{
  "id": "C6ad34a13d28745",
  "name": "Mes réseaux",
  "description": "Les mêmes liens sur toutes mes pages",
  "links_count": 2,
  "pages_count": 0,
  "created_at": "2026-10-17T12:12:35+02:00",
  "edit_url": "https://app.tinylink.fr/component-edit?id=C6ad34a13d28745",
  "links": [
    {
      "id": "L6ad34a13d2956",
      "title": "Instagram",
      "description": "",
      "url": "https://instagram.com/exemple",
      "type": "url",
      "format": "LIST",
      "size": "FULL",
      "visible": true,
      "archived": false,
      "position": 1,
      "status": "active",
      "image": null,
      "created_at": "2026-10-17T12:12:35+02:00"
    },
    {
      "id": "L6ad34a13d2dcb",
      "title": "YouTube",
      "description": "",
      "url": "https://youtube.com/@exemple",
      "type": "url",
      "format": "LIST",
      "size": "FULL",
      "visible": true,
      "archived": false,
      "position": 2,
      "status": "active",
      "image": null,
      "created_at": "2026-10-17T12:12:35+02:00"
    }
  ],
  "pages": []
}

Lire un composant

GET/v1/components/{id}

Le composant, ses liens dans l'ordre d'affichage et les pages où il est posé. Portée Lecture.

curl https://api.tinylink.fr/v1/components/C6ad34a13d28745 \
  -H "Authorization: Bearer tl_votre_jeton"

Réponses possibles

{
  "id": "C6ad34a13d28745",
  "name": "Mes réseaux",
  "description": "Les mêmes liens sur toutes mes pages",
  "links_count": 2,
  "pages_count": 0,
  "created_at": "2026-10-17T12:12:35+02:00",
  "edit_url": "https://app.tinylink.fr/component-edit?id=C6ad34a13d28745",
  "links": [
    {
      "id": "L6ad34a13d2956",
      "title": "Instagram",
      "description": "",
      "url": "https://instagram.com/exemple",
      "type": "url",
      "format": "LIST",
      "size": "FULL",
      "visible": true,
      "archived": false,
      "position": 1,
      "status": "active",
      "image": null,
      "created_at": "2026-10-17T12:12:35+02:00"
    },
    {
      "id": "L6ad34a13d2dcb",
      "title": "YouTube",
      "description": "",
      "url": "https://youtube.com/@exemple",
      "type": "url",
      "format": "LIST",
      "size": "FULL",
      "visible": true,
      "archived": false,
      "position": 2,
      "status": "active",
      "image": null,
      "created_at": "2026-10-17T12:12:35+02:00"
    }
  ],
  "pages": []
}

Modifier un composant

PATCH/v1/components/{id}

name, description, ou les deux. Portée Écriture.

curl -X PATCH https://api.tinylink.fr/v1/components/C6ad34a13d28745 \
  -H "Authorization: Bearer tl_votre_jeton" \
  -H "Content-Type: application/json" \
  -d '{"name":"Réseaux sociaux"}'

Réponses possibles

{
  "id": "C6ad34a13d28745",
  "name": "Réseaux sociaux",
  "description": "Les mêmes liens sur toutes mes pages",
  "links_count": 2,
  "pages_count": 0,
  "created_at": "2026-10-17T12:12:35+02:00",
  "edit_url": "https://app.tinylink.fr/component-edit?id=C6ad34a13d28745",
  "links": [
    {
      "id": "L6ad34a13d2956",
      "title": "Instagram",
      "description": "",
      "url": "https://instagram.com/exemple",
      "type": "url",
      "format": "LIST",
      "size": "FULL",
      "visible": true,
      "archived": false,
      "position": 1,
      "status": "active",
      "image": null,
      "created_at": "2026-10-17T12:12:35+02:00"
    },
    {
      "id": "L6ad34a13d2dcb",
      "title": "YouTube",
      "description": "",
      "url": "https://youtube.com/@exemple",
      "type": "url",
      "format": "LIST",
      "size": "FULL",
      "visible": true,
      "archived": false,
      "position": 2,
      "status": "active",
      "image": null,
      "created_at": "2026-10-17T12:12:35+02:00"
    }
  ],
  "pages": []
}

Dupliquer un composant

POST/v1/components/{id}/duplicate

Copie le composant et ses liens non archivés, images comprises, sous le nom name (à défaut : le nom suivi de « (copy) »). La copie n'est posée sur aucune page. Portée Écriture.

curl -X POST https://api.tinylink.fr/v1/components/C6ad34a13d28745/duplicate \
  -H "Authorization: Bearer tl_votre_jeton" \
  -H "Content-Type: application/json" \
  -d '{"name":"Réseaux (copie)"}'

Réponses possibles

{
  "id": "C6ad34a1406db15",
  "name": "Réseaux (copie)",
  "description": "Les mêmes liens sur toutes mes pages",
  "links_count": 3,
  "pages_count": 0,
  "created_at": "2026-10-17T12:12:36+02:00",
  "edit_url": "https://app.tinylink.fr/component-edit?id=C6ad34a1406db15",
  "links": [
    {
      "id": "L6ad34a1406fb3",
      "title": "Instagram",
      "description": "",
      "url": "https://instagram.com/exemple",
      "type": "url",
      "format": "LIST",
      "size": "FULL",
      "visible": true,
      "archived": false,
      "position": 1,
      "status": "active",
      "image": null,
      "created_at": "2026-10-17T12:12:36+02:00"
    },
    {
      "id": "L6ad34a14070bb",
      "title": "YouTube",
      "description": "",
      "url": "https://youtube.com/@exemple",
      "type": "url",
      "format": "LIST",
      "size": "FULL",
      "visible": true,
      "archived": false,
      "position": 2,
      "status": "active",
      "image": null,
      "created_at": "2026-10-17T12:12:36+02:00"
    },
    {
      "id": "L6ad34a14071a7",
      "title": "TikTok",
      "description": "",
      "url": "https://tiktok.com/@exemple",
      "type": "url",
      "format": "LIST",
      "size": "FULL",
      "visible": true,
      "archived": false,
      "position": 3,
      "status": "active",
      "image": null,
      "created_at": "2026-10-17T12:12:36+02:00"
    }
  ],
  "pages": []
}

Supprimer un composant

DELETE/v1/components/{id}

Supprime le composant, ses liens et leurs statistiques, et le retire de toutes les pages où il était posé. Irréversible. Portée Suppression.

curl -X DELETE https://api.tinylink.fr/v1/components/C6ad34a13d28745 \
  -H "Authorization: Bearer tl_votre_jeton"

Réponses possibles

Sans contenu

Gérer les liens d'un composant

GET/v1/components/{id}/links

POST/v1/components/{id}/links

PATCH/v1/components/{id}/links

PUT/v1/components/{id}/links/order

GET/v1/components/{id}/links/{lien}

PATCH/v1/components/{id}/links/{lien}

DELETE/v1/components/{id}/links/{lien}

PUT/v1/components/{id}/links/{lien}/image

Mêmes routes, mêmes champs et mêmes réponses que les liens d'une page, en remplaçant /pages/{id} par /components/{id} : ajout (un ou plusieurs), lecture, modification, modification groupée, nouvel ordre, image, suppression. Un composant accepte aussi les blocs d'intégration. Portée selon la méthode.

curl -X POST https://api.tinylink.fr/v1/components/C6ad34a13d28745/links \
  -H "Authorization: Bearer tl_votre_jeton" \
  -H "Content-Type: application/json" \
  -d '{"title":"TikTok","url":"https://tiktok.com/@exemple"}'

Réponses possibles

{
  "id": "L6ad34a13f2dcd",
  "title": "TikTok",
  "description": "",
  "url": "https://tiktok.com/@exemple",
  "type": "url",
  "format": "LIST",
  "size": "FULL",
  "visible": true,
  "archived": false,
  "position": 3,
  "status": "active",
  "image": null,
  "created_at": "2026-10-17T12:12:35+02:00"
}

Lister les composants d'une page

GET/v1/pages/{id}/components

Les composants posés sur la page : pour chacun, son bloc dans la page (block, avec sa position et sa visibilité) et le composant lui-même. Le bloc figure aussi dans GET /v1/pages/{id}/links, avec type: "component" et component_id. Portée Lecture.

curl https://api.tinylink.fr/v1/pages/P6ad34a0e4fef09/components \
  -H "Authorization: Bearer tl_votre_jeton"

Réponses possibles

{
  "data": [
    {
      "block": {
        "id": "L6ad34a140effd",
        "title": "Réseaux sociaux",
        "description": null,
        "url": null,
        "type": "component",
        "format": "COMPONENT",
        "size": "FULL",
        "visible": true,
        "archived": false,
        "position": 1,
        "status": "active",
        "image": null,
        "created_at": "2026-10-17T12:12:36+02:00",
        "component_id": "C6ad34a13d28745"
      },
      "component": {
        "id": "C6ad34a13d28745",
        "name": "Réseaux sociaux",
        "description": "Les mêmes liens sur toutes mes pages",
        "links_count": 3,
        "pages_count": 1,
        "created_at": "2026-10-17T12:12:35+02:00",
        "edit_url": "https://app.tinylink.fr/component-edit?id=C6ad34a13d28745"
      }
    }
  ]
}

Poser un composant sur une page

POST/v1/pages/{id}/components

component_id est obligatoire ; le composant doit être de l'environnement de la page, et n'y être pas déjà. position le place (1 = en haut), sinon il va en bas. La réponse est le bloc créé dans la page ; il se masque, s'archive et se déplace comme un lien. Portée Écriture.

curl -X POST https://api.tinylink.fr/v1/pages/P6ad34a0e4fef09/components \
  -H "Authorization: Bearer tl_votre_jeton" \
  -H "Content-Type: application/json" \
  -d '{"component_id":"C6ad34a13d28745","position":1}'

Réponses possibles

{
  "id": "L6ad34a140effd",
  "title": "Réseaux sociaux",
  "description": null,
  "url": null,
  "type": "component",
  "format": "COMPONENT",
  "size": "FULL",
  "visible": true,
  "archived": false,
  "position": 1,
  "status": "active",
  "image": null,
  "created_at": "2026-10-17T12:12:36+02:00",
  "component_id": "C6ad34a13d28745"
}

Retirer un composant d'une page

DELETE/v1/pages/{id}/components/{composant}

Retire le composant de la page, sans toucher au composant ni à ses liens. Portée Suppression.

curl -X DELETE https://api.tinylink.fr/v1/pages/P6ad34a0e4fef09/components/C6ad34a1406db15 \
  -H "Authorization: Bearer tl_votre_jeton"

Réponses possibles

Sans contenu

Détacher un composant

POST/v1/pages/{id}/components/{composant}/detach

Remplace le composant par une copie de ses liens, à sa place et dans le même ordre (masqués et archivés compris, images dupliquées) : ils deviennent des liens ordinaires de la page, que les modifications du composant ne suivront plus. Le composant n'est pas touché. La réponse est la liste des liens de la page. Portée Écriture.

curl -X POST https://api.tinylink.fr/v1/pages/P6ad34a0e4fef09/components/C6ad34a13d28745/detach \
  -H "Authorization: Bearer tl_votre_jeton"

Réponses possibles

{
  "data": [
    {
      "id": "L6ad34a1426b80",
      "title": "Instagram",
      "description": "",
      "url": "https://instagram.com/exemple",
      "type": "url",
      "format": "LIST",
      "size": "FULL",
      "visible": true,
      "archived": false,
      "position": 1,
      "status": "active",
      "image": null,
      "created_at": "2026-10-17T12:12:36+02:00"
    },
    {
      "id": "L6ad34a1426bd5",
      "title": "YouTube",
      "description": "",
      "url": "https://youtube.com/@exemple",
      "type": "url",
      "format": "LIST",
      "size": "FULL",
      "visible": true,
      "archived": false,
      "position": 2,
      "status": "active",
      "image": null,
      "created_at": "2026-10-17T12:12:36+02:00"
    },
    {
      "id": "L6ad34a1426c29",
      "title": "TikTok",
      "description": "",
      "url": "https://tiktok.com/@exemple",
      "type": "url",
      "format": "LIST",
      "size": "FULL",
      "visible": true,
      "archived": false,
      "position": 3,
      "status": "active",
      "image": null,
      "created_at": "2026-10-17T12:12:36+02:00"
    },
    {
      "id": "L6ad34a0e849a2",
      "title": "Mes réseaux",
      "description": "",
      "url": null,
      "type": "title",
      "format": "TITLE",
      "size": "FULL",
      "visible": true,
      "archived": false,
      "position": 4,
      "status": "active",
      "image": null,
      "created_at": "2026-10-17T12:12:30+02:00"
    },
    {
      "id": "L6ad34a0e84122",
      "title": "Mon site",
      "description": "",
      "url": "https://exemple.fr",
      "type": "url",
      "format": "BANNER",
      "size": "HALF",
      "visible": true,
      "archived": false,
      "position": 5,
      "status": "active",
      "image": null,
      "created_at": "2026-10-17T12:12:30+02:00"
    },
    {
      "id": "L6ad34a0e8467f",
      "title": "Ma boutique",
      "description": "",
      "url": "https://exemple.fr/boutique",
      "type": "url",
      "format": "BANNER",
      "size": "HALF",
      "visible": true,
      "archived": false,
      "position": 6,
      "status": "active",
      "image": null,
      "created_at": "2026-10-17T12:12:30+02:00"
    }
  ]
}

Vous ne trouvez pas votre réponse ?

Écrivez-nous depuis l'onglet Support de votre espace, nous répondons sous 24 h ouvrées.

Contacter le support