curl --request POST \
--url https://api.gominerva.com/v1/sendAPIResultToUser \
--header 'Content-Type: application/json' \
--header 'x-api-key: <api-key>' \
--data '
{
"investigationName": "My New Investigation",
"jobId": "previous-api-call-job-id",
"requestId": "previous-api-call-request-id",
"userEmail": "user@myorganization.com"
}
'import requests
url = "https://api.gominerva.com/v1/sendAPIResultToUser"
payload = {
"investigationName": "My New Investigation",
"jobId": "previous-api-call-job-id",
"requestId": "previous-api-call-request-id",
"userEmail": "user@myorganization.com"
}
headers = {
"x-api-key": "<api-key>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {'x-api-key': '<api-key>', 'Content-Type': 'application/json'},
body: JSON.stringify({
investigationName: 'My New Investigation',
jobId: 'previous-api-call-job-id',
requestId: 'previous-api-call-request-id',
userEmail: 'user@myorganization.com'
})
};
fetch('https://api.gominerva.com/v1/sendAPIResultToUser', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.gominerva.com/v1/sendAPIResultToUser",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'investigationName' => 'My New Investigation',
'jobId' => 'previous-api-call-job-id',
'requestId' => 'previous-api-call-request-id',
'userEmail' => 'user@myorganization.com'
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json",
"x-api-key: <api-key>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.gominerva.com/v1/sendAPIResultToUser"
payload := strings.NewReader("{\n \"investigationName\": \"My New Investigation\",\n \"jobId\": \"previous-api-call-job-id\",\n \"requestId\": \"previous-api-call-request-id\",\n \"userEmail\": \"user@myorganization.com\"\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("x-api-key", "<api-key>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://api.gominerva.com/v1/sendAPIResultToUser")
.header("x-api-key", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"investigationName\": \"My New Investigation\",\n \"jobId\": \"previous-api-call-job-id\",\n \"requestId\": \"previous-api-call-request-id\",\n \"userEmail\": \"user@myorganization.com\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.gominerva.com/v1/sendAPIResultToUser")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["x-api-key"] = '<api-key>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"investigationName\": \"My New Investigation\",\n \"jobId\": \"previous-api-call-job-id\",\n \"requestId\": \"previous-api-call-request-id\",\n \"userEmail\": \"user@myorganization.com\"\n}"
response = http.request(request)
puts response.read_body{
"investigationId": "unique-id-of-the-investigation",
"status": 200,
"message": "API result successfully cloned into user investigation.",
"code": "success"
}{
"status": 400,
"message": "Empty or invalid body"
}{
"status": 403,
"message": "Missing x-api-key header."
}{
"status": 404,
"message": "User not found in the same organization"
}{
"status": 500,
"message": "Internal server error occurred while processing the request"
}Send an API result to a user
Send a completed API result to a named user’s investigation bin in the Minerva user interface for manual review. Use this endpoint when your onboarding flow includes a manual review step, or when you want a specific API result inspected more closely.
Assign results after the search completes, using the Search and Search Status APIs. The Search Status API response body contains the job and request IDs this endpoint needs.
The user’s email address in Minerva identifies the recipient. The recipient must be in the same organization as the API key that submitted the search. If the investigation does not exist, Minerva creates it as a bin in that user’s account to hold the API result.
curl --request POST \
--url https://api.gominerva.com/v1/sendAPIResultToUser \
--header 'Content-Type: application/json' \
--header 'x-api-key: <api-key>' \
--data '
{
"investigationName": "My New Investigation",
"jobId": "previous-api-call-job-id",
"requestId": "previous-api-call-request-id",
"userEmail": "user@myorganization.com"
}
'import requests
url = "https://api.gominerva.com/v1/sendAPIResultToUser"
payload = {
"investigationName": "My New Investigation",
"jobId": "previous-api-call-job-id",
"requestId": "previous-api-call-request-id",
"userEmail": "user@myorganization.com"
}
headers = {
"x-api-key": "<api-key>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {'x-api-key': '<api-key>', 'Content-Type': 'application/json'},
body: JSON.stringify({
investigationName: 'My New Investigation',
jobId: 'previous-api-call-job-id',
requestId: 'previous-api-call-request-id',
userEmail: 'user@myorganization.com'
})
};
fetch('https://api.gominerva.com/v1/sendAPIResultToUser', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.gominerva.com/v1/sendAPIResultToUser",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'investigationName' => 'My New Investigation',
'jobId' => 'previous-api-call-job-id',
'requestId' => 'previous-api-call-request-id',
'userEmail' => 'user@myorganization.com'
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json",
"x-api-key: <api-key>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.gominerva.com/v1/sendAPIResultToUser"
payload := strings.NewReader("{\n \"investigationName\": \"My New Investigation\",\n \"jobId\": \"previous-api-call-job-id\",\n \"requestId\": \"previous-api-call-request-id\",\n \"userEmail\": \"user@myorganization.com\"\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("x-api-key", "<api-key>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://api.gominerva.com/v1/sendAPIResultToUser")
.header("x-api-key", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"investigationName\": \"My New Investigation\",\n \"jobId\": \"previous-api-call-job-id\",\n \"requestId\": \"previous-api-call-request-id\",\n \"userEmail\": \"user@myorganization.com\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.gominerva.com/v1/sendAPIResultToUser")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["x-api-key"] = '<api-key>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"investigationName\": \"My New Investigation\",\n \"jobId\": \"previous-api-call-job-id\",\n \"requestId\": \"previous-api-call-request-id\",\n \"userEmail\": \"user@myorganization.com\"\n}"
response = http.request(request)
puts response.read_body{
"investigationId": "unique-id-of-the-investigation",
"status": 200,
"message": "API result successfully cloned into user investigation.",
"code": "success"
}{
"status": 400,
"message": "Empty or invalid body"
}{
"status": 403,
"message": "Missing x-api-key header."
}{
"status": 404,
"message": "User not found in the same organization"
}{
"status": 500,
"message": "Internal server error occurred while processing the request"
}Authorizations
The Minerva API key used for this integration. Manage API keys in the Minerva dashboard under Administration > Developers.
Body
The unique ID of the job the result ran under. This is the same ID used to query the API result through the Search Status API, and it also appears in the Search Status API response body.
36"job-id-of-api-result"
The unique ID of the request the result ran under. Each result in a Search Status API batch carries an id that uniquely identifies that result within the job.
36"request-id-of-api-result"
If an earlier call to /sendAPIResultToUser created an investigation, provide its investigationId to assign the result to it. Provide either investigationName or investigationId.
36"existing-investigation-id"
The plain text label of the investigation this result belongs under. If the label does not exist in the user's investigation list, Minerva creates it; otherwise the investigation matching the label receives the result. The investigation date matches the date the API result was generated. Use a label that is easy for the receiving investigator to identify, such as a date or specific batch metadata.
1024"My Investigation Name"
The email address of the user who should receive the API result in one of their investigation bins. If omitted, the result is assigned to the requesting user.
256"user@myorganization.com"
Response
API result successfully cloned into user investigation.