Upload File
Upload a file for accident reconstruction processing. Files must be associated with a case and assigned to either the plaintiff or defendant vehicle.
File Size Limit
Maximum file size is 50MB. Files exceeding this limit will be rejected with an INVALID_ARGUMENT error.
Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
content | bytes | Yes | File content as binary data (max 50MB) |
filename | string | Yes | Original filename with extension |
purpose | string | Yes | File purpose (see table below) |
caseId | string | Yes | Case ID to associate the file with |
mimeType | string | No | MIME type (auto-detected if not provided) |
File Purpose Values
The purpose field specifies the file type and which party it belongs to:
| Purpose Value | Description | Accepted Types |
|---|---|---|
vehicle_photo | Vehicle damage photos | Images |
edr_document | Event Data Recorder report | PDF only |
tcr_document | Traffic Collision Report |
Use vehicle_role (plaintiff or defendant) to specify which vehicle. Defaults to plaintiff.
Traffic Collision Reports
Upload TCR PDFs with file_category=tcr_document. The system automatically extracts accident metadata during report generation.
Response
Returns:
fileId: Unique file identifier for use in accident reconstruction reports
Examples
Upload Plaintiff Vehicle Photo
- Go
- TypeScript
import (
"context"
"os"
"github.com/silentwitness/go-sdk"
)
fileBytes, err := os.ReadFile("plaintiff-front-damage.jpg")
if err != nil {
log.Fatal(err)
}
silentwitness.Key = "sk_test_..."
response, err := silentwitness.Files.Upload(ctx, &silentwitness.UploadFileRequest{
Content: fileBytes,
Filename: "plaintiff-front-damage.jpg",
Purpose: "vehicle_photo",
CaseId: "case_abc123",
})
if err != nil {
log.Fatal(err)
}
fmt.Printf("File ID: %s\n", response.FileId)
import { setApiKey, uploadFile } from "@silentwitness/typescript-sdk";
import fs from "fs";
const fileData = fs.readFileSync("plaintiff-front-damage.jpg");
setApiKey("sk_test_...");
const response = await uploadFile({
content: fileData,
filename: "plaintiff-front-damage.jpg",
purpose: "vehicle_photo",
caseId: "case_abc123"
});
console.log(`File ID: ${response.fileId}`);
Upload EDR Report
- Go
- TypeScript
import "github.com/silentwitness/go-sdk"
edrData, err := os.ReadFile("edr-report.pdf")
if err != nil {
log.Fatal(err)
}
silentwitness.Key = "sk_test_..."
response, err := silentwitness.Files.Upload(ctx, &silentwitness.UploadFileRequest{
Content: edrData,
Filename: "edr-report.pdf",
Purpose: "edr_document",
CaseId: "case_abc123",
})
import { setApiKey, uploadFile } from "@silentwitness/typescript-sdk";
const edrData = fs.readFileSync("edr-report.pdf");
setApiKey("sk_test_...");
const response = await uploadFile({
content: edrData,
filename: "edr-report.pdf",
purpose: "edr_document",
caseId: "case_abc123"
});
File Limits & Requirements
Size Limit
- Maximum file size: 50MB (52,428,800 bytes)
- Files larger than 50MB will be rejected immediately
- The API validates file size before processing
Supported File Types
- Images: JPEG, PNG, WebP
- Documents: PDF, DOC, DOCX, CSV
- Other formats: Accepted based on MIME type detection
Best Practices
- Compress large images before upload to stay under the 50MB limit
- Use standard image formats (JPEG, PNG) for crash photos
- Include descriptive filenames for easier identification
- Upload files immediately after creating a case
Usage Steps
- Create a case using the Cases API
- Upload photos for plaintiff vehicle with
vehicle_photopurpose - Upload photos for defendant vehicle (if applicable) with
vehicle_photopurpose andvehicle_role=defendant - Upload EDR (if available) with
edr_documentpurpose - Upload TCR (if available) with
tcr_documentpurpose - Generate report using the Cases API
Errors
| Code | Description |
|---|---|
INVALID_ARGUMENT | Invalid file, parameters, purpose, or file too large |
NOT_FOUND | Case ID not found |
PERMISSION_DENIED | No access to specified case |
UNAUTHENTICATED | Invalid or missing API key |