> For clean Markdown of any page, append .md to the page URL.
> For a complete documentation index, see https://docs.nvidia.com/nemo-platform/llms.txt.
> For AI client integration (Claude Code, Cursor, etc.), connect to the MCP server at https://docs.nvidia.com/nemo-platform/_mcp/server.

# List Active Jobs

<a id="ft-list-active-customization-jobs" />

List customization jobs and their high-level status. Customization jobs run on the platform's Jobs service, so you list them through that service and filter by `source` to scope the results to a backend (`automodel` or `unsloth`). Each entry includes the job definition (model, dataset, training configuration) and overall status.

To get **detailed execution progress** (step-by-step status, training metrics like loss/epoch/step), use [Get Job Status](/documentation/customizer-reference/manage-customization-jobs/get-job-status) instead.

## Prerequisites

Before you can list active customization jobs, make sure that you have:

* Obtained the base URL of your NeMo Platform.
* Set the `NMP_BASE_URL` environment variable to your NeMo Platform endpoint

```bash
export NMP_BASE_URL="https://your-nmp-base-url"
```

***

## To List Active Customization Jobs

Use the SDK to list jobs, filtering by `source` to scope the results to a customization backend:

```python
import os
from nemo_platform import NeMoPlatform

# Initialize the client
client = NeMoPlatform(
    base_url=os.environ.get("NMP_BASE_URL", "http://localhost:8080"),
    workspace="default",
)

# List automodel customization jobs
jobs = client.jobs.list(
    workspace="default",
    filter={"source": "automodel"},  # Use "unsloth" for the Unsloth backend
    page=1,
    page_size=10,
    sort="created_at",
)

print(f"Found {len(jobs.data)} jobs")
for job in jobs.data:
    print(f"Job {job.name}: {job.status}")

# Add more filters (optional)
# Valid filter fields: workspace, project, name, status, source, created_at, updated_at
filtered_jobs = client.jobs.list(
    workspace="default",
    filter={
        "source": "automodel",
        "status": "active",  # Filter by job status
    },
    sort="-created_at",  # Sort by created_at descending
)

print(f"Found {len(filtered_jobs.data)} jobs")
for job in filtered_jobs.data:
    print(f"Job {job.name}: {job.status}")
```

:open:

```json
{
  "data": [
    {
      "id": "platform-job-QtyhRY5ub4t4tTLPY4sTkz",
      "name": "automodel-99da3f7c1b2e",
      "workspace": "default",
      "source": "automodel",
      "created_at": "2026-02-09T22:12:45",
      "updated_at": "2026-02-09T22:12:45",
      "status": "active",
      "status_details": {
        "message": "Job is running"
      },
      "spec": {
        "model": "default/qwen3-1.7b",
        "dataset": { "training": "default/sft-dataset" },
        "training": {
          "training_type": "sft",
          "finetuning_type": "all_weights",
          "max_seq_length": 2048
        },
        "schedule": { "epochs": 2 },
        "batch": { "global_batch_size": 64, "micro_batch_size": 1 },
        "optimizer": { "learning_rate": 5e-05, "weight_decay": 0.01 },
        "parallelism": {
          "num_gpus_per_node": 1,
          "num_nodes": 1,
          "tensor_parallel_size": 1,
          "pipeline_parallel_size": 1,
          "context_parallel_size": 1
        },
        "output": {
          "name": "customization-407790d32cfb",
          "type": "model",
          "fileset": "customization-407790d32cfb"
        }
      }
    }
  ],
  "pagination": {
    "page": 1,
    "page_size": 10,
    "current_page_size": 1,
    "total_pages": 1,
    "total_results": 1
  },
  "sort": "created_at",
  "filter": {},
  "search": {}
}
```