> For the complete documentation index, see [llms.txt](https://docs.roboflow.com/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.roboflow.com/developer/rest-api/list-project-models.md).

# List Project Models

You can retrieve all trained models in a project using the `/:workspace/:project/models` endpoint. This returns both version-trained models and standalone models (such as NAS children).

With [Sign In With Roboflow (Getting Started)](/developer/authentication/sign-in-with-roboflow-getting-started.md), use `Authorization: Bearer` and scope `model:infer` instead of `api_key`:

```bash
curl -H "Authorization: Bearer $ACCESS_TOKEN" \
  "https://api.roboflow.com/:workspace/:project/models"
```

## List All Models

```bash
curl "https://api.roboflow.com/:workspace/:project/models?api_key=$ROBOFLOW_API_KEY"
```

### Filter by NAS Group

To list only the models from a specific NAS run, pass the `group` query parameter:

```bash
curl "https://api.roboflow.com/:workspace/:project/models?group=GROUP_ID&api_key=$ROBOFLOW_API_KEY"
```

The `group` value is the NAS run identifier returned on each model object. If the group doesn't match any models, the endpoint returns an empty array.

## Response

The endpoint returns a JSON array of model objects:

```json
[
  {
    "url": "my-workspace/my-project/3",
    "version": "3",
    "train": { "status": "finished" },
    "modelType": "rfdetr-base",
    "name": "My Model",
    "created": "2026-04-01T00:00:00.000Z",
    "metrics": {
      "map50": 91.0,
      "precision": 88.0,
      "recall": 85.0
    }
  }
]
```

### NAS Model Fields

Models produced by [Neural Architecture Search](https://github.com/roboflow/roboflow-dev-reference/blob/main/train/neural-architecture-search.md) include additional fields:

```json
{
  "url": "my-workspace/my-project-410-nas-gpu-066866",
  "train": { "status": "finished" },
  "modelType": "rfdetr-nas-S",
  "name": "NAS Child 1",
  "created": "2026-04-01T00:00:00.000Z",
  "nasFamily": "child",
  "group": "pVYKOWUB6AUIVJMgPc7u-410-rfdetrNasGroup",
  "favorites": {},
  "recommended": true,
  "metrics": {
    "map50": 81.2,
    "map5095": 64.3,
    "f1": 78.0,
    "hardware": "gpu",
    "latency": 1.157,
    "paretoOptimalFor": ["gpu"]
  }
}
```

| Field                      | Type      | Description                                                                                             |
| -------------------------- | --------- | ------------------------------------------------------------------------------------------------------- |
| `nasFamily`                | string    | `"child"` for NAS-discovered models, `null` for the baseline                                            |
| `group`                    | string    | NAS run identifier, shared by all models in the same run                                                |
| `favorites`                | object    | Map of user IDs to favorite status                                                                      |
| `recommended`              | boolean   | Present and `true` when this model is the recommended pick for at least one metric/hardware combination |
| `metrics.map5095`          | number    | mAP\@50-95 score (percentage)                                                                           |
| `metrics.f1`               | number    | F1 score (percentage)                                                                                   |
| `metrics.hardware`         | string    | Hardware target the model was benchmarked on (e.g. `"gpu"`, `"jetson-orin-nano"`)                       |
| `metrics.latency`          | number    | Inference latency in milliseconds on the target hardware                                                |
| `metrics.paretoOptimalFor` | string\[] | Hardware targets for which this model sits on the Pareto frontier                                       |

These fields are only present on NAS models. Standard trained models are not affected.
