SuperAnnotate Docs

Vector JSON

The explanation will be based on the following example:

Annotation JSON in the Vector tool contains four main fields:

{
    "metadata": {},
    "instances": [],
    "tags": [],
    "comments": []
}

📘

The fields in bold in the description sections are mandatory.

Metadata

{
  "metadata": {
    "lastAction": {
      "email": "[email protected]",
      "timestamp": 1610622159937
    },
    "width": 1920,
    "height": 1080,
    "name": "94573794",
    "projectId": 9425,
    "isPredicted": false,
    "qaEmail": [email protected],
    "annotatorEmail": [email protected],
    "status": "Returned",
    "pinned": false
  }

Description:

  • “lastAction” : The user who last edited the image. Edits include changing the class of an instance, adding or deleting attributes, adding point labels, approving or disapproving instances, and moving or scaling instances.
    • “email” : The email address of the last user who added or edited an instance.
    • “timestamp” : The date and time when the last instance edit was made.
  • "width": - The image’s width.
  • "height": - The image’s height.
  • "name": - The name of the image.
  • "projectId": - The project ID.
  • "isPredicted": - If it’s true, then Smart Prediction was run on the image. If it’s false, then Smart Prediction was not run on the image.
  • "qaEmail": - The QA’s email address.
  • "annotatorEmail": - The annotator's email address.
  • "status": - The image status. It can be: Not Started, In Progress, Quality Check, Returned, Skipped, or Completed.
  • "pinned": - If it’s true, then the image is pinned. If it’s false, then the image isn’t pinned.

Comments

{
      "correspondence": [
        {
          "text": "Fix this",
          "email": "[email protected]"
        }
      ],
      "x": 987.98,
      "y": 722.87,
      "resolved": false,
      "createdAt": "2021-01-14T07:34:00.695Z",
      "createdBy": {
        "email": "[email protected]",
        "role": "Admin"
      },
      "creationType": "Manual",
      "updatedAt": "2021-01-14T07:34:04.783Z",
      "updatedBy": {
        "email": "[email protected]",
        "role": "Admin"
      }
    }

Description:

  • "correspondence" : list_of_dicts - List of messages in the comment.
    • "text" : The comment.
    • "email" : The email address of the user who wrote the comment.
  • “x” : int - X position of the comment on the image.
  • “y” : int - Y position of the comment on the image.
  • “resolved” : If it’s true, then the comment is resolved. If it’s false, then the comment is not resolved.
  • “created at” : The date and time when the comment was created.
  • “created by” : The user who created the comment.
    • “email” : The email of the user who created the comment.
    • “role” : The role of the user who created the comment.
  • “creation type” : If it’s Manual, then the comment was created manually. If it’s Pre-Annotation, then the comment was imported with Python SDK.
  • “updated at” : The time the comment was updated.
  • “updated by” : The user who last updated the comment.
    • “email” : The email address of the user who last updated the comment.
    • “role” : The role of the user who last updated the comment.

Tags

[
    "Shapes",
    "Vector"
  ]

Description:

  • “Shapes” : The tag name.

Instances

Polyline and polygon

{
      "type": "polygon",
      "classId": 347069,
      "className":"pentagon",
      "probability": 100,
      "points": [],
      "groupId": 0,
      "pointLabels": {},
      "locked": false,
      "visible": true,
      "attributes": [
        {
          "id": 655170,
          "groupId": 163382,
          "name":"Green",
          "groupName":"Color"
        }
      ],
      "trackingId": null,
      "error": null,
      "createdAt": "2020-10-22T07:26:54.441Z",
      "createdBy": {
        "email": "[email protected]",
        "role": "Admin"
      },
      "creationType": "Manual",
      "updatedAt": "2021-01-14T11:02:20.097Z",
      "updatedBy": {
        "email": "[email protected]",
        "role": "Admin"
      }
    }

Description:

  • “type” : “polygon” - The dictionary is a polygon.
  • “classId” : int - Class ID (one of the class IDs in“classes.json”)
  • "className" : - Class name
  • “probability” : float - Polygon prediction. If the annotator created the polygon, then the probability value is 100.
  • “points” : list - Points of the polygon. The list of floats is: [x0, y0, x1, y1, ….. xN, yN].
  • “groupId” : int - Group ID of instances
  • “pointLabels” : dict - The keys are from “0” to “N” where a polygon has N+1 vertices.
  • “locked” : bool - If it’s true, you will not be able to move the instance. If it’s false, you will be able to move the instance.
  • “visible” : bool - If it’s true, you’ll be able to see the annotations on the canvas.
  • “attributes” : list_of_dicts - List of attributes for this polygon.
    • “id” : int - Attribute ID (must be in “classes.json”)
    • “groupId” : int - Group ID (must be in “classes.json”)
    • "name" : str - Attribute name
    • "groupName" : str - Group name
  • “trackingId” : - The ID of a duplicated instance.
  • “error” : - If the instance is approved, then it’s false. If it’s disapproved, then it’s true. If you approve or disapprove an instance then undo the action, then it’s null. If the instance is neither approved nor disapproved, then error won’t appear in JSON.
  • “createdAt” : The date and time when the instance was created.
  • “createdBy” : The user who created the instance.
    • “email” : The email address of the user who created the instance.
    • “role” : The role of the user who created the instance.
  • “creationType” : If it’s Manual, then the instance was created manually. If it’s Prediction, the instance was created with the Smart Prediction feature. If it’s Pre-Annotation, then the instance was created with Python SDK.
  • “updatedAt” : The date and time when the instance was updated.
  • “updatedBy” : The user who updated the instance.
    • “email” : The email address of the user who updated the instance.
    • “role” : The role of the user who updated the instance.

Bounding box and rotated bounding box

{
      "type": "bbox",
      "classId": 347295,
      "className": "Square",
      "probability": 100,
      "points": {
        "x1": 104.73,
        "x2": 549.82,
        "y1": 137.45,
        "y2": 377.45
      },
      "groupId": 0,
      "pointLabels": {},
      "locked": false,
      "visible": true,
      "attributes": [
        {
          "id": 655168,
          "groupId": 163390,
          "name":"Purple",
          "groupName":"Color"
        }
      ],
      "trackingId": null,
      "error": null,
      "createdAt": "2020-10-22T07:24:51.287Z",
      "createdBy": {
        "email": "[email protected]",
        "role": "Admin"
      },
      "creationType": "Manual",
      "updatedAt": "2021-01-14T11:01:48.565Z",
      "updatedBy": {
        "email": "[email protected]",
        "role": "Admin"
      }
    }

Description:

  • “type” : “bbox” - The dictionary is a bounding box.
  • “classId” : int - Class ID (one of the class IDs in“classes.json”)
  • "className" : - Class name
  • “probability” : float - Bounding box prediction. If the annotator created the bounding box, then the probability value is 100.
  • “points” : list - Points of the bounding box. The list of floats is: "x1, y1" for the left upper corner, and "x2, y2" for the right lower corner.
  • “groupId” : int - Group ID of instances
  • “pointLabels” : dict - The keys are from “0” to “7” for the 8 vertices of the bounding box.
  • “locked” : bool - If it’s true, you won’t be able to move the object on the canvas.
  • “visible” : bool - If it’s true, you’ll be able to see the annotations on the canvas.
  • “attributes” : list_of_dicts - List of attributes for this bounding box.
    • “id” : int - Attribute ID (must be in “classes.json”)
    • “groupId” : int - Group ID (must be in “classes.json”)
    • "name" : str - Attribute name
    • "groupName" : str - Group name
  • “trackingId” : - The ID of a duplicated instance.
  • “error” : - If the instance is approved, then it’s false. If it’s disapproved, then it’s true. If you approve or disapprove an instance then undo the action, then it’s null. If the instance is neither approved nor disapproved, then error won’t appear in JSON.
  • “createdAt” : The date and time when the instance was created.
  • “createdBy” : The user who created the instance.
    • “email” : The email address of the user who created the instance.
    • “role” : The role of the user who created the instance.
  • “creationType” : If it’s Manual, then the instance was created manually. If it’s Prediction, the instance was created with the Smart Prediction feature. If it’s Pre-Annotation, then the instance was created with Python SDK.
  • “updatedAt” : The date and time when the instance was updated.
  • “updatedBy” : The user who updated the instance.
    • “email” : The email address of the user who updated the instance.
    • “role” : The role of the user who updated the instance.

Template

{
      "type": "template",
      "classId": 347296,
      "className": "Cuboid",
      "probability": 100,
      "points": [
        {
          "id": 1,
          "x": 712.5123693292791,
          "y": 141.81817626953125
        },
        {
          "id": 2,
          "x": 709.0908813476562,
          "y": 456
        },
        {
          "id": 3,
          "x": 1153.8843189586291,
          "y": 452.69282290810036
        },
        {
          "id": 4,
          "x": 1095.7190232710404,
          "y": 356.7846872430099
        },
        {
          "id": 5,
          "x": 1095.7190232710404,
          "y": 217.8832493832237
        },
        {
          "id": 6,
          "x": 1160.727294921875,
          "y": 145.1253533614309
        }
      ],
      "connections": [
        {
          "id": 1,
          "from": 1,
          "to": 6
        },
        {
          "id": 2,
          "from": 1,
          "to": 2
        },
        {
          "id": 3,
          "from": 2,
          "to": 3
        },
        {
          "id": 4,
          "from": 6,
          "to": 3
        },
        {
          "id": 5,
          "from": 3,
          "to": 4
        },
        {
          "id": 6,
          "from": 4,
          "to": 5
        },
        {
          "id": 7,
          "from": 5,
          "to": 6
        }
      ],
      "groupId": 0,
      "pointLabels": {},
      "locked": false,
      "visible": true,
      "attributes": [
        {
          "id": 655167,
          "groupId": 163391
          "name":"Blue"
          "groupName":"Color"
        }
      ],
      "templateId": 1641,
      "trackingId": null,
      "error": null,
      "createdAt": "2020-10-22T07:27:57.641Z",
      "createdBy": {
        "email": "[email protected]",
        "role": "Admin"
      },
      "creationType": "Manual",
      "updatedAt": "2021-01-14T11:02:39.937Z",
      "updatedBy": {
        "email": "[email protected]",
        "role": "Admin"
      }
    }

Description:

  • “type” : “template” - The dictionary is a template.
  • “classId” : int - Class ID (one of the class IDs in “classes.json”)
  • "className" : - Class name
  • “probability” : float - Template prediction. If the annotator created the template, then the probability value is 100.
  • “points”: - List of 6 dictionaries {“id”: int, “x”: float, “y”: float}.
  • “connections” - List of 7 connections {“id”: int, “from”: int, “to”: int}.
  • “groupId” : int - Group ID of instances
  • “pointLabels” : dict - The keys are numbers that range from 0 to 21, and the values are human body points. The default point is the nose: {“0”: “Nose”}.
  • “locked” : bool - If it’s true, you won’t be able to move the object on the canvas.
  • “visible” : bool - If it’s true, you’ll be able to see the annotations on the canvas.
  • “attributes” : list_of_dicts - List of attributes for this template.
    • “id” : int - Attribute ID (must be in the “classes.json”)
    • “groupId” : int - Group ID (must be in the “classes.json”)
    • "name" : str - Attribute name
    • "groupName" : str - Group name
  • “templateId”: int - The ID of the human pose template is 402.
  • “trackingId”: int - The ID of a duplicated instance.
  • “error” : - If the instance is approved, then it’s false. If it’s disapproved, then it’s true. If you approve or disapprove an instance then undo the action, then it’s null. If the instance is neither approved nor disapproved, then error won’t appear in JSON.
  • “className” : str - Class name (one of the class names in “classes.json”)
  • “createdAt” : The date and time when the instance was created.
  • “createdBy” : The user who created the instance.
    • “email” : The email address of the user who created the instance.
    • “role” : The role of the user who created the instance.
  • “creationType” : If it’s Manual, then the instance was created manually. If it’s Prediction, the instance was created with the Smart Prediction feature. If it’s Pre-Annotation, then the instance was created with Python SDK.
  • “updatedAt” : The date and time when the instance was updated.
  • “updatedBy” : The user who updated the instance.
    • “email” : The email address of the user who updated the instance.
    • “role” : The role of the user who updated the instance.

Point

{
      "type": "point",
      "classId": 347297,
      "className": "Point",
      "probability": 100,
      "x": 1769.45,
      "y": 425.45,
      "groupId": 0,
      "pointLabels": {},
      "locked": false,
      "visible": true,
      "attributes": [
        {
          "id": 655171,
          "groupId": 163392,
          "name": "Blue",
          "groupName": "Color"
        }
      ],
      "trackingId": null,
      "error": null,
      "createdAt": "2020-10-22T07:27:14.130Z",
      "createdBy": {
        "email": "[email protected]",
        "role": "Admin"
      },
      "creationType": "Manual",
      "updatedAt": "2021-01-14T11:02:12.113Z",
      "updatedBy": {
        "email": "[email protected]",
        "role": "Admin"
      }
    }

Description:

  • “type” : “point” - The dictionary is a point.
  • “classId” : int - Class ID (one of the class ID in “classes.json”)
  • "className" : - Class name
  • “probability” : float - Point prediction. If the annotator created the point, then the probability value is 100.
  • “x” - x-coordinate
  • “y” - y-coordinate
  • “groupId” : int - Group ID of instances
  • “pointLabels” : dict - The key is "0".
  • “locked” : bool - If it’s true, you won’t be able to move the object on the canvas.
  • “visible” : bool - If it’s true, you’ll be able to see the annotations on the canvas.
  • “attributes” : list_of_dicts - List of attributes for this polygon.
    • “id” : int - Attribute ID (must be in “classes.json”)
    • “groupId” : int - Group ID (must be in “classes.json”)
    • "name" : str - Attribute name
    • "groupName" : str - Group name
  • “trackingId” : - The ID of a duplicated instance.
  • “error” - If the instance is approved, then it’s false. If it’s disapproved, then it’s true. If you approve or disapprove an instance then undo the action, then it’s null. If the instance is neither approved nor disapproved, then error won’t appear in JSON.
  • “createdAt” : The date and time when the instance was created.
  • “createdBy” : The user who created the instance.
    • “email” : The email address of the user who created the instance.
    • “role” : The role of the user who created the instance.
  • “creationType” : If it’s Manual, then the instance was created manually. If it’s Prediction, the instance was created with the Smart Prediction feature. If it’s Pre-Annotation, then the instance was created with Python SDK.
  • “updatedAt” : The date and time when the instance was updated.
  • “updatedBy” : The user who updated the instance.
    • “email” : The email address of the user who updated the instance.
    • “role” : The role of the user who updated the instance.

Ellipse

{
      "type": "ellipse",
      "classId": 347298,
      "className": "Ellipse",
      "probability": 100,
      "cx": 377.46,
      "cy": 806.18,
      "rx": 316.36,
      "ry": 134.18,
      "angle": 0,
      "groupId": 0,
      "pointLabels": {},
      "locked": false,
      "visible": true,
      "attributes": [
        {
          "id": 655172,
          "groupId": 163393,
          "name": "Red",
          "groupName": "Color"
        }
      ],
      "trackingId": null,
      "error": null,
      "createdAt": "2020-10-22T07:26:14.637Z",
      "createdBy": {
        "email": "[email protected]",
        "role": "Admin"
      },
      "creationType": "Manual",
      "updatedAt": "2021-01-14T11:02:32.493Z",
      "updatedBy": {
        "email": "[email protected]",
        "role": "Admin"
      }
    }

Description:

  • “type” : “ellipse” - The dictionary is ellipse type.
  • “classId” : int - Class ID (one of the class IDs in the “classes.json”)
  • "className" : - Class name
  • “probability” : float - Ellipse prediction. If the annotator created the ellipse, then the probability value is 100.
  • “cx” - x-coordinate of the center
  • “cy” - y-coordinate of the center
  • “rx” - x radius
  • “ry” - y radius
  • "angle” - rotation angle
  • “groupId” : int - Group ID of instances
  • “pointLabels” : dict - The keys are numbers that range from "0" to "8", and the values are texts.
  • “locked” : bool - If it’s true, you won’t be able to move the object on the canvas.
  • “visible” : bool - If it’s true, you’ll be able to see the annotations on the canvas.
  • “attributes” : list_of_dicts - List of attributes for this polygon.
    • “id” : int - Attribute ID (must be in “classes.json”)
    • “groupId” : int - Group ID (must be in “classes.json”)
    • "name" : str - Attribute name
    • "groupName" : str - Group name
  • “trackingId” : - The ID of a duplicated instance.
  • “error” : - If the instance is approved, then it’s false. If it’s disapproved, then it’s true. If you approve or disapprove an instance then undo the action, then it’s null. If the instance is neither approved nor disapproved, then error won’t appear in JSON.
  • “createdAt” : The date and time when the instance was created.
  • “createdBy” : The user who created the instance.
    • “email” : The email address of the user who created the instance.
    • “role” : The role of the user who created the instance.
  • “creationType” : If it’s Manual, then the instance was created manually. If it’s Prediction, the instance was created with the Smart Prediction feature. If it’s Pre-Annotation, then the instance was created with Python SDK.
  • “updatedAt” : The date and time when the instance was updated.
  • “updatedBy” : The user who updated the instance.
    • “email” : The email address of the user who updated the instance.
    • “role” : The role of the user who updated the instance.

Cuboid

{
      "type": "cuboid",
      "classId": 347299,
      "className":"Cuboid",
      "probability": 100,
      "points": {
        "f1": {
          "x": 835.63,
          "y": 545.46
        },
        "f2": {
          "x": 1232.72,
          "y": 846.55
        },
        "r1": {
          "x": 1082.18,
          "y": 735.27
        },
        "r2": {
          "x": 1474.91,
          "y": 1042.91
        }
      },
      "groupId": 0,
      "pointLabels": {},
      "locked": false,
      "visible": true,
      "attributes": [
        {
          "id": 655173,
          "groupId": 163394,
          "name":"Green",
          "groupName":"Color"
        }
      ],
      "trackingId": null,
      "error": null,
      "createdAt": "2020-10-22T07:26:30.048Z",
      "createdBy": {
        "email": "[email protected]",
        "role": "Admin"
      },
      "creationType": "Manual",
      "updatedAt": "2021-01-14T11:02:26.265Z",
      "updatedBy": {
        "email": "[email protected]",
        "role": "Admin"
      }
    }

Description:

  • “type” : “cuboid” - The dictionary is a cuboid.
  • “classId” : int - Class ID (one of the class IDs in “classes.json”)
  • "className" : - Class name
  • “probability” : float - Cuboid prediction. If the annotator created the cuboid, then the probability value is 100.
  • “points”: - “f1” and “f2” are front box points with “x” and “y” coordinates, and “r1” and “r2” are rear box points with “x” and “y” coordinates.
  • “groupId” : int - Group ID of instances
  • “pointLabels” : dict - The keys are numbers that range from "0" to "8", and the values are texts.
  • “locked” : bool - If it’s true, you won’t be able to move the object on the canvas.
  • “visible” : bool - If it’s true, you’ll be able to see the annotations on the canvas.
  • “attributes” : list_of_dicts - List of attributes for this cuboid.
    • “id” : int - Attribute ID (must be in “classes.json”)
    • “groupId” : int - Group ID (must be in “classes.json”)
    • "name" : str - Attribute name
    • "groupName" : str - Group name
  • “trackingId” : - The ID of a duplicated instance.
  • “error” : - If the instance is approved, then it’s false. If it’s disapproved, then it’s true. If you approve or disapprove an instance then undo the action, then it’s null. If the instance is neither approved nor disapproved, then error won’t appear in JSON.
  • “createdAt” : The date and time when the instance was created.
  • “createdBy” : The user who created the instance.
    • “email” : The email address of the user who created the instance.
    • “role” : The role of the user who created the instance.
  • “creationType” : If it’s Manual, then the instance was created manually. If it’s Prediction, the instance was created with the Smart Prediction feature. If it’s Pre-Annotation, then the instance was created with Python SDK.
  • “updatedAt” : The date and time when the instance was updated.
  • “updatedBy” : The user who updated the instance.
    • “email” : The email address of the user who updated the instance.
    • “role” : The role of the user who updated the instance.

Class

{
    "id": 347299,
    "project_id": 9425,
    "name": "Cuboid",
    "color": "#e6dc27",
    "count": 0,
    "createdAt": "2021-01-14T11:01:01.000Z",
    "updatedAt": "2021-01-14T11:01:01.000Z",
    "attribute_groups": [
      {
        "id": 163394,
        "class_id": 347299,
        "name": "Position",
        "is_multiselect": 0,
        "createdAt": "2021-01-14T11:01:12.000Z",
        "updatedAt": "2021-01-14T11:01:28.000Z",
        "attributes": [
          {
            "id": 655173,
            "group_id": 163394,
            "project_id": 9425,
            "name": "Middle",
            "count": 0,
            "createdAt": "2021-01-14T11:01:15.000Z",
            "updatedAt": "2021-01-14T11:01:15.000Z"
          }
        ]
      }
    ]
  }

Description:

  • “id” : int - Class ID
  • “project_id” : id - Project ID
  • “name” : str - Class Name
  • “color” : str - Class color (example: “#000000”, black)
  • “count” : - The number of instances.
  • “createdAt” : - The time the class was created.
  • “updatedAt” : - The last time a user updated the class.
  • “attribute_groups” : list_of_dicts - List of all the attributes
    • “id” : int, - Group ID
    • “class_id” : int, - Class ID (must be the same as “id” : int)
    • “name” : str - Attribute Name
    • “is_multiselect” : int - It’s either 0 or 1. It’s 1 if you can select multiple attributes, and it’s 0 if you can choose only one attribute.
    • “createdAt” : - The time the attribute group was created.
    • “updatedAt” : - The last time a user updated the attribute group.
    • “attribute” : list_of_dicts - List of attribute values.
      • “id” : int - Attribute value ID
      • “group_id” : int - Group ID (must be the same as “id” : int)
      • “project_id” : - Project ID
      • “name” : str - Attribute value
      • “count” : - The number of attributes.
      • “createdAt” : - The time the attribute was created.
      • “updatedAt” : - The last time a user updated the attribute.

Updated 2 months ago


Vector JSON


Suggested Edits are limited on API Reference Pages

You can only suggest edits to Markdown body content, but not to the API spec.