curl --request POST \
--url https://api.gominerva.com/v1/reports \
--header 'Content-Type: application/json' \
--header 'x-api-key: <api-key>' \
--data '
{
"searchResultId": "69ba0ba92908cb3209647d38_0",
"index": 0
}
'import requests
url = "https://api.gominerva.com/v1/reports"
payload = {
"searchResultId": "69ba0ba92908cb3209647d38_0",
"index": 0
}
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({searchResultId: '69ba0ba92908cb3209647d38_0', index: 0})
};
fetch('https://api.gominerva.com/v1/reports', 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/reports",
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([
'searchResultId' => '69ba0ba92908cb3209647d38_0',
'index' => 0
]),
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/reports"
payload := strings.NewReader("{\n \"searchResultId\": \"69ba0ba92908cb3209647d38_0\",\n \"index\": 0\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/reports")
.header("x-api-key", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"searchResultId\": \"69ba0ba92908cb3209647d38_0\",\n \"index\": 0\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.gominerva.com/v1/reports")
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 \"searchResultId\": \"69ba0ba92908cb3209647d38_0\",\n \"index\": 0\n}"
response = http.request(request)
puts response.read_body{
"status": 200,
"response": "Reports generated",
"reports": [
"https://storage.googleapis.com/minervaaisite.appspot.com/B3RFqISn7JN4OSJhie3uF76hUJB3/reports/1628784142759691_57.pdf?GoogleAccessId=firebase-adminsdk-2bfq5%40minervaaisite.iam.gserviceaccount.com&Expires=16468358400&Signature=aamxM%2FRC%2FloClKkzB1tQ6leYyVvQfEIKBslNkFvYjRf7odVGwltVCZEAjvJolB%2BNYGI1M%2BTn4RrAZh5lMBh5TuJnzK9Kn76uGrIBwaOwZJB2G49r%2F%2F%2FEh%2BBBRauYpY4ngAKBJV%2FLJTjQ38RJtiJtJJHSyO%2F2LdpQGzpC10fr1BpjEk6geDAe%2BC1sUaWCwkb3CUP%2FUB6eyV%2Fv3ZaxSMDLQiPAkPa8Zm0p618U4L%2FijpUpefsrGovPT61YC1iqAtypmnrWXKf1npm65%2BTR%2FsofzIpeBUIfVEp5MH3sidhA5gLRyqSqRqQwn0AcGID95vPGBk6kklmdnINu7RGsd7mkmQ%3D%3D"
]
}{
"status": 400,
"message": "The result IDs in the request do not exist"
}{
"status": 403,
"message": "The API key was invalid"
}{
"status": 500,
"message": "Internal server error"
}Generate PDF Report
Generate PDF reports as evidence that screening in Minerva was completed. The recommended workflow is to pass a single searchResultId from a previous POST /v1/search-sync response or from a batch result returned by POST /v1/searchStatus or GET /v1/search/{jobid}. For batch results, use the entity-scoped searchId value returned in each result row, such as <requestId>_0. Legacy results and id payloads are still supported for older integrations.
curl --request POST \
--url https://api.gominerva.com/v1/reports \
--header 'Content-Type: application/json' \
--header 'x-api-key: <api-key>' \
--data '
{
"searchResultId": "69ba0ba92908cb3209647d38_0",
"index": 0
}
'import requests
url = "https://api.gominerva.com/v1/reports"
payload = {
"searchResultId": "69ba0ba92908cb3209647d38_0",
"index": 0
}
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({searchResultId: '69ba0ba92908cb3209647d38_0', index: 0})
};
fetch('https://api.gominerva.com/v1/reports', 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/reports",
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([
'searchResultId' => '69ba0ba92908cb3209647d38_0',
'index' => 0
]),
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/reports"
payload := strings.NewReader("{\n \"searchResultId\": \"69ba0ba92908cb3209647d38_0\",\n \"index\": 0\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/reports")
.header("x-api-key", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"searchResultId\": \"69ba0ba92908cb3209647d38_0\",\n \"index\": 0\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.gominerva.com/v1/reports")
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 \"searchResultId\": \"69ba0ba92908cb3209647d38_0\",\n \"index\": 0\n}"
response = http.request(request)
puts response.read_body{
"status": 200,
"response": "Reports generated",
"reports": [
"https://storage.googleapis.com/minervaaisite.appspot.com/B3RFqISn7JN4OSJhie3uF76hUJB3/reports/1628784142759691_57.pdf?GoogleAccessId=firebase-adminsdk-2bfq5%40minervaaisite.iam.gserviceaccount.com&Expires=16468358400&Signature=aamxM%2FRC%2FloClKkzB1tQ6leYyVvQfEIKBslNkFvYjRf7odVGwltVCZEAjvJolB%2BNYGI1M%2BTn4RrAZh5lMBh5TuJnzK9Kn76uGrIBwaOwZJB2G49r%2F%2F%2FEh%2BBBRauYpY4ngAKBJV%2FLJTjQ38RJtiJtJJHSyO%2F2LdpQGzpC10fr1BpjEk6geDAe%2BC1sUaWCwkb3CUP%2FUB6eyV%2Fv3ZaxSMDLQiPAkPa8Zm0p618U4L%2FijpUpefsrGovPT61YC1iqAtypmnrWXKf1npm65%2BTR%2FsofzIpeBUIfVEp5MH3sidhA5gLRyqSqRqQwn0AcGID95vPGBk6kklmdnINu7RGsd7mkmQ%3D%3D"
]
}{
"status": 400,
"message": "The result IDs in the request do not exist"
}{
"status": 403,
"message": "The API key was invalid"
}{
"status": 500,
"message": "Internal server error"
}Authorizations
The Minerva API key used for this integration. Manage API keys in the Minerva dashboard under Administration > Developers.
Body
- Option 1
- Option 2
- Option 3
Recommended. Pass the searchId returned by POST /v1/search-sync, or a result-level searchId returned by POST /v1/searchStatus or GET /v1/search/{jobid}. A plain 24-character request id is treated as the first entity in that request; entity-scoped batch ids use the <requestId>_<entityIndex> format.
"69ba0b732908cb3209647d36"
Legacy bulk input. Provide one or more result IDs from POST /v1/searchStatus or GET /v1/search/{jobid} to generate multiple reports in a single request.
[
"69ba0ba92908cb3209647d38_0",
"69ba0ba92908cb3209647d38_1"
]
Potential match index to include in the PDF. Defaults to 0 when omitted. When using the recommended searchResultId flow, pass a single integer. Legacy bulk requests may also pass an array aligned with results.
0
Legacy job ID fallback from the original POST /v1/search submission. If you omit searchResultId, Minerva can still resolve the matching request from this job ID.
"25e15c07-1322-4364-a26e-2a6ef25c81d4"
Response
Reports generated successfully. Returns links to the generated PDFs in cloud storage.
200
"Reports generated"
Array of URLs to the generated PDF reports in cloud storage
[
"https://storage.googleapis.com/minervaaisite.appspot.com/B3RFqISn7JN4OSJhie3uF76hUJB3/reports/1628784142759691_57.pdf?GoogleAccessId=firebase-adminsdk-2bfq5%40minervaaisite.iam.gserviceaccount.com&Expires=16468358400&Signature=aamxM%2FRC%2FloClKkzB1tQ6leYyVvQfEIKBslNkFvYjRf7odVGwltVCZEAjvJolB%2BNYGI1M%2BTn4RrAZh5lMBh5TuJnzK9Kn76uGrIBwaOwZJB2G49r%2F%2F%2FEh%2BBBRauYpY4ngAKBJV%2FLJTjQ38RJtiJtJJHSyO%2F2LdpQGzpC10fr1BpjEk6geDAe%2BC1sUaWCwkb3CUP%2FUB6eyV%2Fv3ZaxSMDLQiPAkPa8Zm0p618U4L%2FijpUpefsrGovPT61YC1iqAtypmnrWXKf1npm65%2BTR%2FsofzIpeBUIfVEp5MH3sidhA5gLRyqSqRqQwn0AcGID95vPGBk6kklmdnINu7RGsd7mkmQ%3D%3D"
]