Import, organize, and manage evidence files. All evidence is stored locally on your machine with full chain-of-custody logging.
/api/v1/evidence/importImport an evidence file into FrameCounsel. Supports video (MP4, MOV, AVI, MKV), audio (WAV, MP3, M4A), images (JPEG, PNG, TIFF), and documents (PDF, DOCX). Files are hashed (SHA-256) on import for chain-of-custody integrity.
| Name | Type | Required | Description |
|---|---|---|---|
caseId | string | Optional | Associate evidence with a specific case. If omitted, evidence is added to the default workspace. |
tags | string[] | Optional | Array of tags to apply to the evidence (e.g., ["bodycam", "officer-smith"]). |
{
"filePath": "/path/to/evidence/bodycam-2024-03-15.mp4",
"caseId": "case-2024-00142",
"tags": ["bodycam", "officer-jones", "traffic-stop"],
"metadata": {
"source": "Police Department Discovery",
"receivedDate": "2024-03-20",
"officerBadge": "4521"
}
}{
"id": "ev-a1b2c3d4",
"status": "imported",
"filePath": "/path/to/evidence/bodycam-2024-03-15.mp4",
"sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855",
"fileSize": 1048576000,
"mimeType": "video/mp4",
"duration": 3847.5,
"caseId": "case-2024-00142",
"tags": ["bodycam", "officer-jones", "traffic-stop"],
"importedAt": "2024-03-20T14:30:00Z",
"chainOfCustody": {
"entries": [
{
"action": "IMPORTED",
"timestamp": "2024-03-20T14:30:00Z",
"hash": "e3b0c44298fc1c149afbf4c8996fb924..."
}
]
}
}| Code | Description |
|---|---|
400 | Invalid file path or unsupported file format. |
404 | File not found at the specified path. |
409 | File with identical SHA-256 hash already exists. |
413 | File exceeds maximum import size. |
500 | Internal error during file import. |
/api/v1/evidenceList all evidence files in your local FrameCounsel instance. Supports filtering by case, tags, file type, and date range.
| Name | Type | Required | Description |
|---|---|---|---|
caseId | string | Optional | Filter evidence by case ID. |
tags | string | Optional | Comma-separated list of tags to filter by. |
type | string | Optional | Filter by file type: "video", "audio", "image", "document". |
limit | number | Optional | Maximum number of results to return (default: 50, max: 200). |
offset | number | Optional | Number of results to skip for pagination. |
{
"evidence": [
{
"id": "ev-a1b2c3d4",
"filename": "bodycam-2024-03-15.mp4",
"mimeType": "video/mp4",
"fileSize": 1048576000,
"duration": 3847.5,
"caseId": "case-2024-00142",
"tags": ["bodycam", "officer-jones"],
"sha256": "e3b0c44298fc1c149afbf4c...",
"importedAt": "2024-03-20T14:30:00Z"
}
],
"total": 42,
"limit": 50,
"offset": 0
}| Code | Description |
|---|---|
400 | Invalid query parameters. |
500 | Internal server error. |
/api/v1/evidence/:idGet detailed information about a specific evidence file, including metadata, analysis status, and associated case information.
| Name | Type | Required | Description |
|---|---|---|---|
id | string | Required | The unique evidence ID (e.g., "ev-a1b2c3d4"). |
{
"id": "ev-a1b2c3d4",
"filename": "bodycam-2024-03-15.mp4",
"filePath": "/evidence/bodycam-2024-03-15.mp4",
"mimeType": "video/mp4",
"fileSize": 1048576000,
"duration": 3847.5,
"resolution": "1920x1080",
"fps": 30,
"codec": "h264",
"caseId": "case-2024-00142",
"tags": ["bodycam", "officer-jones"],
"sha256": "e3b0c44298fc1c149afbf4c...",
"importedAt": "2024-03-20T14:30:00Z",
"analyses": [
{
"id": "an-x9y8z7",
"type": "transcription",
"status": "completed"
}
]
}| Code | Description |
|---|---|
404 | Evidence not found with the specified ID. |
500 | Internal server error. |
/api/v1/evidence/:idRemove an evidence file from FrameCounsel. This action is logged in the chain of custody. The original file on disk is not deleted unless explicitly requested.
| Name | Type | Required | Description |
|---|---|---|---|
id | string | Required | The unique evidence ID to remove. |
deleteFile | boolean | Optional | If true, also delete the original file from disk. Default: false. |
{
"id": "ev-a1b2c3d4",
"status": "removed",
"fileDeleted": false,
"removedAt": "2024-04-01T09:15:00Z",
"chainOfCustody": {
"action": "REMOVED",
"timestamp": "2024-04-01T09:15:00Z",
"reason": "API request"
}
}| Code | Description |
|---|---|
404 | Evidence not found with the specified ID. |
409 | Evidence is currently being analyzed and cannot be removed. |
500 | Internal server error. |
/api/v1/evidence/:id/chain-of-custodyGet the complete chain-of-custody log for an evidence file. Every action (import, view, analysis, export) is cryptographically logged with timestamps and SHA-256 verification.
| Name | Type | Required | Description |
|---|---|---|---|
id | string | Required | The unique evidence ID. |
{
"evidenceId": "ev-a1b2c3d4",
"filename": "bodycam-2024-03-15.mp4",
"originalHash": "e3b0c44298fc1c149afbf4c...",
"currentHash": "e3b0c44298fc1c149afbf4c...",
"integrityVerified": true,
"entries": [
{
"action": "IMPORTED",
"timestamp": "2024-03-20T14:30:00Z",
"hash": "e3b0c44298fc1c149afbf4c...",
"details": "File imported from /discovery/bodycam.mp4"
},
{
"action": "ANALYZED",
"timestamp": "2024-03-20T15:00:00Z",
"hash": "e3b0c44298fc1c149afbf4c...",
"details": "Transcription analysis started"
},
{
"action": "EXPORTED",
"timestamp": "2024-03-21T10:00:00Z",
"hash": "e3b0c44298fc1c149afbf4c...",
"details": "Report exported as PDF"
}
]
}| Code | Description |
|---|---|
404 | Evidence not found with the specified ID. |
500 | Internal server error. |