Quick Start Tutorial
Get your first accident reconstruction report in 2 minutes with this example showing vehicle details and accident context.
Prerequisites
- Silent Witness API key (contact support)
- One or more vehicle damage photos (JPEG/PNG)
- Vehicle information (make, model, year)
Minimal Example
- Go
- TypeScript
mkdir crash-analysis && cd crash-analysis
go mod init crash-analysis
go get github.com/silentwitness/go-sdk
package main
import (
"context"
"fmt"
"log"
"os"
"time"
"github.com/silentwitness/go-sdk"
)
func main() {
ctx := context.Background()
silentwitness.Key = "sk_test_your_api_key"
// Upload photos
photoData, _ := os.ReadFile("vehicle-damage.jpg")
upload, _ := silentwitness.Files.Upload(ctx, &silentwitness.UploadFileRequest{
Content: photoData,
Filename: silentwitness.String("vehicle-damage.jpg"),
Purpose: silentwitness.String("crash_analysis_plaintiff"),
CaseId: silentwitness.String("case_abc123"),
})
// Create crash report with vehicle details
report, _ := silentwitness.Reports.Create(ctx, &silentwitness.CreateCrashReportRequest{
CaseId: silentwitness.String("case_abc123"),
Plaintiff: &silentwitness.VehicleData{
ImageFileIds: []string{upload.FileId},
VehicleMaker: silentwitness.String("Toyota"),
VehicleModel: silentwitness.String("Camry"),
VehicleYear: silentwitness.String("2020"),
Seatbelt: silentwitness.Bool(true),
AirbagsDeployed: silentwitness.AirbagsDeployed(silentwitness.AirbagsDeployedYes),
},
AccidentDescription: silentwitness.String("Rear-end collision at intersection"),
AccidentDate: silentwitness.String("2024-03-15"),
})
// Wait for completion
for {
status, _ := silentwitness.Reports.GetResult(ctx, &silentwitness.GetResultRequest{
ReportId: report.ReportId,
})
if status.Status == "completed" {
fmt.Printf("Report ready: %s\n", *status.ReportUrl)
break
}
time.Sleep(3 * time.Second)
}
}
mkdir crash-analysis && cd crash-analysis
npm init -y
npm install @silentwitness/typescript-sdk tsx
import { setApiKey, uploadFile, createReport, getReportResult, AirbagsDeployed } from "@silentwitness/typescript-sdk";
import fs from "fs";
async function quickStart() {
setApiKey("sk_test_your_api_key");
// Upload photo
const photoData = fs.readFileSync("vehicle-damage.jpg");
const upload = await uploadFile({
content: photoData,
filename: "vehicle-damage.jpg",
purpose: "crash_analysis_plaintiff",
caseId: "case_abc123"
});
// Create crash report with vehicle details
const report = await createReport({
caseId: "case_abc123",
plaintiff: {
imageFileIds: [upload.fileId],
vehicleMaker: "Toyota",
vehicleModel: "Camry",
vehicleYear: "2020",
seatbelt: true,
airbagsDeployed: AirbagsDeployed.YES
},
accidentDescription: "Rear-end collision at intersection",
accidentDate: "2024-03-15"
});
// Wait for completion
while (true) {
const status = await getReportResult({ reportId: report.reportId });
if (status.status === "completed") {
console.log(`Report ready: ${status.reportUrl}`);
break;
}
await new Promise(r => setTimeout(r, 3000));
}
}
quickStart();
What's Next?
This example shows common fields. For a complete reference including:
- EDR (Event Data Recorder) file uploads
- Defendant vehicle data (two-vehicle crashes)
- VIN numbers and additional metadata
- Accident time and location details
See the Create Report API Reference for all available fields.