Payload de résultat d'une analyse
Golem.ai devient Miralia.ai !
L'API est désormais disponible sur le domaine api.console.miralia.ai au lieu de api.console.golem.ai,
mais vous pouvez continuer à utiliser le domaine api.console.golem.ai pour les requêtes API.
Le décomissionnement de l'URL historique api.console.golem.ai est planifié pour Décembre 2026.
Introduction
Quand une analyse est terminée, Miralia.ai vous envoie un payload JSON :
- dans le corps de la requête webhook (recommandé) ;
- ou sous la clé
resultdeGET /analyses/{analysisId}/result.
Ce guide décrit tous les champs que ce payload peut contenir. La présence des champs optionnels dépend de la configuration de votre environnement (réglée avec les équipes Miralia.ai). Si un champ documenté ici est absent de votre payload, il est généralement désactivé dans la configuration de sortie (Output).
La référence OpenAPI complète est disponible ici :
result.
Exemple complet
Exemple d'une analyse terminée avec la plupart des champs activés. Chez vous, certains champs optionnels peuvent être absents selon la configuration de l'environnement.
Réponse HTTP (GET /analyses/{analysisId}/result)
{
"status": "FINISHED",
"result": {
"analysisId": "25e625ab-7d91-1234-8a4b-09f52c07ecb9",
"filename": "mail-0123456.eml",
"feedbackURL": "https://api.console.miralia.ai/analyses/25e625ab-7d91-1234-8a4b-09f52c07ecb9/feedback",
"rpaActions": {
"UploadDocuments": ["UploadBody", "UploadAttachments"]
},
"metadata": {
"inbox": "support@example.com",
"ticket_id": "123456"
},
"categories": ["Convocation"],
"attachmentsCategories": {
"file.txt": ["Autre"],
"factures_groupees | pages=[1-2].pdf": ["Facture"],
"factures_groupees | pages=[3-4].pdf": ["Facture"],
"CNI.pdf": ["CNI"],
"CNI Recto.png": ["CNI recto"],
"CNI Verso.png": ["CNI verso"]
},
"extractedData": {
"message": {
"date_rdv": { "jour": "24", "mois": "05", "annee": "2025" },
"heure_rdv": { "heure": "15", "minute": "00" },
"reference": "6754679"
},
"attachments": {
"factures_groupees | pages=[1-2].pdf": { "amount": "120.00" },
"factures_groupees | pages=[3-4].pdf": { "amount": "95.50" }
}
},
"fileOperations": [
{
"type": "merge",
"id": "6f1a2ef4-2ac8-4b6b-9a4e-3e7c9f1b2b31",
"filename": "CNI.pdf",
"sources": [
{ "id": "1c9a2f52-1a3f-4e3a-8b9d-6b6a8b6a8b6a", "filename": "CNI Recto.png" },
{ "id": "2d0b3f63-2b4f-5f4b-9c0e-7c7b9c7b9c7b", "filename": "CNI Verso.png" }
]
},
{
"type": "split",
"id": "3e1c4f74-3c5f-6a5c-ad1f-8d8c0d8c0d8c",
"filename": "factures_groupees | pages=[1-2].pdf",
"sources": [
{ "id": "9f8e7d6c-5b4a-3928-4938-0f0e0d0c0b0a", "filename": "factures_groupees.pdf" }
]
},
{
"type": "split",
"id": "4f2d5f85-4d6f-7b6d-be2f-9e9d1e9d1e9d",
"filename": "factures_groupees | pages=[3-4].pdf",
"sources": [
{ "id": "9f8e7d6c-5b4a-3928-4938-0f0e0d0c0b0a", "filename": "factures_groupees.pdf" }
]
}
],
"messageHeader": {
"From": "patient@example.com",
"To": "support@example.com",
"Subject": "Confirmation de rendez-vous",
"Date": "Mon, 20 Jul 2026 10:00:00 +0000"
},
"messageHTMLBodies": [
"<!DOCTYPE html><html><body><p>Bonjour, je confirme mon rendez-vous.</p></body></html>"
],
"attachments": [
{ "name": "factures_groupees.pdf", "data": "JVBERi0xLjQKJc..." },
{ "name": "factures_groupees | pages=[1-2].pdf", "data": "JVBERi0xLjQKJc..." },
{ "name": "factures_groupees | pages=[3-4].pdf", "data": "JVBERi0xLjQKJc..." },
{ "name": "CNI Recto.png", "data": "iVBORw0KGgoAAAANSUhEUg..." },
{ "name": "CNI Verso.png", "data": "iVBORw0KGgoAAAANSUhEUg..." }
],
"replyTemplate": "Bonjour,\n\nNous confirmons votre rendez-vous du 24/05/2025 à 15h00.\n\nCordialement"
}
}
Corps du webhook
Le webhook envoie directement l'objet contenu dans result (sans l'enveloppe status) :
{
"analysisId": "25e625ab-7d91-1234-8a4b-09f52c07ecb9",
"filename": "mail-0123456.eml",
"feedbackURL": "https://api.console.miralia.ai/analyses/25e625ab-7d91-1234-8a4b-09f52c07ecb9/feedback",
"rpaActions": {
"UploadDocuments": ["UploadBody", "UploadAttachments"]
},
"metadata": {
"inbox": "support@example.com",
"ticket_id": "123456"
},
"categories": ["Convocation"],
"attachmentsCategories": {
"file.txt": ["Autre"],
"factures_groupees | pages=[1-2].pdf": ["Facture"],
"factures_groupees | pages=[3-4].pdf": ["Facture"],
"CNI.pdf": ["CNI"],
"CNI Recto.png": ["CNI recto"],
"CNI Verso.png": ["CNI verso"]
},
"extractedData": {
"message": {
"date_rdv": { "jour": "24", "mois": "05", "annee": "2025" },
"heure_rdv": { "heure": "15", "minute": "00" },
"reference": "6754679"
},
"attachments": {
"factures_groupees | pages=[1-2].pdf": { "amount": "120.00" },
"factures_groupees | pages=[3-4].pdf": { "amount": "95.50" }
}
},
"fileOperations": [
{
"type": "merge",
"id": "6f1a2ef4-2ac8-4b6b-9a4e-3e7c9f1b2b31",
"filename": "CNI.pdf",
"sources": [
{ "id": "1c9a2f52-1a3f-4e3a-8b9d-6b6a8b6a8b6a", "filename": "CNI Recto.png" },
{ "id": "2d0b3f63-2b4f-5f4b-9c0e-7c7b9c7b9c7b", "filename": "CNI Verso.png" }
]
},
{
"type": "split",
"id": "3e1c4f74-3c5f-6a5c-ad1f-8d8c0d8c0d8c",
"filename": "factures_groupees | pages=[1-2].pdf",
"sources": [
{ "id": "9f8e7d6c-5b4a-3928-4938-0f0e0d0c0b0a", "filename": "factures_groupees.pdf" }
]
},
{
"type": "split",
"id": "4f2d5f85-4d6f-7b6d-be2f-9e9d1e9d1e9d",
"filename": "factures_groupees | pages=[3-4].pdf",
"sources": [
{ "id": "9f8e7d6c-5b4a-3928-4938-0f0e0d0c0b0a", "filename": "factures_groupees.pdf" }
]
}
]
}
Champs toujours présents
| Champ | Type | Description |
|---|---|---|
analysisId | string (UUID) | Identifiant de l'analyse |
feedbackURL | string (URI) | URL pour envoyer un feedback / une correction sur cette analyse |
rpaActions | object | Actions RPA déclenchées, groupées par moteur. Peut être {} |
rpaActions
{
"MonMoteurConsolidation": ["UploadBody", "UploadAttachments"]
}
Forme : { "<nomDuMoteur>": ["<nomAction>", ...] }.
Champs optionnels
filename
Nom du fichier / email principal analysé.
"filename": "mail-0123456.eml"
metadata
Métadonnées associées à l'analyse (celles envoyées à la création, éventuellement enrichies).
Objet plat : clés → scalaires (string, number, boolean, ou null). Pas d'objets / tableaux imbriqués.
"metadata": {
"inbox": "support@example.com",
"ticket_id": "123456"
}
categories
Catégories détectées sur le corps du message. Souvent vide ou un seul élément.
"categories": ["Convocation"]
attachmentsCategories
Catégories par nom de pièce jointe.
"attachmentsCategories": {
"file.txt": ["Autre"],
"image.jpg": ["Facture"]
}
extractedData
Données structurées extraites. Les clés exactes dépendent de votre configuration d'extraction. Forme courante :
"extractedData": {
"message": {
"reference": "6754679",
"date_rdv": { "jour": "24", "mois": "05", "annee": "2025" }
},
"attachments": {
"invoice.pdf": { "amount": "120.00" }
}
}
messageHTMLBodies
Corps HTML du message (si activé).
"messageHTMLBodies": ["<!DOCTYPE html><html>...</html>"]
messageHeader
En-têtes email (si activés). Clés fréquentes : From, To, Cc, Bcc, Subject, Date
(RFC 2822), Message-ID, In-Reply-To. D'autres en-têtes source peuvent apparaître.
"messageHeader": {
"From": "sender@example.com",
"To": "recipient@example.com",
"Subject": "Confirmation de rendez-vous",
"Date": "Mon, 20 Jul 2026 10:00:00 +0000"
}
attachments
Pièces jointes (si activé). Dans les webhooks, chaque entrée contient généralement name et
data (contenu en base64).
"attachments": [
{
"name": "invoice.pdf",
"data": "JVBERi0xLjQKJc..."
}
]
fileOperations
🚧 Bientôt disponible — ce champ n'est pas encore disponible.
Object décrivant comment les documents déliassés ou fusionnés pendant le traitement de l'analyse se rattachent à ce qui a été reçu à l'origine. Absent ou vide si aucun découpage ni fusion n'a eu lieu.
type: "split": une entrée par document résultant.ididentifie ce document, etsourcescontient l'unique document d'origine dont il a été extrait.type: "merge": une entrée par document fusionné.ididentifie le document fusionné, etsourcescontient les deux (ou plus) documents d'origine qui ont été combinés.
L'id de n'importe quelle entrée, ainsi que celui de n'importe laquelle de ses sources, peut être
utilisé comme fileId dans
GET /analyses/{analysisId}/files/{fileId}/download
(également bientôt disponible) pour télécharger le contenu brut de ce document.
"fileOperations": [
{
"type": "merge",
"id": "6f1a2ef4-2ac8-4b6b-9a4e-3e7c9f1b2b31",
"filename": "CNI.pdf",
"sources": [
{ "id": "1c9a2f52-1a3f-4e3a-8b9d-6b6a8b6a8b6a", "filename": "CNI Recto.png" },
{ "id": "2d0b3f63-2b4f-5f4b-9c0e-7c7b9c7b9c7b", "filename": "CNI Verso.png" }
]
},
{
"type": "split",
"id": "3e1c4f74-3c5f-6a5c-ad1f-8d8c0d8c0d8c",
"filename": "factures_groupees.pdf | pages=[1-2].pdf",
"sources": [
{ "id": "9f8e7d6c-5b4a-3928-4938-0f0e0d0c0b0a", "filename": "factures_groupees.pdf" }
]
},
{
"type": "split",
"id": "4f2d5f85-4d6f-7b6d-be2f-9e9d1e9d1e9d",
"filename": "factures_groupees.pdf | pages=[3-4].pdf",
"sources": [
{ "id": "9f8e7d6c-5b4a-3928-4938-0f0e0d0c0b0a", "filename": "factures_groupees.pdf" }
]
}
]
replyTemplate
Brouillon de réponse généré (si la génération de réponse est activée).
"replyTemplate": "Bonjour,\n\nNous confirmons votre rendez-vous..."
Sortie NLU
Si la sortie NLU est activée, le payload contient l'un des deux formats suivants (jamais les deux).
Format actuel (results)
"results": {
"...": "structure dépendante de votre configuration NLU"
}
Format historique (interactions / labels / usedLanguage)
{
"interactions": [
{
"idInteraction": "...",
"idContext": "...",
"parameters": [{ "name": "reference", "value": "6754679" }],
"parametersDetail": {},
"incomplete": false,
"postProcessors": {}
}
],
"labels": [
{
"type": "...",
"expression": "...",
"archetype": "...",
"used_parameter": "...",
"interaction_id": "...",
"call_idx": 0
}
],
"usedLanguage": "fr"
}
Envoyer un feedback
Utilisez feedbackURL pour corriger le résultat. Seuls certains champs peuvent être corrigés :
categories, attachmentsCategories, extractedData, et rpaActions. N'envoyez que les champs
que vous souhaitez corriger ; les champs omis restent inchangés. Voir
Send feedback on an analysis.
rpaActions
Contrairement au payload de résultat (qui liste les actions déclenchées), le feedback est indexé directement par nom d'action. Pour chaque action, le feedback attend deux évaluations booléennes indépendantes :
rpa_action_configurations: l'action aurait-elle dû se déclencher ?rpa_action_executions: si elle s'est déclenchée, a-t-elle été exécutée correctement ?
Les deux clés sont optionnelles et indépendantes ; n'envoyez que celles que vous souhaitez qualifier.
{
"result": {
"rpaActions": {
"UploadBody": {
"rpa_action_configurations": true,
"rpa_action_executions": true
},
"UploadAttachments": {
"rpa_action_configurations": true,
"rpa_action_executions": false
}
}
}
}
Forme : { "<nomAction>": { "rpa_action_configurations"?: boolean, "rpa_action_executions"?: boolean } }.
Télécharger un fichier
🚧 Bientôt disponible — cet endpoint n'est pas encore disponible.
Télécharger le contenu brut d'un document directement :
GET /analyses/{analysisId}/files/{fileId}/download
fileId accepte n'importe quel identifiant de document trouvé dans fileOperations :
aussi bien l'id d'une entrée (le document résultant d'un déliassage ou d'une fusion) que l'id
de n'importe laquelle de ses sources (le ou les documents d'origine dont il provient).
| Code | Description |
|---|---|
200 | Contenu du fichier, servi en téléchargement (en-tête Content-Disposition: attachment) |
404 | Analyse introuvable, ou aucun fichier ne correspond à ce fileId pour cette analyse |
La référence OpenAPI complète est disponible ici :
Download File.