Usage
The input for the execution is a Classiq quantum program, which is the result of synthesizing a quantum model (see Quantum Program Synthesis). When designing your model, do not forget to include execution primitives such assample.
- IDE
- SDK
When viewing a quantum program in the “Quantum Program” page, after synthesizing your model or uploading your quantum program file, click “Execute”:
In the next screen you can choose your execution preferences and run your quantum program.

sample Function
The sample function is a high-level convenience function that submits a quantum program for sampling and returns the result directly as a pandas DataFrame, without requiring you to manage a job object.
- SDK
sample function accepts these arguments:| Argument | Description |
|---|---|
qprog | A synthesized QuantumProgram, or a string containing OpenQASM 2.0 or 3.0 source (see Sampling OpenQASM). |
backend | Backend specifier as "provider/device_id". Defaults to "simulator". Use get_backend_details to see supported devices. |
parameters | A dict of parameter values, or a list of dicts for batch execution. Keys are parameter names of the main function. Not supported when qprog is an OpenQASM string. |
config | Provider-specific configuration (API keys, etc.). Accepts a dict or a typed config object (e.g. IBMConfig, BraketConfig). |
num_shots | Number of shots. Must be ≥ 1 if specified. |
random_seed | Seed for transpilation and simulation. |
transpilation_option | Transpilation level. See TranspilationOption. |
run_via_classiq | Run using Classiq’s provider credentials against your allocated budget. Defaults to False. |
Sampling OpenQASM
You can pass OpenQASM 2.0 or 3.0 text as the first argument tosample instead of a QuantumProgram. The backend runs the circuit the same way as for a synthesized program; the returned DataFrame still includes bitstring, counts, and related columns.
OpenQASM from anytool is supported as long as you pass a string, for example:
- Do not pass
parametersfor OpenQASM strings; use aQuantumProgramif you need Qmodmainparameters, or express parameters inside the QASM (e.g. QiskitParameterandassign_parametersbefore dumping). - Batch sampling with a list of parameter dicts is only defined for
QuantumProgramexecution.
Execution Preferences
You can configure the execution process by modifying the execution preferences with the functionExecutionPreferences.
The main execution preferences:
- Backend preferences, such as provider, backend name, and credentials. See Cloud Providers.
- Cost estimation: Estimate execution cost before running, for any supported provider.
- Number of shots to use.
- Job name to use.
- Transpilation options. You can set the transpilation level (and whether or not to transpile) in the Classiq executor
by setting the
transpile_to_hardwarefield (shown as the “Transpilation Option” field in the IDE execution page). For more information on the transpilation levels, see quantum program transpilation.
- IDE
- SDK
Choose your backend preferences in the “Execute Quantum Circuit” window:
You can select more than one backend on which to run, but note that a maximum of five backends can be selected at a time.Optionally configure more execution preferences in the “Execution Configuration” window:
Finally, execute your program by clicking “Run”.


Jobs
You can view all your execution jobs from any device in the IDE and the SDK, regardless of whether they were originally sent via the IDE or the SDK.- IDE
- SDK
The IDE automatically shows all your execution jobs in the “Jobs” tab.
You can choose any execution job to view its results, rename it, or delete it
from the list.
Results
- IDE
- SDK
The IDE shows a visualized view of each result returned from execution.The most common result type is the measurements of your quantum program:
It is possible to filter the results by specifying them:


Cancellation
You can cancel your execution job from both the IDE (by clicking “Cancel” in the job view) and SDK (by using thejob.cancel method).
Cancelling an execution job will abort the execution process and try to cancel any ongoing jobs sent to the provider during this execution.
Thus, cancelling a job might not be immediate, and you may continue polling the job to ensure its cancellation. This is the default behavior in the IDE, and in the SDK you can use the job.poll method.