# Ango Export Format

<figure><picture><source srcset="https://angohub-docs-assets.s3.eu-central-1.amazonaws.com/cover/ango-export-format-dark.png" media="(prefers-color-scheme: dark)"><img src="https://angohub-docs-assets.s3.eu-central-1.amazonaws.com/cover/ango-export-format.png" alt=""></picture><figcaption></figcaption></figure>

Ango Hub exports annotations in its own JSON-based format.

An export is, at its core, an array of assets. Each asset, in turn, contains metadata about itself, plus an object representing the labeling task that was exported.

Each task, in turn, other than metadata about the task itself such as its review status, also contains the actual [object annotation data](/data/importing-and-exporting-annotations/exporting-annotations/ango-export-format/asset/task/tools.md), such as X and Y coordinates of a bounding box, answers to classification questions, relations, and more.

Our export format was created with the main goal of being easy to convert from. Our philosophy is to provide the user with the most control possible over their annotations.

By design, our export format is a malleable one, built to be easy to parse and understand at a first glance, so that you can get to converting it to whatever format you need as quickly as possible.

## General Structure of the Ango Export Format

```json
[
    {
        "asset": "URL of the asset file.",
        "assetId": "Unique ID of the asset.",
        ...
        "task": {
            "taskId": "Unique ID of the task.",
            ...
            "tools": [{...}, {...}, {...}],
            "classifications": [{...}, {...}, {...}],
            "relations": : [{...}, {...}, {...}],
            "brushDataUrl": "",
            "medicalBrushDataUrl": "",
            "stageHistory": [
                {
                    "stage": "Completed workflow stage name.",
                    "stageId": "Completed workflow stage ID.",
                    ...
                    "tools": [{...}, {...}, {...}],
                    "classifications": [{...}, {...}, {...}],
                    "relations": : [{...}, {...}, {...}],
                    "brushDataUrl": "",
                    "medicalBrushDataUrl": "",
                }
            ]
        }
    },
    {
        "asset": "URL of the asset file.",
        "assetId": "Unique ID of the asset.",
        ...
    },
    {
        "asset": "URL of the asset file.",
        "assetId": "Unique ID of the asset.",
        ...
    }
]
```

{% hint style="info" %}
**See also**

[Asset](/core-concepts/assets.md), [Task](/core-concepts/tasks.md), [Tools](/labeling/labeling-tools/tools.md), [Classifications](/labeling/labeling-tools/classification-tools.md), [Relations](/labeling/labeling-tools/relation.md), [Stage History](/core-concepts/stage-history.md), [Brush](/labeling/labeling-tools/tools/brush-bucket.md), [Voxel Brush](/labeling/labeling-tools/tools/voxel-brush.md)
{% endhint %}

## Complete Ango Export Format Specification

```json
[
    {
        "asset": "URL of the asset file.",
        "assetId": "Unique ID of the asset.",
        "externalId": "External ID of the asset.",
        "metadata": {
            "<Asset Metadata>": ""
        },
        "batches": [
            "List of batch names assigned to this asset."
        ],
        "task": {
            "taskId": "Unique ID of the task.",
            "type": "Task type.",
            "stage": "Current workflow stage name.",
            "stageId": "Current workflow stage ID.",
            "updatedAt": "Last update timestamp.",
            "updatedBy": "Email of the user who last updated the task.",
            "totalDuration": "Total time spent on the task in milliseconds.",
            "duration": "Time spent in the current stage in milliseconds.",
            "totalIdleDuration": "Total idle time in milliseconds.",
            "totalBlurDuration": "Total blur time in milliseconds.",
            "tools": [
                {
                    "<tool-type>": {
                        "The annotation coordinates and tool-specific properties.": ""
                    },
                    "objectId": "Unique ID of the annotation object.",
                    "schemaId": "Schema ID of the annotation class.",
                    "title": "Annotation class name.",
                    "classifications": [
                        "Nested classifications related to this annotation."
                    ],
                    "metadata": {
                        "createdAt": "Creation timestamp.",
                        "createdBy": "Email of the user who created the annotation."
                    }
                }
            ],
            "classifications": [
                {
                    "objectId": "Unique ID of the classification object.",
                    "schemaId": "Schema ID of the classification.",
                    "tool": "Classification tool type.",
                    "title": "Classification name.",
                    "answer": "Selected or entered answer. (String or List)",
                    "classifications": [
                        "Nested classifications, if available."
                    ],
                    "metadata": {
                        "createdAt": "Creation timestamp.",
                        "createdBy": "Email of the user who created the classification."
                    }
                }
            ],
            "relations": [
                {
                    "objectId": "Unique ID of the relation object.",
                    "schemaId": "Schema ID of the relation.",
                    "title": "Relation name.",
                    "group": [
                        "Object IDs included in the relation."
                    ],
                    "metadata": {
                        "createdAt": "Creation timestamp.",
                        "createdBy": "Email of the user who created the relation."
                    }
                }
            ],
            "brushDataUrl": "URL of brush annotation data, if available.",
            "medicalBrushDataUrl": "URL of medical brush annotation data, if available.",
            "stageHistory": [
                {
                    "stage": "Completed workflow stage name.",
                    "stageId": "Completed workflow stage ID.",
                    "duration": "Time spent in this stage in milliseconds.",
                    "idleDuration": "Idle time in this stage in milliseconds.",
                    "blurDuration": "Blur time in this stage in milliseconds.",
                    "completedAt": "Stage completion timestamp.",
                    "completedBy": "Email of the user who completed the stage.",
                    "tools": [
                        "Tools submitted in this stage."
                    ],
                    "classifications": [
                        "Classifications submitted in this stage."
                    ],
                    "relations": [
                        "Relations submitted in this stage."
                    ],
                    "brushDataUrl": "Brush data URL, if available.",
                    "medicalBrushDataUrl": "Medical brush data URL, if available.",
                    "taskHistory": {
                        "_id": "Internal task history ID."
                    }
                }
            ]
        }
    }
]
```

## Sample Export File

<details>

<summary>Sample Full Export</summary>

{% file src="/files/tjOMAnliyGp9260RFmNO" %}

</details>


---

# Agent Instructions: Querying This Documentation

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

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.imerit.net/data/importing-and-exporting-annotations/exporting-annotations/ango-export-format.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
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.
