Skip to main content
The NOVA Vendors API lets a verification vendor (medical clinic, background-check provider, drug-test lab, or any other vendor a company works with in NOVA) connect its own system to the cases a company assigns to it. A vendor can:
  • list the cases assigned to it and read the candidate data the company chose to share,
  • upload the reports each case’s package requires (for example a PME report and a drug test report),
  • review the candidate documents shared with it and complete the case with a result,
  • read the candidates’ appointments and record attendance.
All requests use the base path /v1/partner/nova-vendors.

Authentication

Every request needs a vendor API key:
Vendor keys are different from company API keys:
  • A Company Admin issues them to one vendor from NOVA → Vendors → (vendor) → API access. The key is shown once—store it in a secrets manager.
  • A vendor key only works on /v1/partner/nova-vendors. Company API keys are rejected here, and vendor keys are rejected on every other Partner API endpoint.
  • A vendor key only sees the cases assigned to that vendor in that company.
  • Company Admins can rotate a key (the old one stops working immediately) or revoke it at any time. Disabling the vendor in NOVA also blocks its keys until the vendor is re-enabled.
  • Sandbox keys start with vk_test_, production keys with vk_live_.

Concepts


Get Vendor

Check which vendor your key belongs to.

GET /nova-vendors/me


List Cases

GET /nova-vendors/cases

Example Request

Example Response


Get Case

Returns the case, the candidate data shared with you, the candidate documents to review, the package’s required reports, and the reports you uploaded. Opening a case records your access; an Assigned case moves to In Progress once you start working on it (on a later read or when you upload a report).

GET /nova-vendors/cases/:caseId

Example Response


Upload a Report

Uploading is two calls: get a pre-signed upload URL, PUT the file to it, then attach it to the case.

1. POST /nova-vendors/cases/:caseId/reports/upload-url

2. Upload the file

The Content-Type must match the one you requested. The URL expires after 5 minutes.

3. POST /nova-vendors/cases/:caseId/reports

Returns 201 Created with the report. The report appears on the candidate in the company’s NOVA workspace, and the company receives the onboarding.report.ready webhook.

List Reports

GET /nova-vendors/cases/:caseId/reports

Returns data.reports[] with fresh downloadUrl values.

Delete a Report

DELETE /nova-vendors/cases/:caseId/reports/:reportId

Removes a report you uploaded by mistake. Not allowed on read-only cases.

Review a Candidate Document

Every shared candidate document must be reviewed before the case can be completed.

PATCH /nova-vendors/cases/:caseId/candidate-documents/:fieldId/review

Returns the updated document (same shape as candidateDocuments[]).

Complete a Case

Submit your result. The required reports must be uploaded and every candidate document reviewed.

POST /nova-vendors/cases/:caseId/complete

Returns the case (same shape as Get Case).

Appointments and Attendance

Appointments the candidates on your cases booked through the company’s self-scheduling.

GET /nova-vendors/bookings

Each booking has the same fields as Candidate Self-Scheduling bookings, plus onboardingCandidateId; booking-form answers are not included.

POST /nova-vendors/attendance-codes/:attendanceCode/check-in

Record that the candidate arrived (or did not) when they present their attendance code. Returns 404 NOT_FOUND when the code is unknown or belongs to a candidate who is not on one of your cases.

Integration Sequence

  1. The Company Admin issues your vendor key in NOVA and assigns cases to your vendor.
  2. Poll GET /cases?updatedSince=... (for example every 15 minutes) and read each new case with GET /cases/:caseId.
  3. Use GET /bookings?onboardingCandidateId=... for appointment times; record arrivals with the attendance check-in.
  4. After the evaluation, upload each report in package.requiredDocuments (upload-url → PUT → attach).
  5. Review the candidate documents, then POST /cases/:caseId/complete with the result.

Security Notes

  • Keep vendor keys server-side; never embed them in browsers or mobile apps.
  • Responses contain personal data. Store only what you need and follow the company’s data-processing agreement.
  • Pre-signed URLs expire quickly—download files right away and fetch a fresh URL instead of storing it.
  • Every request is logged and visible to the company in its Partner API logs.