Skip to main content
The Minerva API lets financial institutions and other regulated organizations automate parts of their anti-money laundering (AML) compliance workflows. It uses deep learning models to consolidate information from more than 250,000 global sources, covering nearly 1 billion individuals and entities and over 4.5 billion data points, and returns structured results for screening, investigations, onboarding, and regulatory reporting.
⚠️ URL Migration Notice: Legacy *.minervaai.io URLs are deprecated. Use the *.gominerva.com URLs shown throughout this API reference for all new integrations.

Getting access

API access is managed from the Minerva dashboard:
  • Create and manage API keys under Administration > Developers. That page requires the Developer role or above. See API Keys for the full walkthrough, and the SAML SSO and SCIM Guide for how roles are assigned.
  • Create separate live and dev applications so each integration has its own key lifecycle, usage history, and owner context.
  • Contact support@gominerva.com for additional access or integration requests.
  • Application API keys are not scoped by per-key RBAC permissions. Any application key carries the full API access of the tenant and workspace context it was created in, so isolate integrations by creating separate applications rather than by narrowing a key.
  • Hosted MCP credentials are the exception: personal access tokens and agent authorizations issued for the Minerva MCP server do carry an explicit per-token scope list. Those scopes apply to the MCP endpoints only and never widen or narrow an application API key.

Authentication

Minerva accepts three credential formats. Which one applies depends on the surface you are calling.

What the API covers

The API covers three areas: profile management, identity verification, and real-time risk assessment. Most integrations use more than one.

Profile management and monitoring

  • Screen and register a customer in a single step during onboarding.
  • Keep customer profiles current and synchronize data between your systems and Minerva.
  • Monitor profiles for changes in risk status or new matches.
  • Use the API and webhooks to drive investigation workflows and review queues, and to keep internal systems in sync. Configure webhook destinations from the Developers page (API Keys).

Identity verification

Create identity verification (IDV) sessions for your customers: your backend starts the session and delivers the verification flow, and the outcome lands on the customer’s profile and in webhooks. The IDV Integration Guide walks through the full flow, from profile creation to review outcomes.

Real-time risk assessment

Minerva screens individuals and entities against global watchlists (sanctions, PEPs, criminal and terror lists) and adverse media mentions, and enriches each result with supporting evidence and confidence scoring. The Data Feeds page lists the feeds you can request.
  • Real-time screening: screen one profile synchronously and read the result from the response.
  • Batch screening: submit large batches of profiles for parallel asynchronous processing, which supports high-volume operations.
  • Reports: generate audit-ready summaries of search results and profile data for documentation, audits, and compliance or regulatory filings.

Reading a screening response

Each object in a search response’s results[] array is a ranked potential match. It is evidence for review, not a confirmed identity match or an automatic compliance conclusion. Answer three separate questions when you map the response into a compliance workflow:
A match score is not the probability that a subject is sanctioned, politically exposed, or risky. For example, score: 0.92 means the candidate matched the submitted identity criteria strongly; it does not mean “92% sanctioned.”
Field-level and alias-level scores describe the one value they sit on. Each name in aliases[] carries its own match_score and criteria_match_level for that alias alone, so scores in one array normally differ, and a record can hold one exact alias beside several that score none. The closest-matching alias carries matched_query: true when it also scored above the candidate’s primary name, which marks the one name that matched the search best. An alias that scores above the primary name but below another alias does not carry it. Read overall match strength from score and match_score_info.

High-level sanctions example

The following abbreviated example shows the fields an integration normally uses first. The values are illustrative.
In this example:
  1. checklist.screen.Sanctions: true is the direct risk indicator.
  2. score: 0.94 says the candidate is a strong overall criteria match.
  3. checklist.hits.Sanctions identifies the list that triggered the flag.
  4. checklist.hits_info[] shows that the name is close and the reported date is exact.
  5. source_details[] provides the source description, URLs when available, and any supporting inference context.
Compare all available identifiers and source evidence before you disposition the candidate as a true positive, false positive, or unresolved.
The Screening Integration Guide covers the full response hierarchy, the Sanctions, PEP, and News mappings, score interpretation, and the recommended analyst review order.

Screening and report flows

Use POST /v1/reports with a searchResultId from a previous search. The flow is the same for one profile and for a batch: run the search, take the searchId from its response, then pass that value as searchResultId.
The abbreviated responses below only show the fields you need to carry from one step to the next: jobid, searchId, searchResultId, index, and reports.

Single search flow

Step 1: Run POST /v1/search-sync Request:
Response:
Save searchId. For search-sync, this value becomes searchResultId in the report-generation request.
Step 2: Run POST /v1/reports with that searchId Request:
Response:
index selects the ranked match from the prior search response: 0 for the top match, 1 for the second match, and so on.

Batch search flow

Step 1: Run POST /v1/search Request:
Response:
Save id from this response. This is the batch jobid you use to read the completed results.
Step 2: Read the completed batch results You can use either POST /v1/searchStatus or GET /v1/search/{jobid}. The examples below use POST /v1/searchStatus. Request:
Response:
Each results[n].searchId is entity-scoped. Pick the searchId for the subject you want to report on, then pass that value as searchResultId.
Step 3: Run POST /v1/reports with the batch result searchId Request:
Response:

Next steps

  • API Keys: create an application key and configure webhooks.
  • Screening Integration Guide: the full response reference, field mapping, and recommended analyst review order.
  • Search History: retrieve past screening requests and their match results for audit and reconciliation.