Returns every job Minion Agent knows about -- this is how you find a job's id before you can run it or do anything else that needs one. There's no filtering or paging built in; it always returns the full list, so find the one you want by name on your own side. Already know the exact name and just want its id? Get a Job by Name does that in one call instead.

Having trouble reaching the API, or logging in from another machine? See Network Access & Authentication Security -- by default the Api only answers localhost, and PowerShell needs an extra flag once it does answer elsewhere.

Order of Operations

  1. Authenticate to the API.
  2. Request the job list.

The call

GET /api/jobs

No route parameters, no query parameters, no request body.

Permission needed: Job.View.

C# example

var jsonOptions = new JsonSerializerOptions(JsonSerializerDefaults.Web);

// Step 1: Authenticate to the API.
using var handler = new HttpClientHandler { UseDefaultCredentials = true };
using var client = new HttpClient(handler) { BaseAddress = new Uri("http://your-minion-agent-server:5443") };
client.DefaultRequestHeaders.Add("X-App-Name", "MyIntegration");

// Step 2: Request the job list.
var jobs = await client.GetFromJsonAsync<JobSummary[]>("/api/jobs", jsonOptions);

var job = jobs!.FirstOrDefault(j => j.JobName == "Nightly ETL Load");
if (job is null)
{
    Console.WriteLine("No job with that name.");
}
else
{
    Console.WriteLine($"Job id: {job.JobID}");
}

record JobSummary(int JobID, string JobName, string? Description, int? FolderId, bool IsActive,
    DateTime CreatedAt, DateTime? ModifiedAt, int? TargetServerId, string? TargetServerName,
    string? WorkerName, bool IsGlobal, DateTime? DeletedAt);

Not on a domain machine? Swap in the app-account login from Calling the API From Your Own Code, same as every other page here.

PowerShell example

# Step 1: Authenticate to the API.
$headers = @{ "X-App-Name" = "MyIntegration" }

# Step 2: Request the job list. (-AllowUnencryptedAuthentication: PowerShell requires this for Windows auth over plain http to anything but localhost -- see "Network Access & Authentication Security".)
$jobs = Invoke-RestMethod -Uri "http://your-minion-agent-server:5443/api/jobs" -UseDefaultCredentials -AllowUnencryptedAuthentication -Headers $headers

$job = $jobs | Where-Object { $_.jobName -eq "Nightly ETL Load" }
if (-not $job) {
    "No job with that name."
} else {
    "Job id: $($job.jobID)"
}

What you get back

200 OK, with an array -- one entry per job:

[
    {
        "jobID": 42,
        "jobName": "Nightly ETL Load",
        "description": "Loads the warehouse tables from the OLTP source.",
        "folderId": 3,
        "isActive": true,
        "createdAt": "2026-01-14T09:00:00Z",
        "modifiedAt": "2026-08-30T14:22:11Z",
        "targetServerId": 7,
        "targetServerName": "SQLPROD01",
        "workerName": null,
        "isGlobal": false,
        "deletedAt": null
    }
]

jobID is what you pass to Run a Job and Check a Job Run's Status. deletedAt is always null here -- this call only ever returns active jobs, not trashed ones.

Codes this call can return

See API Response Codes for what each one means in general. For this specific call:

  • 200 -- the list, even if it's empty.
  • 403 -- you don't have Job.View anywhere.

See also: Get a Job by Name, Run a Job, Check a Job Run's Status.