DocMake
The PDF DocMake makes from the Vehicle Inspection Report template

The first page of the document DocMake makes from the sample values on this page.

Operations

Vehicle Inspection Report

A vehicle inspection report records that somebody walked around a vehicle, looked at the things that stop it or hurt people, and wrote down what they found. The daily version is done by the driver before first use; the deeper safety inspection is done by a technician on a set interval. Both produce the same shape of document, and both are worth nothing unless the nil defect case is recorded as deliberately as the defect case.

Operators of goods vehicles in Great Britain will recognise the pattern from the DVSA guidance on maintaining roadworthiness, which expects a walkaround check before first use, a written record either way, and retention of those records for at least fifteen months. The defect report and the record that the defect was put right are treated as a pair, because an inspection regime that finds faults but cannot show they were fixed is worse evidence than no regime at all. Fleets outside that scheme still tend to copy its structure, since insurers and clients ask the same questions after an incident.

Readings carry the weight. Tread depth per axle and per side, brake performance, tyre pressures, fluid levels and the odometer are numbers that trend, and a tyre at 2.0 mm on the nearside drive axle is a scheduled replacement rather than an emergency if somebody logged 3.1 mm three weeks earlier. Recording the position as well as the value is what makes the trend readable, since a single figure for the whole vehicle hides the axle that is actually wearing.

The verdict block is the point of the exercise. Roadworthy, roadworthy with defects to monitor, or off the road until repaired, with the person who made the call named, and then the rectification section closed by whoever did the work. Rendering the whole report from JSON lets a driver app submit a check from the yard and produce a signed PDF for the vehicle file automatically, which for a fleet of forty vehicles checked every working day is a document set nobody could keep up with by hand.

Blanks to fill

report_number Report number
check_date Date
operator Operator
check_time Time
operator_licence Operator licence
depot Depot
check_type Type of check
inspector_name Carried out by
inspector_role Role
driver_licence_number Driver licence
registration Registration
fleet_number Fleet number
make_model Make and model
vehicle_type Vehicle type
gross_weight Gross vehicle weight
vin VIN
odometer Odometer
annual_test_expiry Annual test expiry
last_safety_inspection Last safety inspection
next_safety_inspection_due Next safety inspection due
trailer_registration Trailer
reported_to Defects reported to
reported_at Reported at
nil_defects Nil defects
roadworthiness_verdict Roadworthiness verdict
vehicle_status Vehicle status
rectification_note Rectification
rectified_by Rectified by
rectified_date Rectified
driver_declaration Declaration
returned_to_service_by Returned to service by
record_retention_note Record retention
company_name Company
items[] One per item, so a row is added for every item in the list
tyres[] One per item, so a row is added for every item in the list
readings[] One per item, so a row is added for every item in the list
defects[] One per item, so a row is added for every item in the list

The data behind the preview

This is the exact JSON that produced the document above. Change the values, POST them to the API, and you get your version back as DOCX or PDF. Lists grow and shrink with your data; the layout adapts.

  1. 01 Sign up free and duplicate this template into your workspace.
  2. 02 Adjust the wording and branding in the visual editor.
  3. 03 Fill it in the app, share it as a form link, or call the API.
