← Main
NDT · VENDOR PORTAL
NDT Vendor Portal
VENDOR SUBMISSIONS
UNIQUE VENDORS
REJECTED ROWS
OPEN RESHOOTS
Submissions
Reshoot Queue
Lab Integration
SubmittedWeldMethodResultVendorVendor refDefect
RequestedWeldVendorVendor refDefectStatusActions

How a lab submits results

Labs authenticate with an API key carrying the ndt_vendor permission scope. Admins provision these keys from User Management → API Keys (or the platform API-keys endpoint).

Endpoint

POST /api/ndt/vendor-submit
X-Api-Key: isk_<vendor-key>
X-Project-Id: 1
Content-Type: application/json

Body shape

{
  "vendor": "Acuren",
  "submittedAt": "2026-04-23T12:00:00Z",
  "rows": [
    {
      "weld": "RTB-ST-069",
      "method": "RT",
      "result": "ACCEPTED",
      "date": "2026-04-22",
      "vendorRef": "ACU-SR-2049-01",
      "welderStencil": "KU"
    },
    {
      "weld": "RTB-ST-070",
      "method": "RT",
      "result": "REJECTED",
      "date": "2026-04-22",
      "vendorRef": "ACU-SR-2049-02",
      "defectCode": "IPD",
      "defectDetails": "Inadequate penetration at 6 o'clock"
    }
  ]
}

Response

Returns 201 with per-row accounting on success, 422 when no rows pass validation. Each REJECTED row auto-opens a reshoot request that the contractor-side admin clears once the reshoot is recorded. Add ?dryRun=1 to preview without committing.

Validation rules

  • vendor required on the envelope.
  • rows[].weld, method (RT/MT/UT/VT/PT), result (ACCEPTED or REJECTED) all required.
  • Unknown weld numbers are accepted but flagged — labs sometimes submit ahead of CWI log entries.
  • Multiple rows on the same weld are fine — each submission keeps its own audit row.

Webhooks (optional)

When a REJECT row creates a reshoot request, the system publishes ndt:reshoot-requested on the event bus. Configure a webhook from Platform → Webhooks to fan it out to the lab's own systems.