> For the complete documentation index, see [llms.txt](https://docs.imerit.net/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.imerit.net/3d-multi-sensor-fusion/3d-msf-ango-export-format-documentation-1.md).

# 3D MSF Ango Export - Format Documentation

This folder documents an annotation export from **iMerit Ango Hub** for a **3D LiDAR point-cloud labeling** task. It is organised in three parts:

* **Everything in** `export.json` - the primary annotation file.

**Reference docs:**

* [Exporting annotations](https://docs.imerit.net/data/importing-and-exporting-annotations/exporting-annotations)
* [Ango export format](https://docs.imerit.net/data/importing-and-exporting-annotations/exporting-annotations/ango-export-format)

## Everything in export.json <a href="#part-1-everything-in-export.json" id="part-1-everything-in-export.json"></a>

`export.json` is the **Ango Export Format** file. It is a **JSON array**, where each element is one **asset** (one source point cloud). This file has **1 asset**.

### Asset-level keys <a href="#id-1.1-asset-level-keys" id="id-1.1-asset-level-keys"></a>

| Key           | Meaning                                                            |
| ------------- | ------------------------------------------------------------------ |
| `asset`       | Path/URL of the source asset (the point-cloud folder).             |
| `assetId`     | Unique Ango ID of the asset.                                       |
| `externalId`  | Your own ID for the asset (here the source filename hash).         |
| `contextData` | Custom context passed in at import time (Not used in PCT).         |
| `metadata`    | Custom asset-level key/value pairs (not used in PCT).              |
| `batches`     | Names of batches the asset belongs to                              |
| `task`        | The main object holding all annotations + workflow data (see 1.2). |

### The task object <a href="#id-1.2-the-task-object" id="id-1.2-the-task-object"></a>

| Key                                    | Meaning                                                                                   |
| -------------------------------------- | ----------------------------------------------------------------------------------------- |
| `taskId`                               | Unique ID of the task.                                                                    |
| `type`                                 | Task category (`default`).                                                                |
| `stage` / `stageId`                    | Current workflow stage (`Complete`).                                                      |
| `updatedAt`                            | Timestamp of last change.                                                                 |
| `updatedBy`                            | Email of the last user to edit the task.                                                  |
| `totalDuration`                        | Total working time on the task, in **milliseconds**.                                      |
| `duration`                             | Time spent in the current stage, in ms.                                                   |
| `totalIdleDuration`                    | Total idle time, in ms.                                                                   |
| `rawPctExport`                         | **Signed S3 URL to the raw download** (`deliverables.zip`). This is the bridge to Part 2. |
| `tools`                                | Array of **annotation objects** -the actual labels (see 1.4).                             |
| `classifications`                      | **Frame-level** classifications about the whole scene (see 1.3).                          |
| `relations`                            | Relationships/links between objects (e.g. tracking)                                       |
| `brushDataUrl` / `medicalBrushDataUrl` | Not required in PCT                                                                       |
| `stageHistory`                         | Snapshots of the annotations at the end of each workflow stage (see 1.6).                 |

### task.classifications\[] - frame-level attributes <a href="#id-1.3-task.classifications-frame-level-attributes" id="id-1.3-task.classifications-frame-level-attributes"></a>

Answered once for the whole frame/asset (not per object).

| title          | tool              | Example answer |
| -------------- | ----------------- | -------------- |
| `is_dusty`     | `single-dropdown` | `["None"]`     |
| `Image Status` | `single-dropdown` | `["None"]`     |

### tools\[] - one entry per annotated object <a href="#id-1.4-tools-one-entry-per-annotated-object" id="id-1.4-tools-one-entry-per-annotated-object"></a>

| Key               | Meaning                                                                         |
| ----------------- | ------------------------------------------------------------------------------- |
| `objectId`        | Unique ID (UUID) of this annotation object.                                     |
| `title`           | Label class name (`Tall Weeds`, `Trees`, `Immovable Objects`).                  |
| `schemaId`        | ID of the **class/label schema** this object belongs to.                        |
| `markingTool`     | The drawing tool used (`Brush Sphere` or `Polygon` or `Cuboid` or `Rectangle`). |
| `page`            | Frame/page index within the asset (`"1"`).                                      |
| `metadata`        | Per-object metadata (creation info).                                            |
| `classifications` | Per-object attributes (see 1.4.1).                                              |
| `pct`             | The annotation payload incl. geometry (see 1.5).                                |

#### **classifications\[] (per-object attributes)**

| Key        | Meaning                                 | Example                                              |
| ---------- | --------------------------------------- | ---------------------------------------------------- |
| `schemaId` | Schema ID of this attribute.            | -                                                    |
| `tool`     | Attribute input type.                   | `boolean`, `single-dropdown`                         |
| `title`    | Attribute name.                         | `is_truncated`, `occlusion`, `location`              |
| `answer`   | The selected value(s), always an array. | `[false]`, `["none"]`, `["In-field Driveable area"]` |

### The pct payload (depends on object\_type) <a href="#id-1.5-the-pct-payload-depends-on-object_type" id="id-1.5-the-pct-payload-depends-on-object_type"></a>

**Common keys (all object types):**

| Key                                                               | Meaning                                                                                                                               |
| ----------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------- |
| `label`                                                           | Schema ID of the object's class (matches `schemaId`).                                                                                 |
| `_id`                                                             | Composite key: `task_<frame>_<objectId>`.                                                                                             |
| `id`                                                              | The object UUID.                                                                                                                      |
| `object_type`                                                     | Geometry type - `brush_sphere` or `polygongroup` or `cuboid` or `rectangle` or `polygon2d`.                                           |
| `identity`                                                        | Instance number for that class on the frame (1, 2, 3…).                                                                               |
| `taxonomy_attribute`                                              | `attributeSchemaId → answer` (boolean, or an **option ID** for dropdowns). Machine-readable form of the per-object `classifications`. |
| `image` - only applicable for `rectangle`and `polygon2d`          | imagename.jpg or png                                                                                                                  |
| `reference_folder`-only applicable for `rectangle`and `polygon2d` | image folder name                                                                                                                     |

`polygongroup` **only:**

| Key           | Meaning                                                                                                                                                               |
| ------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `position`    | Group origin `[x, y, z]`.                                                                                                                                             |
| `orientation` | Group rotation quaternion `[x, y, z, w]`.                                                                                                                             |
| `points[]`    | Ordered polygon vertices, each `{ "position": { x, y, z } }`. Coordinates are in the tool's normalized plane (z ≈ 0), projected into 3D via `position`/`orientation`. |

`cuboid` **only:**

| Key           | Meaning                                                                 |
| ------------- | ----------------------------------------------------------------------- |
| `position`    | Group origin `[x, y, z]`.                                               |
| `orientation` | Group rotation quaternion `[x, y, z, w]`.                               |
| `dimension`   | Group measurement \[width, height, depth], or in 3D space as \[x, y, z] |

`rectangle` **only:**

| Key             | Meaning                                                                                     |
| --------------- | ------------------------------------------------------------------------------------------- |
| `coordinates[]` | Array of points defining a shape or position in 2D space or image, each with x and y values |

`polygon2d` **only:**

| Key             | Meaning                                                                                     |
| --------------- | ------------------------------------------------------------------------------------------- |
| `coordinates[]` | Array of points defining a shape or position in 2D space or image, each with x and y values |

### stageHistory\[] - workflow audit trail <a href="#id-1.6-stagehistory-workflow-audit-trail" id="id-1.6-stagehistory-workflow-audit-trail"></a>

Each element is a snapshot of one stage (`Start → Label → … → Complete`).

| Key                                       | Meaning                                                                                |
| ----------------------------------------- | -------------------------------------------------------------------------------------- |
| `stage` / `stageId`                       | Stage name/ID.                                                                         |
| `duration` / `idleDuration`               | Time (ms) spent / idle in that stage.                                                  |
| `completedAt` / `completedBy`             | When and by whom the stage was finished.                                               |
| `tools` / `classifications` / `relations` | Snapshot of the annotations as they were at the end of that stage (same shape as 1.4). |
| `brushDataUrl` / `medicalBrushDataUrl`    | Not required for PCT                                                                   |
| `taskHistory`                             | Internal reference (`_id`) to that stage's stored state.                               |


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation by asking a question.

Perform an HTTP GET request on the following URL with the `ask` and `goal` query parameters:

```
GET https://docs.imerit.net/3d-multi-sensor-fusion/3d-msf-ango-export-format-documentation-1.md?ask=<question>&goal=<user_goal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is what the user is ultimately trying to achieve, the reason they need the answer. Sharing it helps GitBook give you a better, more relevant answer. A goal is most helpful when it describes the outcome the user wants rather than restating the question. For example, with `ask=how do I create an API token`, a goal like `automate deployments from our CI pipeline` lets GitBook tailor the answer to that use case.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
