Desktop plumbing: queues the uploaded conversations for background import into the caller's case. When search data is sent, it is also saved as a search-tracking record for the extraction code.
POST
/extraction/conversation/bulk-import
curl \
--request POST 'http://api.example.com/extraction/conversation/bulk-import' \
--header "Authorization: Bearer $ACCESS_TOKEN" \
--header "Content-Type: application/json" \
--header "organization: string" \
--data '{
"messageSelectionReport": {
"version": 42.0,
"uploadAttemptId": "string",
"phase": {},
"platformImportAccepted": true,
"coverage": "string",
"eligibleScope": "string",
"conversations": [
{
"app": "message",
"conversationId": 42.0,
"mode": "string",
"selectedMessageCount": 42.0,
"eligibleMessageCount": 42.0,
"includedMessageCount": 42.0,
"omittedEligibleMessageCount": 42.0,
"selectedNotIncludedCount": 42.0,
"totalMessageCount": 42.0
}
]
},
"systemId": "string",
"deviceId": "string",
"deviceType": "unknown",
"dateAppended": "DD_MM_YY_HH_mm_ss",
"organizationId": "string",
"extractionCode": "string",
"case": "string",
"shareEmails": [
"string"
],
"totalSize": 42.0,
"appVersion": "string",
"localBackupPath": "string",
"timezone": "string",
"searchData": [
"string"
],
"messagesAlreadyExists": true,
"isShareAll": true
}'
Request examples
# Headers
organization: string
# Payload
{
"messageSelectionReport": {
"version": 42.0,
"uploadAttemptId": "string",
"phase": {},
"platformImportAccepted": true,
"coverage": "string",
"eligibleScope": "string",
"conversations": [
{
"app": "message",
"conversationId": 42.0,
"mode": "string",
"selectedMessageCount": 42.0,
"eligibleMessageCount": 42.0,
"includedMessageCount": 42.0,
"omittedEligibleMessageCount": 42.0,
"selectedNotIncludedCount": 42.0,
"totalMessageCount": 42.0
}
]
},
"systemId": "string",
"deviceId": "string",
"deviceType": "unknown",
"dateAppended": "DD_MM_YY_HH_mm_ss",
"organizationId": "string",
"extractionCode": "string",
"case": "string",
"shareEmails": [
"string"
],
"totalSize": 42.0,
"appVersion": "string",
"localBackupPath": "string",
"timezone": "string",
"searchData": [
"string"
],
"messagesAlreadyExists": true,
"isShareAll": true
}
Response examples (201)
{
"data": {
"message": "Done",
"isSuccess": true
},
"statusCode": 201,
"timestamp": "2026-01-15T10:15:00.000Z"
}