# Uploading Annotations from SDK

After creating your `Annotation` objects, you just need to upload them to Nucleus. You can add various types of annotations to the same dataset at once.

This can be accomplished with a single call to [`Dataset.annotate`](https://docs.nucleus.scale.com/en/latest/api/nucleus/index.html#nucleus.Dataset.annotate). See example usage below.

We recommend setting `asynchronous=True` to drastically speed up the upload. This will also allow you to check on the job's status in the [dashboard](https://dashboard.scale.com/nucleus/jobs) or via the API (see our docs on [Async Jobs](https://nucleus.scale.com/docs/async-jobs)).

[block:code]
{
  "codes": [
    {
      "code": "import nucleus\n\n# construct various annotations\nbox_gt_1 = nucleus.BoxAnnotation(...)\nbox_gt_2 = nucleus.BoxAnnotation(...)\npolygon_gt = nucleus.PolygonAnnotation(...)\nline_gt = nucleus.LineAnnotation(...)\ncuboid_gt = nucleus.CuboidAnnotation(...)\nsegmentation_gt = nucleus.SegmentationAnnotation(...)\n\n# fetch dataset\nclient = nucleus.NucleusClient(\"YOUR_SCALE_API_KEY\")\ndataset = client.get_dataset(\"YOUR_DATASET_ID\")\n\n# upload annotations to dataset\njob = dataset.annotate(\n    annotations=[box_gt_1, box_gt_2, polygon_gt, line_gt, cuboid_gt, segmentation_gt],\n    update=True,\n    asynchronous=True\n)",
      "language": "python"
    }
  ]
}
[/block]