Annotate an image with detections using supervision's annotators (box, round_box
Annotate an image with detections using supervision's annotators (box, round_box, box_corner, circle, dot, ellipse, triangle, label, color, mask, polygon, halo, background_overlay, blur, pixelate, percentage_bar), applied in order. Input: base64 image up to 4 megapixels, up to 500 detections with xyxy pixel boxes and optional class_id, confidence, ASCII label, polygon. Returns the annotated image (base64 PNG or JPEG), size and counts per class.
Answeringour last check, 2026-10-03
1 of 1checks answered this week
1072 msmedian answer time
$0.003listed price per call
$0.003price it asked us
Paid test badge: not yet. The checks above are free: we call the tool without paying and read the payment request it sends back. The Verified badge needs paid calls whose answers match the promised output, and nobody can buy a badge.
Endpoint
POST https://supervision-draw.saastemly.com/v1/annotate
| Category | Image and media |
|---|---|
| Provider host | supervision-draw.saastemly.com |
| Networks | eip155:8453 |
| Payment schemes | exact |
| Self-reported calls, 30 days | 0 from 0 payers (the provider's figure, not ours) |
Our checks, last 30 days
| Day | Result | HTTP | Asked | Time |
|---|---|---|---|---|
| 2026-10-03 | valid payment request | 402 | $0.003 | 1072 ms |
Example input (from the provider)
{
"body": {
"annotators": [
{
"thickness": 2,
"type": "box"
},
{
"text_padding": 4,
"text_scale": 0.4,
"type": "label"
}
],
"class_names": [
"car",
"person",
"ball"
],
"detections": [
{
"class_id": 0,
"confidence": 0.94,
"xyxy": [
30,
60,
90,
120
]
},
{
"class_id": 1,
"confidence": 0.88,
"xyxy": [
140,
40,
180,
115
]
},
{
"class_id": 2,
"confidence": 0.71,
"xyxy": [
190,
90,
225,
125
]
}
],
"format": "jpeg",
"image": "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",
"quality": 85
},
"bodyType": "json",
"method": "POST",
"type": "http"
}
Promised output schema (from the provider)
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"input": {
"additionalProperties": false,
"properties": {
"body": {
"properties": {
"annotators": {
"description": "Annotators applied in order, each a type name or an object {\"type\": ..., options}. Default [box, label]. Put blur, pixelate, color, mask or background_overlay before box and label. Types: box, round_box, box_corner, circle, dot, ellipse, triangle, label, color, mask, polygon, halo, background_overlay, blur, pixelate, percentage_bar. Options use supervision's names: color, color_lookup, thickness, opacity, roundness, corner_length, radius, position, start_angle, end_angle, base, height, width, kernel_size, pixel_size, outline_thickness, outline_color, border_color, border_thickness, force_box, text_color, text_scale, text_thickness, text_padding, text_position, border_radius, smart_position. color: A hex colour like \"#ff8800\" or a name: black, blue, green, grey, red, roboflow, white, yellow (default: supervision's class palette). color_lookup: What picks the colour: \"class\" (default when every detection has a class_id), \"index\" (position in the list) or \"track\" (tracker_id). position and text_position: Anchor point: center, center_left, center_right, top_center, top_left, top_right, bottom_left, bottom_center, bottom_right, center_of_mass",
"items": {
"properties": {
"type": {
"description": "Annotator type",
"type": "string"
}
},
"required": [
"type"
],
"type": "object"
},
"type": "array"
},
"class_names": {
"description": "Names indexed by class_id, used in generated labels and in counts.byClass (printable ASCII)",
"items": {
"type": "string"
},
"type": "array"
},
"detections": {
"description": "Up to 500 detections, drawn in this order",
"items": {
"properties": {
"class_id": {
"description": "Class number, 0 or more; picks the colour and the name from class_names",
"type": "integer"
},
"confidence": {
"description": "0 to 1; shown in the label unless label is given",
"type": "number"
},
"label": {
"description": "Label text, printable ASCII, up to 64 characters (replaces the generated one)",
"type": "string"
},
"polygon": {
"description": "Outline [[x, y], ...] (3 to 512 points) that mask, polygon and halo draw; required on every detection when one of them is used",
"items": {
"items": {
"type": "number"
},
"type": "array"
},
"type": "array"
},
"tracker_id": {
"description": "Tracker id, used when color_lookup is track",
"type": "integer"
},
"xyxy": {
"description": "Box [x1, y1, x2, y2] in pixels from the top-left corner; may extend past the image",
"items": {
"type": "number"
},
"type": "array"
}
},
"required": [
"xyxy"
],
"type": "object"
},
"type": "array"
},
"format": {
"description": "Output format (default png)",
"enum": [
"png",
"jpeg"
],
"type": "string"
},
"image": {
"description": "Base64 of a PNG, JPEG, BMP or WebP file (a data: URI also works), up to 4 million pixels and about 2 MB",
"type": "string"
},
"quality": {
"description": "JPEG quality 1-100 (default 90)",
"type": "integer"
}
},
"required": [
"image",
"detections"
]
},
"bodyType": {
"enum": [
"json",
"form-data",
"text"
],
"type": "string"
},
"method": {
"enum": [
"POST",
"PUT",
"PATCH"
],
"type": "string"
},
"type": {
"const": "http",
"type": "string"
}
},
"required": [
"type",
"method",
"bodyType",
"body"
],
"type": "object"
},
"output": {
"properties": {
"example": {
"type": "object"
},
"type": {
"type": "string"
}
},
"required": [
"type"
],
"type": "object"
}
},
"required": [
"input"
],
"type": "object"
}