Référence
API de contenu
Votre front peut lui aussi lire l’historique. Il peut afficher une version passée, ou montrer ce qui a changé entre deux versions sur une page publique « modifications ». L’API est en lecture seule et fermée par défaut.
1. L’ouvrir pour un type de contenu
- Allez dans Réglages → Types de contenu.
- Sur la ligne du type de contenu, choisissez API de contenu : Versions publiées ou Toutes les versions enregistrées.
- Enregistrez.
| Mode | Ce que l’API renvoie |
|---|---|
| Fermée | Rien. Le type de contenu répond comme s’il n’existait pas (404). |
| Versions publiées | Les versions qui ont été publiées. Un type de contenu sans brouillon ni publication est en ligne à chaque enregistrement : là, ce sont donc toutes les versions enregistrées. |
| Toutes les versions enregistrées | Toutes les versions enregistrées, brouillons compris. |
Quel que soit le mode, l’API ne renvoie jamais les auto-sauvegardes (travail en cours) ni les instantanés de la corbeille.
2. Créer un jeton
Dans Réglages → Jetons d’API, créez un jeton Personnalisé. Sous Revisionary → versions, cochez les actions utiles : list, get, compare. Vous pouvez aussi accorder ces actions à un rôle du plugin Users & Permissions.
3. L’appeler
| Requête | Renvoie |
|---|---|
GET /api/revisionary/versions?contentType=articles&documentId=…&locale=fr | Les versions d’une entrée, de la plus récente à la plus ancienne. Utilisez page et pageSize (100 au plus) pour paginer. |
GET /api/revisionary/versions/:id | Une version au même format qu’un document REST. Les médias et les relations sont peuplés, et les composants et zones dynamiques sont inclus. |
GET /api/revisionary/compare?from=:id&to=:id | Les champs modifiés entre deux versions de la même entrée. Les champs texte incluent les différences mot à mot. |
Pour contentType, vous pouvez passer l’uid (api::article.article), le nom au singulier ou le nom au pluriel.
curl -H "Authorization: Bearer $REVISIONARY_API_TOKEN" \
"https://cms.example.com/api/revisionary/versions?contentType=articles&documentId=x8k2m4p1&locale=fr"{
"data": [
{
"id": 412,
"label": "v7",
"name": "Validé par le juridique",
"state": "published",
"locale": "fr",
"title": "Guide ISO 9001",
"createdAt": "2026-10-01T10:00:00.000Z",
"changes": { "added": 0, "modified": 2, "removed": 0, "fields": ["title", "body"] }
}
],
"meta": { "contentType": "api::article.article", "documentId": "x8k2m4p1", "locale": "fr",
"pagination": { "page": 1, "pageSize": 25, "pageCount": 1, "total": 1 } }
}Dans un composant serveur Next.js, le jeton reste côté serveur :
const res = await fetch(
process.env.STRAPI_URL + '/api/revisionary/compare?from=' + from + '&to=' + to,
{ headers: { Authorization: 'Bearer ' + process.env.REVISIONARY_API_TOKEN }, cache: 'no-store' },
);
const { data } = await res.json();
// data.changes : [{ field, type, change: 'added' | 'modified' | 'removed', before, after, text? }]
// text : [{ op: 'equal' | 'insert' | 'delete', text }] — affichez les ajouts en vert et les suppressions barrées.Ce que l’API ne renvoie jamais
- Les champs privés, les mots de passe et les champs exclus du versionnage.
- L’auteur d’une modification, son adresse IP et les notes internes. Une version dit seulement ce qui a changé.
- Le contenu lié que le jeton ne peut pas lire. Le filtre de sortie de Strapi s’applique à chaque réponse.
Cette page vous a-t-elle aidé ?
Mis à jour le 1 novembre 2026