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 which vehicle the file belongs to:
| Purpose Value | Description | Use Case |
|---|---|---|
crash_analysis_plaintiff | Plaintiff vehicle files | All files related to the plaintiff's vehicle (damage photos, EDR data, documents) |
crash_analysis_defendant | Defendant vehicle files | All files related to the defendant's vehicle (damage photos, EDR data, documents) |
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: "crash_analysis_plaintiff",
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: "crash_analysis_plaintiff",
caseId: "case_abc123"
});
console.log(`File ID: ${response.fileId}`);
Upload Defendant Vehicle EDR Data
- Go
- TypeScript
import "github.com/silentwitness/go-sdk"
edrData, err := os.ReadFile("defendant-edr.csv")
if err != nil {
log.Fatal(err)
}
silentwitness.Key = "sk_test_..."
response, err := silentwitness.Files.Upload(ctx, &silentwitness.UploadFileRequest{
Content: edrData,
Filename: "defendant-edr.csv",
Purpose: "crash_analysis_defendant",
CaseId: "case_abc123",
})
import { setApiKey, uploadFile } from "@silentwitness/typescript-sdk";
const edrData = fs.readFileSync("defendant-edr.csv");
setApiKey("sk_test_...");
const response = await uploadFile({
content: edrData,
filename: "defendant-edr.csv",
purpose: "crash_analysis_defendant",
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 files for plaintiff vehicle with
crash_analysis_plaintiffpurpose - Upload files for defendant vehicle (if applicable) with
crash_analysis_defendantpurpose - Create crash report using the file IDs in the plaintiff and defendant sections
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 |