sample-data.json
{
  "company_name": "Harbor Build Group",
  "report_number": "VIR-2026-08812",
  "check_type": "Driver walkaround check before first use, with a tread depth survey added because the vehicle is due its safety inspection",
  "check_date": "October 5, 2026",
  "check_time": "06:35",
  "operator": "Harbor Build Group",
  "operator_licence": "OB1148226, standard national",
  "depot": "Avonmouth yard",
  "inspector_name": "Marek Nowicki",
  "inspector_role": "Driver",
  "driver_licence_number": "NOWIC806134MJ9AB",
  "registration": "WV23 KHR",
  "fleet_number": "HB-21",
  "make_model": "Verrick TX 320, 8 wheel tipper",
  "vehicle_type": "Rigid goods vehicle, tipper body",
  "gross_weight": "32,000 kg",
  "vin": "VRK4TX320P1174432",
  "odometer": "148,206 km",
  "trailer_registration": "Not applicable, rigid vehicle",
  "last_safety_inspection": "August 14, 2026, at six weeks",
  "next_safety_inspection_due": "October 9, 2026",
  "annual_test_expiry": "April 30, 2027",
  "items": [
    {
      "group": "Cab and controls",
      "description": "Steering, horn, mirrors and glass",
      "result": "Pass",
      "note": "Nearside mirror arm retightened by the driver before departure"
    },
    {
      "group": "Cab and controls",
      "description": "Seat belt condition and operation",
      "result": "Pass",
      "note": "Webbing sound with no cuts or fraying, buckle latches and releases cleanly"
    },
    {
      "group": "Cab and controls",
      "description": "Tachograph and driver card",
      "result": "Pass",
      "note": "Card inserted, calibration label in date to June 2027"
    },
    {
      "group": "Brakes",
      "description": "Air leaks with the engine off, held for two minutes",
      "result": "Fail",
      "note": "Audible leak at the rear axle, see DEF-01"
    },
    {
      "group": "Brakes",
      "description": "Park brake hold on the yard slope",
      "result": "Pass",
      "note": "Held the vehicle on the yard ramp with no creep over a full minute"
    },
    {
      "group": "Lights",
      "description": "Headlamps, side lamps, indicators and hazards",
      "result": "Pass",
      "note": "Walked round with each set switched on, all lamps working and lenses clean"
    },
    {
      "group": "Lights",
      "description": "Brake lamps and reversing lamps",
      "result": "Fail",
      "note": "Offside rear brake lamp out, see DEF-02"
    },
    {
      "group": "Lights",
      "description": "Beacons, work lamps and markers",
      "result": "Pass",
      "note": "Both roof beacons and the rear work lamp working, side markers all lit"
    },
    {
      "group": "Body and load",
      "description": "Tipper body, hinges, pins and rear door catch",
      "result": "Pass",
      "note": "Pins and retainers in place, rear door catch closes square and latches first time"
    },
    {
      "group": "Body and load",
      "description": "Body raise and lower, safety prop and tipping interlock",
      "result": "Pass",
      "note": "Raised to full height and lowered under control, prop engaged, interlock held the drive out"
    },
    {
      "group": "Fluids and leaks",
      "description": "Engine oil, coolant, screen wash and visible leaks",
      "result": "Advisory",
      "note": "See DEF-03, a light hydraulic weep at the tipping ram gland"
    },
    {
      "group": "Safety equipment",
      "description": "Fire extinguisher, first aid kit, spill kit and warning triangle",
      "result": "Pass",
      "note": "Extinguisher gauge in the green, service label December 2026"
    }
  ],
  "tyres": [
    {
      "position": "Axle 1 offside",
      "tread_depth": "6.4 mm",
      "pressure": "8.5 bar",
      "condition": "Even wear"
    },
    {
      "position": "Axle 1 nearside",
      "tread_depth": "6.2 mm",
      "pressure": "8.5 bar",
      "condition": "Even wear"
    },
    {
      "position": "Axle 2 offside",
      "tread_depth": "5.9 mm",
      "pressure": "8.5 bar",
      "condition": "Even wear"
    },
    {
      "position": "Axle 2 nearside",
      "tread_depth": "5.8 mm",
      "pressure": "8.4 bar",
      "condition": "Even wear"
    },
    {
      "position": "Axle 3 offside outer",
      "tread_depth": "4.1 mm",
      "pressure": "8.0 bar",
      "condition": "Even wear"
    },
    {
      "position": "Axle 3 offside inner",
      "tread_depth": "4.3 mm",
      "pressure": "8.0 bar",
      "condition": "Even wear"
    },
    {
      "position": "Axle 3 nearside outer",
      "tread_depth": "2.4 mm",
      "pressure": "7.6 bar",
      "condition": "Wearing on the outer shoulder, replacement scheduled, see DEF-04"
    },
    {
      "position": "Axle 3 nearside inner",
      "tread_depth": "3.8 mm",
      "pressure": "8.0 bar",
      "condition": "Even wear"
    },
    {
      "position": "Axle 4 offside outer",
      "tread_depth": "4.6 mm",
      "pressure": "8.0 bar",
      "condition": "Even wear"
    },
    {
      "position": "Axle 4 offside inner",
      "tread_depth": "4.5 mm",
      "pressure": "8.0 bar",
      "condition": "Even wear"
    },
    {
      "position": "Axle 4 nearside outer",
      "tread_depth": "4.4 mm",
      "pressure": "8.0 bar",
      "condition": "Even wear"
    },
    {
      "position": "Axle 4 nearside inner",
      "tread_depth": "4.2 mm",
      "pressure": "8.0 bar",
      "condition": "Even wear"
    }
  ],
  "readings": [
    {
      "parameter": "Air pressure build up, 6 bar to 8 bar",
      "value": "41 seconds",
      "limit": "Below 60 seconds",
      "verdict": "Pass"
    },
    {
      "parameter": "Air pressure loss, engine off, two minutes",
      "value": "0.7 bar",
      "limit": "Below 0.2 bar",
      "verdict": "Fail"
    },
    {
      "parameter": "Lowest tread depth on the vehicle",
      "value": "2.4 mm, drive axle 3 nearside outer",
      "limit": "1.0 mm legal minimum for this class, 3.0 mm fleet policy",
      "verdict": "Below fleet policy, above the legal minimum"
    },
    {
      "parameter": "Engine oil level",
      "value": "Between the marks, upper third",
      "limit": "Between minimum and maximum",
      "verdict": "Pass"
    },
    {
      "parameter": "AdBlue level",
      "value": "62 percent",
      "limit": "Above 20 percent at start of shift",
      "verdict": "Pass"
    },
    {
      "parameter": "Odometer since last safety inspection",
      "value": "4,118 km",
      "limit": "Interval is time based at six weeks",
      "verdict": "Recorded"
    }
  ],
  "defects": [
    {
      "reference": "DEF-01",
      "description": "Air leak audible at the rear axle brake chamber area with the engine off. Pressure loss measured at 0.7 bar over two minutes against a limit of 0.2 bar.",
      "category": "Immediate, vehicle not to be used",
      "action": "Vehicle parked in the yard and keys returned to the transport office. Workshop to trace and repair before the vehicle moves."
    },
    {
      "reference": "DEF-02",
      "description": "Offside rear brake lamp not illuminating. Bulb suspected rather than the circuit, since the adjacent lamp and the indicator both work.",
      "category": "Immediate, vehicle not to be used",
      "action": "Replace and retest the full lighting circuit at the same time as the air leak repair."
    },
    {
      "reference": "DEF-03",
      "description": "Light hydraulic weep at the tipping ram gland, no drip on the ground after standing overnight.",
      "category": "Monitor",
      "action": "Record on the vehicle file and inspect at the safety inspection due October 9."
    },
    {
      "reference": "DEF-04",
      "description": "Drive axle 3 nearside outer tyre at 2.4 mm, below the 3.0 mm fleet replacement policy and wearing on the outer shoulder, which suggests an alignment or loading pattern worth checking.",
      "category": "Scheduled",
      "action": "Replace the tyre and check axle alignment at the safety inspection on October 9."
    }
  ],
  "nil_defects": false,
  "roadworthiness_verdict": "Not roadworthy at the time of the check. Two immediate category defects were found, either of which prohibits use.",
  "vehicle_status": "Off the road, parked in the Avonmouth yard with the keys held by the transport office and a do not use notice on the windscreen. Work planned for the Cascade Street muckaway run was covered by fleet number HB-24.",
  "reported_to": "Sofia Almeida, Transport Manager",
  "reported_at": "October 5, 2026, 06:52",
  "rectification_note": "Brake chamber on the offside of axle 3 found leaking at the diaphragm and replaced, system pressure tested and held at 0.05 bar loss over two minutes. Offside rear brake lamp bulb and holder replaced, full lighting circuit retested. Tipping ram weep and the nearside drive tyre were left for the safety inspection on October 9 as agreed with the transport manager.",
  "rectified_by": "Dean Halloway, fleet technician",
  "rectified_date": "October 5, 2026, 11:20",
  "returned_to_service_by": "Sofia Almeida, Transport Manager, after the technician sign off and a short road test",
  "driver_declaration": "I carried out the checks recorded above before first use and reported every defect found to the transport office before the vehicle was used.",
  "record_retention_note": "Filed against fleet number HB-21 and retained for fifteen months in line with the operator licence undertakings, together with the rectification record."
}

