Create Report
Limited Access
This feature is currently available to select partners only. Contact us to request access.
Create a new cross examination questions report by uploading expert CVs and depositions along with case parameters. Cross-examination reports use the unified CreateReport API with the CrossExamination parameter.
ExpertData Structure
Each expert witness includes the following fields:
| Field | Type | Required | Description |
|---|---|---|---|
discipline | string | Yes | "accident_reconstruction", "biomechanics", or "both" |
cvFileId | string | No* | File ID for expert's CV (uploaded via Files API) |
depositionFileId | string | No* | File ID for expert's deposition transcript |
*At least one file (CV or deposition) is required per expert
Request Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
caseId | string | Yes | Case ID to associate the report with |
type | ReportType | Yes | Must be cross_examination |
crossExamination | CrossExaminationParams | Yes | Cross-examination specific parameters |
CrossExaminationParams
| Field | Type | Required | Description |
|---|---|---|---|
attorneySide | string | Yes | "plaintiff" or "defense" |
proceedingType | string | Yes | "deposition" or "trial" |
questionSpecificity | string | Yes | "general" or "general_and_specific" |
experts | ExpertData[] | Yes | Array of expert witness data (1-10 experts) |
Response
Returns:
reportId: Report identifier for status polling
Examples
Single Expert - Biomechanics
- Go
- TypeScript
import silentwitness "github.com/silentwitness/sw-go-sdk"
client := silentwitness.NewClient(silentwitness.Config{
APIKey: os.Getenv("SW_API_KEY"),
})
defer client.Close()
// First, upload expert files
cvFile, err := client.UploadFile(ctx, &silentwitness.UploadFileParams{
CaseID: "case_xyz789",
Filename: "expert_cv.pdf",
Content: cvBytes,
Purpose: silentwitness.FilePurposeCrossExamCV,
})
depositionFile, err := client.UploadFile(ctx, &silentwitness.UploadFileParams{
CaseID: "case_xyz789",
Filename: "expert_deposition.pdf",
Content: depositionBytes,
Purpose: silentwitness.FilePurposeCrossExamDeposition,
})
// Create cross examination report
response, err := client.CreateReport(ctx, &silentwitness.CreateReportParams{
CaseID: "case_xyz789",
Type: silentwitness.ReportTypeCrossExamination,
CrossExamination: &silentwitness.CrossExaminationReportParams{
AttorneySide: "plaintiff",
ProceedingType: "deposition",
QuestionSpecificity: "general_and_specific",
Experts: []silentwitness.ExpertDataParams{
{
Discipline: "biomechanics",
CVFileID: silentwitness.String(cvFile.FileID),
DepositionFileID: silentwitness.String(depositionFile.FileID),
},
},
},
})
if err != nil {
log.Fatal(err)
}
fmt.Printf("Report ID: %s\n", response.ReportID)
import { SilentWitnessClient } from "@silentwitness/sdk";
const client = new SilentWitnessClient({
apiKey: process.env.SW_API_KEY
});
// First, upload expert files
const cvFile = await client.uploadFile({
caseId: "case_xyz789",
filename: "expert_cv.pdf",
content: cvBytes,
purpose: "cross_exam_expert_cv"
});
const depositionFile = await client.uploadFile({
caseId: "case_xyz789",
filename: "expert_deposition.pdf",
content: depositionBytes,
purpose: "cross_exam_expert_deposition"
});
// Create cross examination report
const response = await client.createReport({
caseId: "case_xyz789",
type: "cross_examination",
crossExamination: {
attorneySide: "plaintiff",
proceedingType: "deposition",
questionSpecificity: "general_and_specific",
experts: [
{
discipline: "biomechanics",
cvFileId: cvFile.fileId,
depositionFileId: depositionFile.fileId
}
]
}
});
console.log(`Report ID: ${response.reportId}`);
Multiple Experts - Different Disciplines
- Go
- TypeScript
// Upload files for multiple experts
bioCV, _ := client.UploadFile(ctx, &silentwitness.UploadFileParams{
CaseID: "case_xyz789",
Filename: "biomechanics_expert_cv.pdf",
Content: bioCVBytes,
Purpose: silentwitness.FilePurposeCrossExamCV,
})
arCV, _ := client.UploadFile(ctx, &silentwitness.UploadFileParams{
CaseID: "case_xyz789",
Filename: "accident_recon_cv.pdf",
Content: arCVBytes,
Purpose: silentwitness.FilePurposeCrossExamCV,
})
arDepo, _ := client.UploadFile(ctx, &silentwitness.UploadFileParams{
CaseID: "case_xyz789",
Filename: "accident_recon_deposition.pdf",
Content: arDepoBytes,
Purpose: silentwitness.FilePurposeCrossExamDeposition,
})
// Create report for multiple experts
response, err := client.CreateReport(ctx, &silentwitness.CreateReportParams{
CaseID: "case_xyz789",
Type: silentwitness.ReportTypeCrossExamination,
CrossExamination: &silentwitness.CrossExaminationReportParams{
AttorneySide: "defense",
ProceedingType: "trial",
QuestionSpecificity: "general",
Experts: []silentwitness.ExpertDataParams{
{
Discipline: "biomechanics",
CVFileID: silentwitness.String(bioCV.FileID),
},
{
Discipline: "accident_reconstruction",
CVFileID: silentwitness.String(arCV.FileID),
DepositionFileID: silentwitness.String(arDepo.FileID),
},
},
},
})
if err != nil {
log.Fatal(err)
}
fmt.Printf("Report ID: %s\n", response.ReportID)
// Upload files for multiple experts
const bioCV = await client.uploadFile({
caseId: "case_xyz789",
filename: "biomechanics_expert_cv.pdf",
content: bioCVBytes,
purpose: "cross_exam_expert_cv"
});
const arCV = await client.uploadFile({
caseId: "case_xyz789",
filename: "accident_recon_cv.pdf",
content: arCVBytes,
purpose: "cross_exam_expert_cv"
});
const arDepo = await client.uploadFile({
caseId: "case_xyz789",
filename: "accident_recon_deposition.pdf",
content: arDepoBytes,
purpose: "cross_exam_expert_deposition"
});
// Create report for multiple experts
const response = await client.createReport({
caseId: "case_xyz789",
type: "cross_examination",
crossExamination: {
attorneySide: "defense",
proceedingType: "trial",
questionSpecificity: "general",
experts: [
{
discipline: "biomechanics",
cvFileId: bioCV.fileId
},
{
discipline: "accident_reconstruction",
cvFileId: arCV.fileId,
depositionFileId: arDepo.fileId
}
]
}
});
console.log(`Report ID: ${response.reportId}`);
File Purpose Values
When uploading expert documents, use these purpose values:
| Purpose | Go Constant | Description |
|---|---|---|
cross_exam_expert_cv | FilePurposeCrossExamCV | Expert curriculum vitae or resume |
cross_exam_expert_deposition | FilePurposeCrossExamDeposition | Expert deposition transcript |
Errors
| Code | Description |
|---|---|
INVALID_ARGUMENT | Invalid parameters, missing required fields, or wrong file purposes |
NOT_FOUND | Case or file IDs not found |
PERMISSION_DENIED | Files or case not accessible by this account |
RESOURCE_EXHAUSTED | Rate limit exceeded |
UNAUTHENTICATED | Invalid or missing API key |
Next Steps
After creating a report, poll for completion:
- Get Result - Check status and download results