GPT-6 Astra for Segmentation Roboflow reported that OpenAI's GPT-6 Astra, released in early September 2026, ranks #1 on its Vision Evals overall and on object detection as of September 17, 2026, and can output per-instance polygons for segmentation when prompted with a strict JSON schema. Roboflow said Astra's polygon output is not pixel-perfect and recommends pairing it with SAM 3, sending Astra's boxes as box prompts so SAM 3 returns one mask per box, to improve accuracy. OpenAI does not document the segmentation capability; its model page lists only image input and structured outputs. GPT-6 Astra is the best vision model we have tested. As of September 17, 2026 it's 1 our Vision Evals https://playground.roboflow.com/models/openai/gpt-6-astra?ref=blog.roboflow.com overall and on object detection as well. It turns out it can also outline objects. You can prompt Astra to output polygons and it returns one per object, with no expert segmentation model involved. This post shows what those polygons look like, where they fall short of a real segmentation model, and how to pair GPT-6 Astra with SAM 3 https://blog.roboflow.com/what-is-sam3/ for best accuracy. GPT-6 Astra for Vision OpenAI released GPT-6 Astra https://openai.com/index/gpt-6-astra/?ref=blog.roboflow.com in early September. The launch post is about computer use and coding, but the vision side is where it surprised us. We ran it through our vision evals and it is the best vision model we have seen. It notices tiny details, reads text in context and also draws precise boxes. See this detection deep dive https://x.com/skalskip92/status/2096317264463012261?ref=blog.roboflow.com on X. Two days later we also published a segmentation deep dive https://x.com/skalskip92/status/2096994940530094145?ref=blog.roboflow.com about how Astra's polygon output performs in real world. TL;DR: it's impressive. Note that OpenAI does not document this anywhere. The model page https://developers.openai.com/api/docs/models/gpt-6-astra?ref=blog.roboflow.com lists image input and structured outputs, but that's all you need: a strict JSON schema and a prompt asking it to output boxes/polygons in specific format. GPT-6 Astra for Segmentation We send the image at up to 2048 px on the long edge, the same upload rule as our Vision Evals, and ask for a flat list of pixel vertices per instance. The request looks something like this: { "model": "gpt-6-astra", "reasoning": {"effort": "high"}, "input": {"role": "user", "content": {"type": "input text", "text": "Segment every instance of \"sweet potato\" in this image. The image is 2048 px wide and 1365 px tall. Coordinates are pixels with 0, 0 at the top-left corner. For each distinct instance, return a polygon tracing its outline as tightly as you can, as a flat list x1, y1, x2, y2, ... of at least 3 vertices, together with a confidence in 0, 1 . Use as many vertices as the shape needs. Return one entry per instance; do not merge separate instances."}, {"type": "input image", "image url": "data:image/jpeg;base64,..."} } , "text": {"format": {"type": "json schema", "strict": true, "schema": { "instances": {"polygon": "number" , "confidence": "number"} }}} } Astra returns something like {"polygon": 1339, 1385, 1362, 1391, ... , "confidence": 0.92} per instance. Scale the vertices back to the original resolution and rasterize, and you have an instance mask. If you zoom in, you can see that segmentation results aren't pixel-perfect, as Astra is outputting polygons, not dense segmentation masks comparison below . GPT-6 Astra + Segment Anything 3 SAM3 To get better accuracy, we can use two models and let each model do what they're best at. Astra finds the boxes and SAM3 draws the mask: And here's the difference between Astra's polygon output and Astra+SAM3 output: Segment multiple classes with Astra Compared to SAM3, Astra handles look-alike classes well. Below we asked for "cashew" and "hazelnut" in a single request on a tray of mixed nuts. Astra recognizes them correctly: Astra recognizes all nuts correctly, but the polygons aren't pixel-perfect. We send SAM3 the full image plus every Astra box as a box prompt . Each box means "segment the object inside this box", so SAM 3 returns exactly one mask per box and never has to decide what a cashew is: the class comes with the box. One Astra call, one SAM 3 call, nothing to filter afterwards. curl -X POST "https://serverless.roboflow.com/sam3/visual segment?api key=$ROBOFLOW API KEY" \ -H "Content-Type: application/json" \ -d '{ "image": {"type": "base64", "value": "