Table of Contents

Query a Job

Track and manage jobs via sdkClient.Jobs.Query.

Query by ID

var jobId = Guid.Parse("12345678-1234-1234-1234-1234567890ab");
var jobResult = await sdkClient.Jobs.Query.GetByIdAsync(jobId);

if (jobResult is Result<JobStatus>.Success jobStatus)
{
    var job = jobStatus.Data;
    Console.WriteLine($"Job ID: {job.JobId}");
    
    if (job.Scheduled)
    {
        Console.WriteLine("Status: In Progress");
        Console.WriteLine($"Queue Position: {job.Position}");
    }
    else if (job.LastEvent?.Type == JobEventType.Succeeded)
    {
        Console.WriteLine("Status: Succeeded");
    }
    else if (job.LastEvent?.Type == JobEventType.Failed)
    {
        Console.WriteLine("Status: Failed");
    }
}

Query by Token

var batchToken = "your-batch-token-here";
var tokenResult = await sdkClient.Jobs.Query.GetByTokenAsync(batchToken);

if (tokenResult is Result<JobStatusCollection>.Success tokenSuccess)
{
    foreach (var job in tokenSuccess.Data.JobsList)
    {
        var status = job.Scheduled ? "In Progress" : job.LastEvent?.Type.ToString() ?? "Unknown";
        Console.WriteLine($"Job {job.JobId}: {status}");
    }
}

Query with Options

var detailedResult = await sdkClient.Jobs.Query
    .WithDetailed()  // Include original job specifications
    .WithWait()      // Wait for jobs to complete (up to ~10 minutes)
    .GetByTokenAsync(batchToken);

Filter by Properties

var filteredResult = await sdkClient.Jobs.Query
    .WhereProperty("userId", "12345")
    .WhereProperty("campaign", "winter-2026")
    .ExecuteAsync();

Cancel Job

var jobToCancel = Guid.Parse("12345678-1234-1234-1234-1234567890ab");
var cancelResult = await sdkClient.Jobs.Query.CancelAsync(jobToCancel);

if (cancelResult is Result<Unit>.Success)
{
    Console.WriteLine("Job cancelled successfully");
}

Cancel Batch

var batchToCancel = "batch-token-to-cancel";
var batchCancelResult = await sdkClient.Jobs.Query.CancelAsync(batchToCancel);

Taint Job

var jobToTaint = Guid.Parse("12345678-1234-1234-1234-1234567890ab");
await sdkClient.Jobs.Query.TaintAsync(jobToTaint);

Next Steps