| Submitted | Weld | Method | Result | Vendor | Vendor ref | Defect |
|---|
| Requested | Weld | Vendor | Vendor ref | Defect | Status | Actions |
|---|
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).
POST /api/ndt/vendor-submit X-Api-Key: isk_<vendor-key> X-Project-Id: 1 Content-Type: application/json
{
"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"
}
]
}
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.
vendor required on the envelope.rows[].weld, method (RT/MT/UT/VT/PT), result (ACCEPTED or REJECTED) all required.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.