Generate this document via the API

One template plus changing data is the whole point. The list of blanks above is the contract, and every new set of values comes back in the same layout: fill it in the app, hand someone a form link, or POST the JSON and get the file straight back.

The request below carries this page's own values, so it runs as soon as the template exists in your workspace. Swap the values for yours and the response is your document.

make-vehicle-inspection-report.sh
curl -X POST https://app.docmake.io/api/v1/render \
  -H "Authorization: Bearer $DOCMAKE_API_KEY" \
  -H "Content-Type: application/json" \
  -H "Accept: application/json" \
  --output vehicle-inspection-report.pdf \
  --data-binary @- <<'JSON'
{
  "template_id": "tmpl_your_template_id",
  "format": "pdf",
  "data": {
    "company_name": "Harbor Build Group",
    "report_number": "VIR-2026-08812",
    "check_type": "Driver walkaround check before first use, with a tread depth survey added because the vehicle is due its safety inspection",
    "check_date": "October 5, 2026",
    "check_time": "06:35",
    "operator": "Harbor Build Group",
    "operator_licence": "OB1148226, standard national",
    "depot": "Avonmouth yard",
    "inspector_name": "Marek Nowicki",
    "inspector_role": "Driver",
    "driver_licence_number": "NOWIC806134MJ9AB",
    "registration": "WV23 KHR",
    "fleet_number": "HB-21",
    "make_model": "Verrick TX 320, 8 wheel tipper",
    "vehicle_type": "Rigid goods vehicle, tipper body",
    "gross_weight": "32,000 kg",
    "vin": "VRK4TX320P1174432",
    "odometer": "148,206 km",
    "trailer_registration": "Not applicable, rigid vehicle",
    "last_safety_inspection": "August 14, 2026, at six weeks",
    "next_safety_inspection_due": "October 9, 2026",
    "annual_test_expiry": "April 30, 2027",
    "items": [
      {
        "group": "Cab and controls",
        "description": "Steering, horn, mirrors and glass",
        "result": "Pass",
        "note": "Nearside mirror arm retightened by the driver before departure"
      },
      {
        "group": "Cab and controls",
        "description": "Seat belt condition and operation",
        "result": "Pass",
        "note": "Webbing sound with no cuts or fraying, buckle latches and releases cleanly"
      },
      {
        "group": "Cab and controls",
        "description": "Tachograph and driver card",
        "result": "Pass",
        "note": "Card inserted, calibration label in date to June 2027"
      },
      {
        "group": "Brakes",
        "description": "Air leaks with the engine off, held for two minutes",
        "result": "Fail",
        "note": "Audible leak at the rear axle, see DEF-01"
      },
      {
        "group": "Brakes",
        "description": "Park brake hold on the yard slope",
        "result": "Pass",
        "note": "Held the vehicle on the yard ramp with no creep over a full minute"
      },
      {
        "group": "Lights",
        "description": "Headlamps, side lamps, indicators and hazards",
        "result": "Pass",
        "note": "Walked round with each set switched on, all lamps working and lenses clean"
      },
      {
        "group": "Lights",
        "description": "Brake lamps and reversing lamps",
        "result": "Fail",
        "note": "Offside rear brake lamp out, see DEF-02"
      },
      {
        "group": "Lights",
        "description": "Beacons, work lamps and markers",
        "result": "Pass",
        "note": "Both roof beacons and the rear work lamp working, side markers all lit"
      },
      {
        "group": "Body and load",
        "description": "Tipper body, hinges, pins and rear door catch",
        "result": "Pass",
        "note": "Pins and retainers in place, rear door catch closes square and latches first time"
      },
      {
        "group": "Body and load",
        "description": "Body raise and lower, safety prop and tipping interlock",
        "result": "Pass",
        "note": "Raised to full height and lowered under control, prop engaged, interlock held the drive out"
      },
      {
        "group": "Fluids and leaks",
        "description": "Engine oil, coolant, screen wash and visible leaks",
        "result": "Advisory",
        "note": "See DEF-03, a light hydraulic weep at the tipping ram gland"
      },
      {
        "group": "Safety equipment",
        "description": "Fire extinguisher, first aid kit, spill kit and warning triangle",
        "result": "Pass",
        "note": "Extinguisher gauge in the green, service label December 2026"
      }
    ],
    "tyres": [
      {
        "position": "Axle 1 offside",
        "tread_depth": "6.4 mm",
        "pressure": "8.5 bar",
        "condition": "Even wear"
      },
      {
        "position": "Axle 1 nearside",
        "tread_depth": "6.2 mm",
        "pressure": "8.5 bar",
        "condition": "Even wear"
      },
      {
        "position": "Axle 2 offside",
        "tread_depth": "5.9 mm",
        "pressure": "8.5 bar",
        "condition": "Even wear"
      },
      {
        "position": "Axle 2 nearside",
        "tread_depth": "5.8 mm",
        "pressure": "8.4 bar",
        "condition": "Even wear"
      },
      {
        "position": "Axle 3 offside outer",
        "tread_depth": "4.1 mm",
        "pressure": "8.0 bar",
        "condition": "Even wear"
      },
      {
        "position": "Axle 3 offside inner",
        "tread_depth": "4.3 mm",
        "pressure": "8.0 bar",
        "condition": "Even wear"
      },
      {
        "position": "Axle 3 nearside outer",
        "tread_depth": "2.4 mm",
        "pressure": "7.6 bar",
        "condition": "Wearing on the outer shoulder, replacement scheduled, see DEF-04"
      },
      {
        "position": "Axle 3 nearside inner",
        "tread_depth": "3.8 mm",
        "pressure": "8.0 bar",
        "condition": "Even wear"
      },
      {
        "position": "Axle 4 offside outer",
        "tread_depth": "4.6 mm",
        "pressure": "8.0 bar",
        "condition": "Even wear"
      },
      {
        "position": "Axle 4 offside inner",
        "tread_depth": "4.5 mm",
        "pressure": "8.0 bar",
        "condition": "Even wear"
      },
      {
        "position": "Axle 4 nearside outer",
        "tread_depth": "4.4 mm",
        "pressure": "8.0 bar",
        "condition": "Even wear"
      },
      {
        "position": "Axle 4 nearside inner",
        "tread_depth": "4.2 mm",
        "pressure": "8.0 bar",
        "condition": "Even wear"
      }
    ],
    "readings": [
      {
        "parameter": "Air pressure build up, 6 bar to 8 bar",
        "value": "41 seconds",
        "limit": "Below 60 seconds",
        "verdict": "Pass"
      },
      {
        "parameter": "Air pressure loss, engine off, two minutes",
        "value": "0.7 bar",
        "limit": "Below 0.2 bar",
        "verdict": "Fail"
      },
      {
        "parameter": "Lowest tread depth on the vehicle",
        "value": "2.4 mm, drive axle 3 nearside outer",
        "limit": "1.0 mm legal minimum for this class, 3.0 mm fleet policy",
        "verdict": "Below fleet policy, above the legal minimum"
      },
      {
        "parameter": "Engine oil level",
        "value": "Between the marks, upper third",
        "limit": "Between minimum and maximum",
        "verdict": "Pass"
      },
      {
        "parameter": "AdBlue level",
        "value": "62 percent",
        "limit": "Above 20 percent at start of shift",
        "verdict": "Pass"
      },
      {
        "parameter": "Odometer since last safety inspection",
        "value": "4,118 km",
        "limit": "Interval is time based at six weeks",
        "verdict": "Recorded"
      }
    ],
    "defects": [
      {
        "reference": "DEF-01",
        "description": "Air leak audible at the rear axle brake chamber area with the engine off. Pressure loss measured at 0.7 bar over two minutes against a limit of 0.2 bar.",
        "category": "Immediate, vehicle not to be used",
        "action": "Vehicle parked in the yard and keys returned to the transport office. Workshop to trace and repair before the vehicle moves."
      },
      {
        "reference": "DEF-02",
        "description": "Offside rear brake lamp not illuminating. Bulb suspected rather than the circuit, since the adjacent lamp and the indicator both work.",
        "category": "Immediate, vehicle not to be used",
        "action": "Replace and retest the full lighting circuit at the same time as the air leak repair."
      },
      {
        "reference": "DEF-03",
        "description": "Light hydraulic weep at the tipping ram gland, no drip on the ground after standing overnight.",
        "category": "Monitor",
        "action": "Record on the vehicle file and inspect at the safety inspection due October 9."
      },
      {
        "reference": "DEF-04",
        "description": "Drive axle 3 nearside outer tyre at 2.4 mm, below the 3.0 mm fleet replacement policy and wearing on the outer shoulder, which suggests an alignment or loading pattern worth checking.",
        "category": "Scheduled",
        "action": "Replace the tyre and check axle alignment at the safety inspection on October 9."
      }
    ],
    "nil_defects": false,
    "roadworthiness_verdict": "Not roadworthy at the time of the check. Two immediate category defects were found, either of which prohibits use.",
    "vehicle_status": "Off the road, parked in the Avonmouth yard with the keys held by the transport office and a do not use notice on the windscreen. Work planned for the Cascade Street muckaway run was covered by fleet number HB-24.",
    "reported_to": "Sofia Almeida, Transport Manager",
    "reported_at": "October 5, 2026, 06:52",
    "rectification_note": "Brake chamber on the offside of axle 3 found leaking at the diaphragm and replaced, system pressure tested and held at 0.05 bar loss over two minutes. Offside rear brake lamp bulb and holder replaced, full lighting circuit retested. Tipping ram weep and the nearside drive tyre were left for the safety inspection on October 9 as agreed with the transport manager.",
    "rectified_by": "Dean Halloway, fleet technician",
    "rectified_date": "October 5, 2026, 11:20",
    "returned_to_service_by": "Sofia Almeida, Transport Manager, after the technician sign off and a short road test",
    "driver_declaration": "I carried out the checks recorded above before first use and reported every defect found to the transport office before the vehicle was used.",
    "record_retention_note": "Filed against fleet number HB-21 and retained for fifteen months in line with the operator licence undertakings, together with the rectification record."
  }
}
JSON

tmpl_your_template_id is a stand-in: build this template in the visual editor and copy the id it shows, or create one with POST /api/v1/templates. Keys, formats, strict mode and batches are in the API reference.

Or let an AI assistant do it

The DocMake MCP server lets Claude and other assistants make this document the same way. Install it once:

claude mcp add docmake \
  --env DOCMAKE_API_KEY=dm_your_api_key \
  -- npx -y @docmake/mcp@latest

Then ask for the document in plain words:

Make a PDF from my Vehicle Inspection Report template with report number "VIR-2026-08812" and date "October 5, 2026".

How the MCP server works →

More operations templates