Vessel screening

Retrieve one screening

Retrieves a previous screening owned by the authenticated customer, replayed VERBATIM — the same verdict, evidence and methodology_version that were returned when it ran. Screenings are retained as compliance evidence for 10 years, matching the OFAC recordkeeping requirement that took effect on 2025-03-12, so a record stays retrievable for as long as a regulator may ask for it. Operational objects (assessments, batches, idempotency keys) keep the shorter 30-day window.

Required scope: vessel:screen.

get/api/v1/screenings/{id}

Request

  • Base URL: https://arcnautical.com
  • URL: https://arcnautical.com/api/v1/screenings/{id}
  • Auth: one of:
    • HTTP bearer
    • API key in header X-ArcNautical-Key

Path parameters

idstring required

Resource identifier.

Response

Successful response.

idstring uuid required
imostring required
imo_check_digit_validboolean required

False means the IMO fails its check digit. The hull was still screened. Treat as a flag to verify the identifier, not as a screening failure.

imo_normalized_fromstring

Present ONLY when imo is not the value you sent. You sent this value, a valid IMO with one digit appended (e.g. "94827701"), and imo is the IMO we screened (9482770). This happens only on accounts where the correction is enabled, because their own traffic shows a pipeline appending one digit; every other account gets a 422 for that input. Absent on every other screening, including all written before 2026-09-25. When present, the imo_normalized notice says the same in words. Fix the source value on your side. If imo is not the hull you meant, do not rely on the verdict.

customer_referencestring nullable
vessel_namestring nullable required

Null when identity could not be resolved. A null name is why sanctions.status may be INCOMPLETE rather than GREEN — name-based screening is meaningless without it.

identity_basis'sources' | 'user' | 'none'

WHOSE name this hull was screened under. sources — we resolved it from our own identity data. user — we could not, and screened under the vessel_name YOU supplied; we have not confirmed that name belongs to this IMO, so verify it against the certificate before relying on the result. none — we could not resolve a name and you supplied none, so name-based matching did not run at all and the status is INCOMPLETE. A GREEN on user is not the same claim as a GREEN on sources. DELIBERATELY NOT REQUIRED: a stored screening is replayed verbatim as compliance evidence and is never rewritten, so screenings run before 2026-09-08 do not carry this field. Absent means the same as sources for those rows — the only identity path that existed.

methodology_versionstring required

The methodology family this record was computed under (vessel_screening_external_v1). Constant since 2026-08-02; the engine BUILD is engine_version.

engine_versioninteger

The engine build this record was computed by — the integer the stability changelog cites when it says a rule changed ("engine 30"). Compare it across two records of the same hull to tell a model change from a vessel change. Absent on records stored before 2026-09-15.

disclaimerstring required
screened_atstring date-time required
expires_atstring date-time required
unit_chargedboolean

Whether this screening consumed a unit of the monthly allowance. false on every INCOMPLETE: a unit buys a verdict, and an INCOMPLETE is not one, so the reservation is refunded and X-ArcNautical-Quota-Remaining on the response already reflects that. ABSENT on records stored before 2026-09-13, which were all charged regardless of status. Treat absent as true.

supersedesstring uuid

The INCOMPLETE record this verdict answers. Set when a hull with an open follow-up is screened to a verdict by ANY path — the background re-screen, your own re-ask, a batch item or a monitor run — so the link from question to answer is one rule. Absent otherwise.

superseded_bystring uuid nullable

The later record that answered this one. Present (possibly null) on every GET and list row since 2026-09-15 and absent from an idempotent replay — it is a column merged in at read time, because the stored body is evidence and is never rewritten. Null until a verdict for the same hull is written.

Changes

No recorded changes to this operation across all 1 revision of this API.