Aller au contenu principal

Payload de résultat d'une analyse

info

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 :

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​

ChampTypeDescription
analysisIdstring (UUID)Identifiant de l'analyse
feedbackURLstring (URI)URL pour envoyer un feedback / une correction sur cette analyse
rpaActionsobjectActions 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​

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. id identifie ce document, et sources contient l'unique document d'origine dont il a été extrait.
  • type: "merge" : une entrée par document fusionné. id identifie le document fusionné, et sources contient 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 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. Voir Send feedback on an analysis.

attention

Envoyer un feedback remplace la totalité du feedback existant sur l'analyse, qu'il ait été saisi manuellement dans la console ou envoyé précédemment via l'API. Un champ omis dans votre payload n'est pas conservé : il est simplement absent du nouveau feedback stocké.

Si vous ne voulez corriger qu'un sous-ensemble des champs sans perdre les autres, récupérez d'abord le feedback existant de l'analyse et renvoyez-le fusionné avec vos corrections.

CodeDescription
204Feedback enregistré (ou effacé si la payload est vide)
400Requête refusée, le feedback existant est conservé : result absent ou n'est pas un objet JSON, corps JSON invalide, result.analysisId différent de l'analyse de l'URL, ou analyse sans résultat de sortie

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​

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).

CodeDescription
200Contenu du fichier, servi en téléchargement (en-tête Content-Disposition: attachment)
404Analyse introuvable, ou aucun fichier ne correspond à ce fileId pour cette analyse

La référence OpenAPI complète est disponible ici : Download File.