Clustraly
Jetons API, webhooks & API REST

Diffusez vos articles publiés partout avec l'API REST publique en lecture (/api/v1)

API REST publique lecture des articles (/api/v1) une fonctionnalité du module Jetons API, webhooks & API REST de Clustraly. L'API REST publique en lecture (/api/v1) expose vos articles publiés en JSON : liste paginée, détail par slug et filtrage par langue, via jeton Bearer.

Vos articles publiés et publics deviennent une source de données propre et lisible. Deux endpoints REST, une authentification par jeton Bearer, et un périmètre verrouillé côté serveur : vous décidez ce qui est publié, l'API expose exactement cela rien de plus.

Diffusion de contenu

Vos articles publiés, disponibles en JSON à la demande

Récupérez votre contenu éditorial sous forme de données structurées, prêtes à alimenter n'importe quelle interface. GET /api/v1/articles renvoie des résumés paginés de vos articles publiés et à visibilité publique, dans un JSON propre et prévisible.

Aucune extraction manuelle, aucun copier-coller : vos articles existants deviennent immédiatement consommables par un site externe, une application ou un autre canal.

  • Résumés d'articles renvoyés en JSON
  • Réponses paginées, faciles à parcourir
  • Uniquement le contenu publié et public
Deux endpoints

Une liste paginée, un détail complet par slug

Parcourez d'abord la liste avec GET /api/v1/articles, puis chargez la fiche entière avec GET /api/v1/articles/{slug}. Le détail inclut l'auteur, les catégories, les tags et l'image à la une tout ce qu'il faut pour afficher un article complet.

Ce découpage liste puis détail correspond au fonctionnement naturel d'un blog ou d'un fil d'actualité, sans vous obliger à tout charger d'un coup.

  • GET /api/v1/articles pour la liste paginée
  • GET /api/v1/articles/{slug} pour le détail
  • Auteur, catégories, tags et image à la une inclus
Voir les endpoints de lecture
Multilingue

Servez la bonne langue avec le paramètre ?lang

Ajoutez ?lang à votre requête et l'API vous renvoie le contenu dans la locale demandée. La sérialisation applique la locale multilingue, pour que chaque canal reçoive la version linguistique attendue sans logique côté client.

Un même appel, un paramètre de langue : vos intégrations multilingues restent simples et cohérentes.

  • Filtrage par langue via ?lang
  • Locale multilingue appliquée à la sérialisation
  • Même endpoint pour toutes vos langues
Garde-fous

Seul le contenu publié et public sort, jamais vos champs internes

Le périmètre « publié + public » est imposé côté serveur via publishedArticles dans le BaseController : un brouillon ou un article privé ne peut pas fuiter, même par erreur d'appel. La sérialisation s'appuie sur un whitelisting de champs (jamais Model::toArray), qui écarte tout champ interne.

Chaque appel exige un en-tête Authorization: Bearer et le scope content:read. Sans jeton valide, la réponse est un 401 ; avec un scope insuffisant, un 403 insufficient_scope. Vous ouvrez la lecture en gardant le contrôle.

  • Périmètre publié + public verrouillé côté serveur
  • Authentification par jeton Bearer
  • Scope content:read requis
  • Whitelisting de champs, aucune fuite interne
Cas d'usage

Alimentez un site headless, une application ou un autre canal

Utilisez Clustraly comme source de contenu et affichez vos articles où vous voulez : un front-end découplé, une application mobile, une newsletter automatisée ou une place de marché de contenu. La lecture par API fait de votre CMS le point de vérité unique.

Comme l'accès est en lecture seule et cadré par scope, vous exposez votre contenu à des intégrations tierces sans jamais leur donner les clés de l'administration.

  • Site vitrine ou blog en mode headless
  • Application mobile alimentée par vos articles
  • Intégrations tierces en lecture seule
Imaginer votre intégration
Pourquoi ça compte

Vous publiez, l'API expose exactement ce que vous décidez

La lecture par API ne devine rien et n'improvise rien. Elle diffuse ce que vous avez publié et rendu public, dans la langue demandée, en filtrant les champs internes. Vous gardez la main sur ce qui sort, l'intégration reçoit une source de données fiable.

FAQ

Questions fréquentes

Quels articles l'API en lecture renvoie-t-elle ?
Uniquement les articles publiés et à visibilité publique. Ce périmètre est imposé côté serveur via publishedArticles dans le BaseController, donc les brouillons et le contenu non public ne sont jamais exposés, même en cas d'appel direct.
Comment m'authentifier sur /api/v1/articles ?
Chaque requête doit porter un en-tête Authorization: Bearer avec un jeton API actif disposant du scope content:read. Sans jeton valide, l'API répond 401 ; avec un scope insuffisant, elle répond 403 insufficient_scope.
Puis-je récupérer mes articles dans une langue précise ?
Oui. Ajoutez le paramètre ?lang à votre requête : la sérialisation applique la locale multilingue et vous renvoie la version linguistique demandée, aussi bien sur la liste que sur le détail par slug.
L'API peut-elle exposer des champs internes par accident ?
Non. La sérialisation s'appuie sur un whitelisting de champs et n'utilise jamais Model::toArray. Seuls les champs prévus pour la lecture publique sont renvoyés, ce qui écarte toute fuite de données internes.
Prêt à commencer ?

Faites de vos articles publiés une source de données ouverte, sous contrôle

L'API REST publique en lecture (/api/v1) transforme votre contenu éditorial en JSON propre et consommable : liste paginée, détail complet par slug, filtre par langue. Le tout cadré par un jeton Bearer, le scope content:read et un périmètre publié + public verrouillé côté serveur. Ouvrez la lecture à vos intégrations, sans jamais céder le contrôle de ce que vous publiez.