Annotation

The annotator UI lives at /projects/{id}/annotate.

Prerequisites

  1. At least one class on the project.

  2. At least one image (upload or import).

Tools

Tool

Geometry

Typical use

Bounding box

{x, y, width, height} normalized

Object detection

Polygon

Point list normalized

Instance outlines / SAM refine

Coordinates are normalized to the image (0–1), so labels stay valid if you resize later during version generation.

Workflow tips

  1. Select a class, then draw.

  2. Edit or delete existing annotations as needed.

  3. Use keyboard / UI navigation to move between images.

  4. Delete the current image from the annotator when cleaning the set.

  5. Re-run Label Assist carefully — YOLO assist clears previous source=yolo annotations on each image it processes before writing new ones. Manual annotations are kept.

Annotation sources

Source

Meaning

manual

Drawn in the UI

yolo

Created by Label Assist

sam

Created by SAM point prompts

import

Loaded from YOLO labels on import

API

GET    /api/images/{image_id}/annotations
POST   /api/images/{image_id}/annotations
PUT    /api/annotations/{annotation_id}
DELETE /api/annotations/{annotation_id}

Example create body:

{
  "class_id": 1,
  "annotation_type": "bbox",
  "geometry": {"x": 0.1, "y": 0.2, "width": 0.3, "height": 0.4},
  "confidence": null,
  "source": "manual"
}

Upload images

UI: /projects/{id}/upload — multi-file upload.

API:

POST /api/projects/{project_id}/images
Content-Type: multipart/form-data
files: <one or more images>

Supported extensions: .jpg, .jpeg, .png, .bmp, .webp, .tif, .tiff.

Files are stored under {project_location}/images/ with UUID filenames.

Delete images

  • Single: DELETE /api/images/{image_id}

  • Bulk: select mode on the project grid → POST /api/images/bulk-delete