API
API server-to-server, isolée par organisation et limitée par scopes. Les clés sont créées dans le backoffice par un administrateur et ne doivent jamais être exposées dans un navigateur.
Créer une clé
Dans le backoffice : Clés API → Créer une clé API. Le secret est affiché une seule fois. Une clé est limitée à l’organisation active de l’administrateur qui la crée ; elle ne change jamais d’organisation.
curl "https://cms-backoffice.onirtech.com/api/v1/fiches?limit=25" \
-H "Authorization: Bearer onir_live_..."Rechercher des fiches
GET /api/v1/fiches
Authorization: Bearer onir_live_...
?q=Antananarivo
&templateKey=partenaires-onir-cms
&createdFrom=2026-01-01T00:00:00.000Z
&createdTo=2026-12-31T23:59:59.999Z
&includeArchived=false
&limit=25
&sort=createdAt:desc
&cursor=...Filtres disponibles :
q: recherche plein texte dans les données de la fiche ;templateKey,templateVersion: modèle de fiche ;createdFrom,createdTo: dates ISO 8601 ;prospectId,conversationId,linkId: UUID ;includeArchived:truepour inclure les fiches archivées ;limit: 1 à 100, défaut 25 ;sort:createdAt:descoucreatedAt:asc;cursor: curseur opaque retourné danspagination.nextCursor.
Lire une fiche
GET /api/v1/fiches/:id
Authorization: Bearer onir_live_...Médias — photothèque et liens
Scopes : medias:read et medias:write. La liste acceptetype=photo|lien, active, chatbotId, q,limit, sort et cursor.
GET /api/v1/medias?type=photo&active=true&chatbotId=...
POST /api/v1/medias
Content-Type: application/json
{ "libelle": "Visuel accueil", "url": "https://...", "actif": true }
POST /api/v1/medias
Content-Type: multipart/form-data
fichier=@image.webp, libelle=Visuel accueil, chatLinkIds=...
PATCH /api/v1/medias/:id
DELETE /api/v1/medias/:idUne photo renvoie aussi fileUrl vers/api/v1/medias/:id/file, à appeler avec la même clé API. Les URL et clés de stockage internes ne sont jamais exposées.
Connaissances
Scopes : connaissances:read et connaissances:write. La liste accepte active, chatbotId, q, limit,sort et cursor.
GET /api/v1/connaissances?chatbotId=...
POST /api/v1/connaissances
{ "titre": "Délais", "contenu": "…", "chatLinkIds": [] }
GET /api/v1/connaissances/:id
PATCH /api/v1/connaissances/:id
DELETE /api/v1/connaissances/:idIsolation et limites
Toutes les requêtes sont automatiquement filtrées par l’organisation de la clé. Un accès à une fiche d’une autre organisation renvoie 404 pour ne pas révéler son existence.
Limite par clé : 60 requêtes/minute et 1 000 requêtes/heure. En cas de dépassement :429 avec Retry-After.
Erreurs
{
"error": {
"code": "invalid_api_key",
"message": "Clé d’API invalide"
}
}Codes possibles : invalid_api_key, insufficient_scope,invalid_request, not_found, rate_limited,internal_error.