Skip to content

Jobs#

Jobs are the main execution unit in QCentroid. With the SDK you can list jobs, inspect a job, and launch a new one.

List jobs#

from qcentroid_sdk import QCentroidClient

client = QCentroidClient(
    api_key="your-api-key",
)

jobs = client.jobs.list(limit=10)

for job in jobs.value:
print(job.name, job.status)

Get a job by name#

job = client.jobs.get_by_name("ABC123XYZ")
print(job.name, job.status)

Wait for completion#

job = client.jobs.wait_for_completion("ABC123XYZ")
print(job.name, job.status)

The polling interval defaults to 30 seconds and cannot be lower than 30 seconds.

You can also set it explicitly:

job = client.jobs.wait_for_completion(
    "ABC123XYZ",
    poll_interval=60,
    timeout=3600,
)

Run a job with inline data#

job = client.jobs.run(
    use_case_name="qcentroid-example-1-sum",
    data={"a": 2, "b": 3},
    solvers=[{"name": "QCentroid-OscarSolver-Example1Sum-ClassicalCPU"}],
    num_shots=1,
    job_description="Run a job with inline data",
)

print(job.job_name)

Get job input#

job_input = client.jobs.get_input("ABC123XYZ")
print(job_input)

Get job output#

job_output = client.jobs.get_output("ABC123XYZ")
print(job_output)

Get execution log#

job_log = client.jobs.get_execution_log("ABC123XYZ")
print(job_log)

Run a job with an existing dataset#

job = client.jobs.run(
    use_case_name="maxcut-academic",
    dataset_id="your-file-identifier",
    solvers=[{"name": "qcentroid-maxcut-random"}],
    solvers_provider_params={"qcentroid-maxcut-random": {}},
    num_shots=1,
    max_exec_time_m=0,
    job_description="Run a job with a dataset",
)

print(job.job_name)

Notes#

  • use_case_name must match the QCentroid use case name, not the display label.
  • job.name, solver.name, and use_case.name are the identifiers users should rely on in scripts.
  • Some use cases may require specific solver configuration.
  • For dataset-based runs, some backends may expect solvers_provider_params and max_exec_time_m.