cURL
Image
Detect
POST
cURL
Overview
The Detect API returns grounded object detections for a single image. Use it when you want a direct detection workflow without building a chat-completions prompt. Requests can include textcategories, annotated positive exemplars, both together, or no targets for exhaustive object detection. You can also include negative_exemplars, but only alongside at least one category or positive exemplar. Coordinates for exemplar annotations and returned detections are image pixels.
Examples
Detect all objects as boxes
Omitcategories and exemplars to ask the model to return the objects it finds in the image. This is useful for exploratory labeling or scene inventory. Box output is the default.

Detect target categories as boxes
Passcategories when you know the labels you want returned. Each detection mention is one of the requested categories.
Detect one category as points
Setconfig.output to "point" when you want one pixel point per detection. With exactly one unique category and no exemplars, /v1/detect uses a direct point prompt and forces every returned mention to that category.
Detect all objects as points
You can also request point output without categories or exemplars. The route still uses exhaustive object detection internally, then returns the center point for each detected box or polygon.
Detect from exemplars as boxes
Useexemplars when the target is visual or domain-specific. Exemplar annotations use pixel coordinates in the exemplar image. If you omit categories, the exemplar annotation mention values define the target labels.
Detect from exemplars as points
For exemplar-guided point output, setconfig.output to "point". Positive exemplars can use either point or point_box annotations. The route uses the exemplar labels to find matching objects, then returns a point for each detection.
enable_thinking is optional and defaults to false. Set it to true when you want a supported detect model to use reasoning internally; the native response still returns only detections and finish_reason.
Supported permutations
| Request shape | config.output | Behavior |
|---|---|---|
media only | "box" or omitted | Exhaustive object detection; returns point_box for every parsed object. |
media only | "point" | Exhaustive object detection; returns point values converted from parsed boxes or polygons. |
One or more categories entries, no positive exemplars | "box" | Category detection; returns point_box values. Duplicate categories are deduplicated for prompting. |
One unique categories entry, no positive or negative exemplars | "point" | Direct point prompt; every returned mention is forced to that category. |
Multiple unique categories entries | "point" | Category detection; returns centroid point values from parsed boxes or polygons. |
Positive exemplars, with or without categories | "box" | Exemplar-guided detection; returns point_box values. If categories is omitted, exemplar mention values define the target labels. |
Positive exemplars, with or without categories | "point" | Exemplar-guided detection; returns point values. Exemplar annotations may use point or point_box. |
negative_exemplars with categories or positive exemplars | "box" or "point" | Uses negative images as examples of what not to detect. Negative exemplars do not define labels. |
negative_exemplars only | Any | Invalid request; include at least one category or positive exemplar. |
Example response
Box response
Point response
Notes
/v1/detectsupports image inputs only.config.outputcan be"box"or"point"; the default is"box". The public value is"box", not"bbox".- The response does not include confidence scores.
finish_reasonis"complete"or"max_tokens".- When
categoriesis set, every positive exemplar annotationmentionmust exactly match one of those categories. - Exemplar annotations must include exactly one of
pointorpoint_box. - Point outputs may come from parsed points directly, or from the centroid of a parsed box or polygon.
config.enable_thinkingcan betrueorfalsefor box output, point output, category requests, and exemplar-guided requests. It does not change the response schema.
Limits
| Limit | Value |
|---|---|
categories entries | 256 |
Positive exemplars | 64 |
negative_exemplars | 64 |
| Annotations per exemplar | 256 |
Authorizations
Bearer token authentication using your Perceptron API key
Body
application/json