- Make sure the deal’s owner and business details have reached Heron - usually automatically from the ISO applications you already send us.
- Trigger the background check.
- Poll for completion and fetch the results.
The background check runs asynchronously. Triggering it returns immediately; you poll the results endpoint until the run completes.
Prerequisites
Before following this guide, you will need:- An API key (see Authentication). All requests send it in the
x-api-keyheader. - The background check product enabled for your account. Speak to your Heron rep to switch it on - it is not enabled by default.
- An end user representing the deal you want to screen. Most integrations already have these - an end user is created whenever you send Heron an ISO application, or you can create one directly (Create EndUser). The calls below address it by its
heron_id(aneus_string) or your ownend_user_id.
Steps
1. Make sure the deal’s details have reached Heron
The background check searches on the owner and business identity Heron holds for the deal. There are two ways that data gets there.From your ISO applications (most common)
If you already send Heron the deal’s ISO application - by API or email forwarding - Heron extracts the owner and business details from it automatically. There’s nothing extra to do here; skip to step 2.Send the details over the API
If you don’t send ISO applications, supply the identity directly withPATCH /end_users/{id}/end_user_information (reference):
app.py
The more identity available, the more precise the match. A name is the minimum for an owner (first + last) and a legal name or DBA is the minimum for the business, but an owner’s SSN and date of birth is what reliably resolves them to the right person and avoids false matches. Up to two owners (
owner_1, owner_2) are supported.2. Trigger the background check
Start the check with thebackground_check enricher (reference). It returns 202 Accepted as soon as the run is dispatched:
app.py
3. Poll and fetch the results
Fetch the background check (reference) and read the top-levelstatus until it is no longer processing:
app.py
Status lifecycle
Understanding the result
A succeeded response has three parts:overall- the headline: aresult(pass/review_required/failed/missing_data), aseverity, and pass / review / fail counts.subjects[]- one entry perowner_1,owner_2, andbusiness, each with how it was matched (resolution), the search trail (searches), and the findings grouped by record type (sections).policy- the outcome of your configured checks, each with its status and the evidence (subject, section, and records) behind it.
Affiliate reports
An owner’s report names other businesses and people: companies the owner is an officer of, filings under their name, and known associates. You can order a separate report on any of them. This is optional and off by default. Each report is billed once on top of the submission; ask your Heron rep to enable it and for the per-report rate.Reports are pulled only when you ask for one. Running a background check, on any number of deals, never buys an affiliate report by itself.
1. List the affiliations
Once the deal’s background check has completed, list what it connected the deal to:app.py
businesses and persons each list rows keyed by subject_key (the owner whose report named them) and index (its position in that list). Business rows carry a source: work_affiliation, corporate_officer or corporate_filing. Every row has report, which is null until a report has been requested for it.
2. Request the reports you want
Echo thesubject_key, index and name of each row you want a report on, up to 25 per call:
app.py
409 and nothing is ordered, so a stale client cannot buy the wrong row. search_inputs is optional: where the source record already identifies the party, Heron fetches its report directly; otherwise it searches first, and these inputs narrow that search.
The request itself buys nothing. It queues a background-check re-run, and that run pulls the reports.
3. Poll for the reports
Re-fetch the affiliations list and read each row’sreport.status:
The reports themselves appear on the background check payload under
affiliations.business[] and affiliations.person[], each with its own search trail and findings, shaped like a subject.
4. Confirm a candidate when the search was not conclusive
If a search found several parties, or you want to correct the one it chose, name the party from that row’s search trail:app.py
409. The new report replaces the one held for that row.
5. Withdraw a request
DELETE /api/end_users/{end_user_heron_id}/background_check/affiliations/reports/{ref} stops tracking the request, so later runs no longer pull it. Reports already pulled stay on the runs that produced them.
What you pay for
You pay for each affiliate report once, when it first arrives. Nothing else adds a charge:- Re-running the deal’s background check shows the report you already have. It is not bought again.
- Confirming a different candidate, or changing a row’s search details, fetches a new report for that row at no extra charge.
- A report that could not be pulled is retried on the next run and charged only when it arrives.
- A deal on which nobody requested a report never pulls one, however many times its background check runs.
Downloading a report as a PDF
Heron returns the background check as structured data (above), which is the source of truth and the most flexible format to integrate against - you can render it however suits your product. We can also generate a single combined PDF covering all owners and the business in one document, branded as Heron’s work product.Heron provides its own background check work product. We can’t redistribute the raw third-party reports our data comes from. If a rendered PDF is something you need, talk to your Heron rep about format and branding.