Import JSON data into an investigation
Osintracker lets you import entities and relationships into an existing investigation from CSV or JSON files. This feature is available from the investigation's information panel.
Access the import
- Open your investigation
- Make sure no element is selected so the information panel is shown
- Open the panel's ⋮ menu → Entities & relationships section, and choose either Import
.jsonor Import.csv
The ⋮ menu is at the top of the investigation's information panel (right side panel, nothing selected). JSON and CSV are two separate Import entries — each tagged with its format.
JSON format
The JSON format lets you import entities and relationships in a single file.
File structure
{
"entities": [ ... ],
"relations": [ ... ]
}Entity structure
{
"id": "unique-identifier",
"typeId": "entity-type-id",
"value": "the entity's main value",
"colorNum": "2",
"comments": "Notes about this entity",
"countryCode": "FR",
"critical": false,
"creationDate": 1700000000000,
"nodeSize": "M",
"progress": "question",
"rating": "2"
}| Field | Type | Required | Description |
|---|---|---|---|
id | string | Yes | Unique identifier |
typeId | string | Yes | Entity type ID (from the Types selector / Entity types) |
value | string | Yes | Main displayed value |
colorNum | string | No | Color number (1–8) |
comments | string | No | Free notes |
countryCode | string | No | ISO 2-letter country code |
critical | boolean | No | Marks as critical |
creationDate | number | No | Timestamp in ms since epoch |
nodeSize | string | No | "S", "M" or "L" |
progress | string | No | Badge: "done", "exclamation", "false-positive", "question", "stop", "wait" |
rating | string | No | "0" to "3" |
editionDate | number | No | Timestamp in ms of the last edit |
position | object | No | { "x": number, "y": number } — node position on the graph |
url | string | No | Associated URL |
image | string | No | Image URL displayed on the node |
imageDisplay | boolean | No | Whether the image is shown on the node |
customIcon | string | No | Custom icon identifier |
Relationship structure
{
"id": "unique-relationship-identifier",
"originId": "source-entity-id",
"targetId": "target-entity-id",
"label": "Relationship text",
"critical": false,
"bidirectional": false,
"creationDate": 1700000000000,
"rating": 2,
"source": "Source of the information",
"comments": "Notes about this relationship"
}| Field | Type | Required | Description |
|---|---|---|---|
id | string | Yes | Unique identifier |
originId | string | Yes | Source entity ID |
targetId | string | Yes | Target entity ID |
label | string | No | Label shown on the edge |
critical | boolean | No | Critical relationship (red) |
bidirectional | boolean | No | Two-way |
creationDate | number | No | Timestamp in ms |
rating | number | No | 0 to 3 |
source | string | No | Origin of the information |
resource | string | No | Resource / reference |
colorNum | string | No | Color number (1–8) |
editionDate | number | No | Timestamp in ms of the last edit |
comments | string | No | Free notes |
Temporal fields
startDate,endDate,startTimeandendTime(numeric timestamps) are also accepted.
Duplicate IDs
The id of every imported entity and relationship must be unique and not already present in the investigation.
- If an imported
idalready exists in the investigation, or appears twice in the same file, the import is blocked and the wizard shows an error for each conflict — nothing is imported until you resolve it. - Use fresh, unique identifiers (e.g. UUIDs) for new elements.
Re-importing a whole investigation is different: the
.osintrackerinvestigation import does handle ID conflicts automatically by importing an independent copy with reassigned IDs. See Import & Export.
CSV format
CSV lets you import entities and relationships separately (two distinct files).
Comma-delimited (,) is recommended. The delimiter is auto-detected, so semicolon- or tab-separated files usually work too.
Boolean columns (
critical,bidirectional) accepttrue/false(and alsoyes/1).
Columns for entities
| Column | Required | Description |
|---|---|---|
id | Yes | Unique identifier |
value | Yes | Main value |
typeId | Yes | Type ID (via the types selector) |
colorNum | No | Color number |
creationDate | No | Timestamp in ms |
critical | No | true / false |
editionDate | No | Timestamp in ms |
rating | No | 0 to 3 |
countryCode | No | ISO 2-letter country code |
nodeSize | No | S, M or L |
progress | No | Badge (see JSON progress values) |
comments | No | Notes |
Columns for relationships
| Column | Required | Description |
|---|---|---|
id | Yes | Unique identifier |
originId | Yes | Source entity ID |
targetId | Yes | Target entity ID |
creationDate | No | Timestamp in ms |
editionDate | No | Timestamp in ms |
label | No | Label |
critical | No | true / false |
bidirectional | No | true / false |
colorNum | No | Color number |
rating | No | 0 to 3 |
startDate | No | Start date |
endDate | No | End date |
source | No | Source |
resource | No | Resource / reference |
comments | No | Notes |
Rows that are missing a required column (
id,value/typeIdfor entities,originId/targetIdfor relationships) are ignored, and the wizard reports how many were skipped.
Finding type IDs
To find a type's typeId, use the types selector, available from:
Main menu → Types selector
Select the desired type(s) (Ctrl+Click to select several), then copy the generated text to use in your CSV or JSON files.