Released on November 19th, 2025, Segment Anything 3 (SAM 3) is a zero-shot image segmentation model that “detects, segments, and tracks objects in images and videos based on concept prompts.” This model was developed by Meta as the third model in the Segment Anything series.
Unlike its previous SAM models (Segment Anything and Segment Anything 2), you can provide SAM 3 with the prompt “shipping container” and it will generate precise segmentation masks for all shipping containers in an image. SAM 3 generates segmentation masks that correspond to the location of the objects found with a text prompt.
Drag and drop an image here, or click to browse
Usage
Past 30 DaysSAM 3 has not yet been evaluated on the current benchmark. The results below are from the legacy version of Vision Evals, our previous benchmark. See the current Vision Evals
| Dataset | Score |
|---|---|
| SaCo-Gold | 68.5% |
| COCO-100 | 54.9% |
| Dataset | Score |
|---|---|
| SaCo-Gold | 68.6% |
| COCO-100 | 48% |
Scores based on a single evaluation run · Methodology
View all legacy Vision Evals results →Other models worth comparing for similar use cases.
SAM 3 runs as a hosted REST endpoint through Roboflow Workflows. Pick a task, then hand the prompt to your coding agent or copy the code. Deploying the workflow into a free Roboflow workspace replaces the your-workspace and YOUR_API_KEY placeholders with your own.
Add the Roboflow MCP server
claude mcp add --transport http roboflow https://mcp.roboflow.com/mcp
Run /mcp and authorize Roboflow in your browser when the OAuth flow opens.
Start a new Claude Code session so the MCP loads, then paste the prompt below (it works the same in any agent).
Deploy this workflow to your Roboflow workspace to use it.
Integrate the Roboflow "SAM 3" workflow into my app.
- Endpoint: POST https://serverless.roboflow.com/<your-workspace>/workflows/sam-3-object-detection
- Auth: send my Roboflow API key as `api_key` in the request body, read from the ROBOFLOW_API_KEY env var (never hardcode).
- Body: { "api_key": ..., "inputs": { `image`: { type: "url" | "base64", value }, `classes`: string array } }.
With the Roboflow MCP connected, call `workflows_get` on "sam-3-object-detection" to read the exact input schema (the source of truth), then `workflows_run` on a sample image to confirm the output shape before writing code (the MCP is authenticated, so this needs no key). Without the MCP, use the contract above.
Before running the app, set up these keys so it does not error at runtime:
- `ROBOFLOW_API_KEY` (sent as `api_key`) from https://app.roboflow.com/settings/api
Create a .gitignore'd .env with these variables, using placeholder values for any I haven't given you. Then pause and tell me directly, in your reply: the full path to the .env file, exactly which keys I need to paste in, and the link to get each one. Wait for me to confirm I've added them before you run anything. Do not run the app until I confirm.
Then add the integration to my codebase: match my project's language, framework, and conventions; read every key from environment variables (never hardcode); add basic error handling; and include a small runnable example. If you can't tell what language my project uses, ask me.pip install inference-sdkDeploy this workflow to your Roboflow workspace to use it.
# 1. Import the library
from inference_sdk import InferenceHTTPClient
# 2. Connect to your workflow
client = InferenceHTTPClient(
api_url="https://serverless.roboflow.com",
api_key="YOUR_API_KEY"
)
# 3. Run your workflow on an image
result = client.run_workflow(
workspace_name="your-workspace",
workflow_id="sam-3-object-detection",
images={
"image": "YOUR_IMAGE.jpg" # Path to your image file
},
parameters={
"classes": ["class1", "class2", "class3"]
},
use_cache=True # cache workflow definition for 15 minutes
)
# 4. Get your results
print(result)Deploy this workflow to your Roboflow workspace to use it.
const response = await fetch('https://serverless.roboflow.com/your-workspace/workflows/sam-3-object-detection', {
method: 'POST',
headers: {
'Content-Type': 'application/json'
},
body: JSON.stringify({
api_key: 'YOUR_API_KEY',
inputs: {
"image": {"type": "url", "value": "IMAGE_URL"},
"classes": ["class1", "class2", "class3"]
}
})
});
const result = await response.json();
console.log(result);Deploy this workflow to your Roboflow workspace to use it.
curl --location 'https://serverless.roboflow.com/your-workspace/workflows/sam-3-object-detection' \
--header 'Content-Type: application/json' \
--data '{
"api_key": "YOUR_API_KEY",
"inputs": {
"image": {"type": "url", "value": "IMAGE_URL"},
"classes": ["class1", "class2", "class3"]
}
}'Add the Roboflow MCP server
claude mcp add --transport http roboflow https://mcp.roboflow.com/mcp
Run /mcp and authorize Roboflow in your browser when the OAuth flow opens.
Start a new Claude Code session so the MCP loads, then paste the prompt below (it works the same in any agent).
Deploy this workflow to your Roboflow workspace to use it.
Integrate the Roboflow "SAM 3" workflow into my app.
- Endpoint: POST https://serverless.roboflow.com/<your-workspace>/workflows/sam-3-promptable-concept-segmentation
- Auth: send my Roboflow API key as `api_key` in the request body, read from the ROBOFLOW_API_KEY env var (never hardcode).
- Body: { "api_key": ..., "inputs": { `image`: { type: "url" | "base64", value }, `classes`: string array } }.
With the Roboflow MCP connected, call `workflows_get` on "sam-3-promptable-concept-segmentation" to read the exact input schema (the source of truth), then `workflows_run` on a sample image to confirm the output shape before writing code (the MCP is authenticated, so this needs no key). Without the MCP, use the contract above.
Before running the app, set up these keys so it does not error at runtime:
- `ROBOFLOW_API_KEY` (sent as `api_key`) from https://app.roboflow.com/settings/api
Create a .gitignore'd .env with these variables, using placeholder values for any I haven't given you. Then pause and tell me directly, in your reply: the full path to the .env file, exactly which keys I need to paste in, and the link to get each one. Wait for me to confirm I've added them before you run anything. Do not run the app until I confirm.
Then add the integration to my codebase: match my project's language, framework, and conventions; read every key from environment variables (never hardcode); add basic error handling; and include a small runnable example. If you can't tell what language my project uses, ask me.pip install inference-sdkDeploy this workflow to your Roboflow workspace to use it.
# 1. Import the library
from inference_sdk import InferenceHTTPClient
# 2. Connect to your workflow
client = InferenceHTTPClient(
api_url="https://serverless.roboflow.com",
api_key="YOUR_API_KEY"
)
# 3. Run your workflow on an image
result = client.run_workflow(
workspace_name="your-workspace",
workflow_id="sam-3-promptable-concept-segmentation",
images={
"image": "YOUR_IMAGE.jpg" # Path to your image file
},
parameters={
"classes": ["class1", "class2", "class3"]
},
use_cache=True # cache workflow definition for 15 minutes
)
# 4. Get your results
print(result)Deploy this workflow to your Roboflow workspace to use it.
const response = await fetch('https://serverless.roboflow.com/your-workspace/workflows/sam-3-promptable-concept-segmentation', {
method: 'POST',
headers: {
'Content-Type': 'application/json'
},
body: JSON.stringify({
api_key: 'YOUR_API_KEY',
inputs: {
"image": {"type": "url", "value": "IMAGE_URL"},
"classes": ["class1", "class2", "class3"]
}
})
});
const result = await response.json();
console.log(result);Deploy this workflow to your Roboflow workspace to use it.
curl --location 'https://serverless.roboflow.com/your-workspace/workflows/sam-3-promptable-concept-segmentation' \
--header 'Content-Type: application/json' \
--data '{
"api_key": "YOUR_API_KEY",
"inputs": {
"image": {"type": "url", "value": "IMAGE_URL"},
"classes": ["class1", "class2", "class3"]
}
}'SAM 3 ships under a custom, model-specific license rather than a standard permissive or restrictive one, so the SAM 3 license has to be read directly. Custom model licenses range from effectively permissive to research-only.
Uncertainty around licensing can delay or stop a project, and acceptable-use policies attached to custom licenses are binding terms rather than guidance. Review them alongside the SAM 3 license before production deployment.
If the custom terms rule out your use case, a commercial license from the rights holder is the way through. Roboflow's licensing page lists the supported models whose commercial license is included in a Roboflow plan, so it is worth checking whether SAM 3 — or a permissively licensed alternative — fits your deployment.
Do not hesitate to reach out with questions for your commercial project — our team will help you start solving business problems on the first call. See Roboflow commercial licensing for the models included in each plan.
Talk to salesThis model is released under a custom license that does not match a standard open-source identifier. Read the full license text linked from the model documentation.
Custom licenses vary widely in what they permit. Many model-specific custom licenses include commercial-use restrictions (e.g., non-commercial weights, named-user limits, or jurisdiction restrictions). Read the full license before deploying commercially.
Custom licenses are model-specific. Always check the per-model License Notes section above and the linked official license text.
License information is provided as a guide and is not legal advice.
SAM 3 has not yet been evaluated on Roboflow's current Vision Evals. The results on this page are from the previous benchmark.
Yes. The demo on this page runs SAM 3 in the free Roboflow Playground: upload an image and see results in seconds. A free account unlocks unlimited runs.