Quantum Elements Orbit API reference
Qiskit Functions — pre-built tools created by partner organizations — abstract away parts of the software development workflow to simplify and accelerate utility-scale algorithm discovery and application development. Click to view the guide for this Qiskit Function.
Quantum Elements Orbit guide
Quantum Elements Orbit is a Qiskit Function that prepares quantum circuits for a selected IBM Quantum® backend, inserts dynamical decoupling (DD) into scheduled idle windows, and runs the resulting workload through a Qiskit Runtime primitive. Orbit accepts Sampler and Estimator PUBs and returns a standard PrimitiveResult with Orbit-specific metadata attached to the top-level result and to each Primitive Unified Bloc (PUB) result.
If backend_name is omitted, Orbit selects an eligible least-busy IBM Quantum backend available to the Qiskit Runtime service. If options is omitted or None, Orbit uses its built-in defaults: transpile and schedule circuits, insert the default DD strategy, submit to the service, and attach DD insertion metadata to the result.
Inputs
The typical call submits PUBs, selects a primitive, optionally selects a backend, and optionally passes Orbit-specific options:
job = orbit.run(
primitive="sampler",
pubs=[pub, pub, pub],
backend_name="ibm_boston",
options={
"pub_options": [
{"mode": "raw"},
{"mode": "orbit"},
{
"mode": "custom",
"dd_strategy": [[{"dd_sequence": "CPMG", "pulse_density": 1.00, "dd_reps": 1}]],
"transpilation_mode": "optimize",
"mem": True,
},
]
},
)
result = job.result()pubs provides the circuits and primitive inputs to run. primitive selects the Qiskit Runtime primitive contract. backend_name selects the IBM Quantum backend, or can be omitted to let Orbit choose a least-busy backend. options controls Orbit's DD insertion, Qiskit Runtime options, preview/simulator behavior, and metadata features. Full details for each input are below.
pubs
Type: Iterable[SamplerPubLike] or Iterable[EstimatorPubLike]
One or more PUBs matching the selected primitive.
- Required: Yes
- Valid input types: Iterable of Sampler PUB-like objects or iterable of Estimator PUB-like objects
Each PUB must match the selected primitive's input contract.
- For
primitive="sampler": each PUB follows the Sampler PUB shape, such as(circuit, parameter_values, shots). - For
primitive="estimator": each PUB follows the Estimator PUB shape, such as(circuit, observables, parameter_values, precision). - Circuits do not need to be ISA circuits in the default
options.transpilation_mode="optimize"path; Orbit transpiles and schedules them internally.
primitive
Type: str
Selects which Qiskit Runtime primitive Orbit uses for execution.
- Required: Yes
- Valid input types:
str
The primitive determines what each PUB must contain and what result data each PubResult returns.
- Choices:
"sampler"/"estimator" - Use
"sampler"for sampled bitstring data. - Use
"estimator"for expectation values and standard errors.
backend_name
Type: str or None
Default value: None
Name of the IBM Quantum backend to run on.
-
Required: No
-
Default value:
None -
Valid input types:
strorNone -
When omitted or
None, Orbit resolves an eligible operational non-simulator backend withleast_busy(). -
Example:
"ibm_boston"
options
Type: dict or None
Default value: None
Function-specific options controlling Orbit execution behavior.
- Required: No
- Default value:
None - Valid input types:
dictorNone
Options control transpilation, DD insertion, Qiskit Runtime options, preview mode, simulator mode, backend-information export, and measurement error mitigation.
- Unknown option keys are rejected.
- Pass
None,{}, or omitoptionsto use all defaults. - Example:
{
"pub_options": [
{"mode": "raw"},
{"mode": "orbit"},
{
"mode": "custom",
"dd_strategy": [[{"dd_sequence": "CPMG", "pulse_density": 1.00, "dd_reps": 1}]],
"transpilation_mode": "optimize",
"mem": True
}
]
}Options list
preview
Type: bool
Default value: False
Whether Orbit returns a DD insertion report without submitting a Qiskit Runtime job.
-
Required: No
-
Default value:
False -
Valid input types:
bool -
When
True, no QPU time is used; orbit simply pre-processes the circuits inpubsand provides an insertion report. -
When
False(default value), a Qiskit Runtime job with Orbit-modified circuits is submitted and processed. -
If both
previewandsimulatorareTrue, preview mode takes precedence and simulator execution is ignored.
debug_return_circuits
Type: bool
Default value: False
Whether preview mode includes the prepared post-Orbit circuit for each PUB in metadata.
-
Required: No
-
Default value:
False -
Valid input types:
bool -
Used only when
preview=True. -
When
True, each PUB report includesdebugCircuit.circuit,debugCircuit.usedQubits, and operation counts. It also includes best-effortdebugCircuit.qasmwhen Qiskit can export the circuit. -
Leave this disabled for normal runs because circuit payloads can be large.
transpilation_mode
Type: string
Default value: optimize
How Orbit prepares PUB circuits before DD insertion.
-
Required: No
-
Default value:
"optimize" -
Valid input values:
"optimize","prepare", or"validate" -
"optimize"runs repeated Qiskitoptimization_level=2transpilation and keeps the candidate with the lowest two-qubit depth for static and dynamic circuits. -
"prepare"runs Qiskitoptimization_level=0preparation and ALAP scheduling. Ifphysical_layoutis supplied, Orbit first materializes the circuit onto those physical wire indices and uses Qiskit's trivial layout method. -
"validate"treats the input circuit as already physically prepared. Orbit validates backend compatibility where practical, does not remap, route, optimize, or schedule-repair before DD insertion, and ignoresphysical_layoutwith a warning.
physical_layout
Type: object or null
Default value: None
Optional logical-to-physical qubit mapping.
- Required: No
- Default value:
None - Valid input types: object with non-negative integer keys and values, or
None
Example: {"0": 85, "1": 89} maps logical qubit 0 to physical qubit 85 and logical qubit 1 to physical qubit 89. Python callers may use integer keys; JSON object keys are strings.
- In
"optimize"mode, this is passed as an initial layout seed and the final mapping may change during optimization/routing. - In
"prepare"mode, Orbit materializes the circuit onto these physical wire indices, then uses level-0 preparation withlayout_method="trivial". Explicit routing SWAPs can still move quantum state during execution. - In
"validate"mode, the supplied circuit wires are authoritative, sophysical_layoutis ignored with a warning.
num_transpilation_steps
Type: int
Default value: 300
Number of stochastic transpilation seeds Orbit tries in transpilation_mode="optimize".
- Required: No
- Default value:
300 - Valid input types: positive integer
mem
Type: bool or None
Default value: None
Whether Orbit applies Sampler-only measurement error mitigation using M3.
-
Required: No
-
Default value:
None -
Valid input types:
boolorNone -
When
True, applies measurement error mitigation to shots fromsampler. -
When
False, does not post-process shots. -
When
None, Orbit mode enables MEM for executed Sampler PUBs and raw/custom modes skip MEM unless configured. -
Explicit
Truerequiresprimitive="sampler",preview=False, andsimulator=False. -
Raw Sampler counts are preserved and mitigated counts are attached to Orbit metadata.
-
If mitigation fails during post-processing, Orbit preserves the raw result and records the mitigation failure in metadata.
pub_options
Type: list[dict] or None
Default value: None
Per-PUB execution modes and overrides.
-
Required: No
-
Default value:
None -
Valid input types:
list[dict]orNone -
One entry is broadcast to all PUBs; otherwise pass one entry per PUB.
-
{"mode": "raw"}uses a single Qiskitoptimization_level=0transpilation and scheduling pass for static or dynamic circuits, and skips Orbit optimization, Orbit DD, dynamic DD, and MEM. -
{"mode": "orbit"}uses Orbit defaults. -
{"mode": "custom"}can overridetranspilation_mode,physical_layout,dd_qubits,dd_strategy,dynamic_dd_seq, andmemfor that PUB. -
Raw mode always uses
transpilation_mode="prepare"withphysical_layout=None, skips Orbit DD, and ignores global preparation options. -
Orbit and custom PUBs inherit global
transpilation_modeandphysical_layoutunless they override them per PUB. -
Use duplicated PUBs with
pub_optionsto compare raw, Orbit defaults, and a custom DD strategy in one Qiskit Runtime job. For a naive CPMG baseline, use{"dd_sequence": "CPMG", "pulse_density": 1.00, "dd_reps": 1}inside the custom PUB'sdd_strategy.
For caller-prepared circuits, use transpilation_mode="validate" for the Orbit-enabled PUBs:
options = {
"pub_options": [
{"mode": "raw"},
{"mode": "orbit", "transpilation_mode": "validate"},
{
"mode": "custom",
"transpilation_mode": "validate",
"dd_qubits": None,
"dd_strategy": [[{"dd_sequence": "CPMG", "pulse_density": 1.00, "dd_reps": 1}]],
"mem": False,
},
]
}dd_strategy
Type: list[list[dict]]
Ordered DD strategies to apply to PUB circuits.
-
Required: No
-
Default value:
[[{"dd_sequence": "auto", "pulse_density": 0.25, "dd_reps": 1}]] -
Valid input types:
list[list[dict]] -
Choices: Non-empty outer list of non-empty strategy lists.
-
The outer list indexes PUBs or circuits. If only one strategy is supplied, Orbit broadcasts it to all PUBs.
-
Each inner list is applied round by round to the same circuit.
-
Each round requires
dd_sequence;pulse_densitydefaults to0.25;dd_repsdefaults to1.
dd_strategy round fields
Type: str or dict or list
- Field:
dd_sequenceSequence to insert for one DD round. - Required: Yes
- Valid input types:
str,dict, or custom pulse-grouplist - Choices:
"auto", a built-in sequence name, a variant dictionary such as{"name": "ur", "variant": "8"}, or a custom list of pulse groups such as[[0.0], ["Y"], ["Xb", 0.5]]. - Fixed built-in names, organized by pulse slots: two-slot sequences are
"CPMG","pureY", and"superHahn"; four-slot sequences are"XY4"and"superCPMG"; eight-slot sequences are"XY8"; sixteen-slot sequences are"superEuler"; twenty-slot sequences are"KDD". - Parameterized built-in families:
"CDD-n"with integern >= 1("CDD-1"is equivalent to"XY4"and the sequence grows recursively);"UR-n"or"URn"with even integern >= 4(for example,"UR-8"or"URn8"); and"T-n"or"Tn"with even integern >= 2(for example,"T-8"or"Tn8"). - RGA built-in variants:
"RGA-2x","RGA-4","RGA-4p","RGA-8a","RGA-8c","RGA-16a","RGA-16b","RGA-32a","RGA-32c","RGA-64a","RGA-64c", and"RGA-256a". - Built-in sequence names are case-insensitive and ignore separators such as hyphens and underscores. For example,
"RGA-8a"and"rga8a"are equivalent, as are"UR-n-8"and"UR8". - Custom numeric entries are phases in units of pi for pi rotations in the xy plane.
0.0is +X and0.5is +Y. - Custom string aliases include
"X","Y","Xb", and"Yb".
Type: float
- Field:
pulse_densityFraction of each idle gap available for this round's DD pulses. - Required: No
- Default value:
0.25 - Valid input types:
floatorint - Choices: Float from
0.0through1.0 0.0leaves gaps unpadded for that round.1.0packs pulses as densely as the sequence timing permits.
Type: int
Default value: 1
- Field:
dd_repsNumber of repetitions of this round's DD sequence inside each qualifying idle gap. - Required: No
- Default value:
1 - Valid input types:
int - Choices: Integer >= 1
dynamic_dd_seq
Type: str or dict or list or None
Default value: XY8
DD sequence used for Orbit's dynamic-circuit feedforward DD insertion.
-
Required: No
-
Default value:
"XY8" -
Valid input types:
str,dict, custom pulse-grouplist, orNone -
Choices: Same sequence forms as
dd_strategy[].dd_sequence, orNoneto disable the dynamic feedforward insertion stage. -
Applies when Orbit detects conditional logic or control flow and uses the dynamic-circuit DD pipeline.
-
The normal
dd_strategypass runs first, then Orbit applies this sequence across labelled dynamic feedforward regions.
dd_qubits
Type: list[int] or None
Default value: None
Global default allowlist of qubit indices eligible for Orbit DD insertion.
-
Required: No
-
Default value:
None -
Valid input types:
list[int]orNone -
Choices:
Noneor a list of integers >= 0 -
Nonetargets active/touched qubits only. -
A list can include idle-only qubits and excludes qubits not listed.
-
pub_options[i].dd_qubitscan override this value insideorbitorcustomPUB entries. -
Explicit allowlists may only be supplied for Orbit-enabled PUBs whose resolved
transpilation_modeis"validate", so the caller owns the physical qubit indices. Raw PUBs skip Orbit DD and do not acceptdd_qubits.
save_backend_info
Type: bool
Default value: False
Whether Orbit saves backend calibration properties after an executed Qiskit Runtime job.
-
Required: No
-
Default value:
False -
Valid input types:
bool -
Choices:
True/False -
When enabled, Orbit queries
service.job(job_id).properties(), writes the serialized backend properties under/data, and reports the saved path in Orbit metadata. -
Failures are reported as warnings and do not discard otherwise successful primitive results.
default_shots
Type: int
Default value: 4096
Default shots used for Sampler PUBs that do not specify shots explicitly.
-
Required: No
-
Default value:
4096 -
Valid input types:
int -
Choices: Integer > 0
-
Applies only to
primitive="sampler".
default_precision
Type: float
Default value: 0.015625
Default target precision used for Estimator PUBs that do not specify precision explicitly.
-
Required: No
-
Default value:
0.015625 -
Valid input types:
floatorint -
Choices: Float > 0
-
Applies only to
primitive="estimator".
runtime_options
Type: dict
Qiskit Runtime primitive options passed through to the underlying SamplerV2 or EstimatorV2 primitive.
-
Required: No
-
Default value:
{"resilience_level": 0, "dynamical_decoupling": {"enable": false}} -
Valid input types:
dict -
Nested option dictionaries are accepted, including advanced and experimental Qiskit Runtime options for the selected primitive.
-
Runtime dynamical decoupling is disabled by default so Orbit's DD insertion is the only DD pass unless the user opts in.
For example, advanced Sampler users can enable dynamic-circuit debugging fields:
options = {
"runtime_options": {
"experimental": {
"execution": {
"scheduler_timing": True,
"stretch_values": True,
}
}
}
}- Warning: One should thus alter this value with care, turning on specific approaches like twirling on manually while continuing to exclude DD.
resilience_level
Type: int or None
Default value: 0
Estimator Runtime resilience level.
-
Required: No
-
Default value:
0 -
Valid input types:
intorNone -
Choices:
0/1/2/None -
Applies to
primitive="estimator". -
Use
Noneto leave the Runtime option unset. -
If set for
primitive="sampler", Orbit ignores it and adds a warning to Orbit metadata.
dynamical_decoupling
Type: dict
Dynamical-decoupling options passed through to Qiskit Runtime.
- Required: No
- Default value:
{"enable": false} - Valid input types:
dict
enable
Type: bool
Default value: False
Whether to enable Qiskit Runtime DD in addition to Orbit DD insertion.
-
Required: No
-
Default value:
False -
Valid input types:
bool -
Choices:
True/False -
When enabled, Orbit adds a warning because applying both Runtime DD and Orbit DD can produce unexpected behavior.
sequence_type
Type: str or None
Default value: None
Optional Runtime DD sequence type.
- Required: No
- Default value:
None - Valid input types:
strorNone
Passed through to Qiskit Runtime when provided.
scheduling_method
Type: str or None
Default value: None
Optional Runtime DD scheduling method.
- Required: No
- Default value:
None - Valid input types:
strorNone
Passed through to Qiskit Runtime when provided.
extra_slack_distribution
Type: str or None
Default value: None
Optional Runtime DD extra-slack distribution.
- Required: No
- Default value:
None - Valid input types:
strorNone
Passed through to Qiskit Runtime when provided.
skip_reset_qubits
Type: bool or None
Default value: None
Optional Runtime DD setting controlling whether reset qubits are skipped.
- Required: No
- Default value:
None - Valid input types:
boolorNone
Passed through to Qiskit Runtime when provided.
max_execution_time
Type: int or None
Default value: None
Soft cap on the Qiskit Runtime job's maximum execution time.
- Required: No
- Default value:
None - Valid input types:
intorNone
The value is specified in seconds.
- Choices:
Noneor integer > 0 - When
None, the Runtime default is used.
simulator
Type: bool
Default value: False
Whether Orbit executes the workload on a local Aer simulator instead of a real QPU.
- Required: No
- Default value:
False - Valid input types:
bool
The simulator runs inside the function container.
- Choices:
True/False - Ignored when
previewisTrue. - A normal
PrimitiveResultis returned with Orbit metadata attached.
simulator_noise
Type: str
Default value: backend
Noise model used when simulator is True.
-
Required: No
-
Default value:
"backend" -
Valid input types:
str -
Choices:
"backend"/"ideal" -
"backend"usesAerSimulator.from_backend(backend)when possible. -
"ideal"uses a plain noise-freeAerSimulator.
gate_dur
Type: int or None
Default value: None
Duration of one DD gate or pulse.
-
Required: No
-
Default value:
None -
Valid input types:
intorNone -
Warning: Use an explicit value only for controlled tests or when you have a calibrated backend-specific reason.
-
The value uses the same units the backend uses for delays, typically
dt. -
Choices:
Noneor integer > 0 -
When
None, Orbit resolves a backend-aware value frombackend.targetusing the longer calibrated X or sqrt(X) gate duration.
Outputs
The function returns a Qiskit PrimitiveResult containing one PubResult per input PUB. Orbit preserves the selected primitive's normal result data and adds Orbit metadata under quantum_elements_orbit.
Type: PrimitiveResult
Standard Qiskit primitive result with Orbit metadata attached.
- For
primitive="sampler", eachPubResult.datacontains Sampler result data such as classical-register bit arrays. - For
primitive="estimator", eachPubResult.datacontains Estimator result data such as expectation values and standard errors. - In preview mode, each
PubResult.datais empty because no Qiskit Runtime primitive is submitted.
Top-level metadata
metadata["quantum_elements_orbit"]
Type: dict[str, Any]
Aggregated Orbit report for the full function call.
functionVersion
Type: str
Orbit core version that produced the result.
preview
Type: bool
Whether the result was produced in preview mode.
simulator
Type: bool
Whether simulator mode was requested.
simulatorNoise
Type: str
Simulator noise mode: "backend" or "ideal".
primitive
Type: str
Selected primitive: "sampler" or "estimator".
ddStrategy
Type: list[list[dict]]
Normalized DD strategy used for the run.
pubOptions
Type: list[dict[str, Any]]
Resolved per-PUB execution modes and overrides. Each entry includes the PUB index, mode, resolved transpilationMode, physicalLayout, mem, orbitEnabled, ddQubits, dynamicDdSeq, and, when applicable, the resolved per-PUB ddStrategy.
dynamicDdSeq
Type: str or dict or list or None
Dynamic-circuit feedforward DD sequence used for the run.
ddQubits
Type: list[int] or None
Global DD qubit allowlist default used for the run. Per-PUB reports include the resolved allowlist for each PUB.
runtimeOptions
Type: dict[str, Any]
Runtime options Orbit attempted to apply, including resilienceLevel and dynamicalDecoupling.
transpilationMode
Type: string
Global circuit-preparation mode requested for Orbit-enabled PUBs.
physicalLayout
Type: dict or None
Global logical-to-physical layout mapping requested for Orbit-enabled PUBs.
numTranspilationSteps
Type: int
Number of stochastic transpilation seeds configured for optimized transpilation.
backendInfo
Type: dict[str, Any]
Backend calibration export status. Includes enabled, saved, and, when available, backend name, Qiskit Runtime job ID, saved path, and warnings.
warnings
Type: list[str]
Run-level warnings, such as preview overriding simulator mode, Runtime DD being enabled alongside Orbit DD, or Sampler ignoring resilience_level.
pubs
Type: list[dict[str, Any]]
One Orbit insertion report per input PUB.
metadata["resource_usage"]
Type: dict[str, dict[str, float]]
Per-phase resource usage with entries for hardware optimization, waiting for QPU, QPU execution, and post-processing.
- Phases include
RUNNING: OPTIMIZING_FOR_HARDWARE,RUNNING: WAITING_FOR_QPU,RUNNING: EXECUTING_QPU, andRUNNING: POST_PROCESSING. RUNNING: EXECUTING_QPUincludesQPU_TIME.
Per-PUB Orbit metadata
Each PubResult.metadata["quantum_elements_orbit"] contains the insertion report for that PUB.
pubIndex
Type: int
Index of the PUB in the submitted workload.
mode
Type: str
Resolved per-PUB execution mode: "raw", "orbit", or "custom".
orbitEnabled
Type: bool
Whether Orbit DD insertion was enabled for the PUB.
transpilationMode
Type: string
Resolved circuit-preparation mode for this PUB.
physicalLayout
Type: dict or None
Resolved logical-to-physical layout mapping for this PUB. In validate mode this value is ignored with a warning.
mem
Type: bool or None
Resolved measurement error mitigation setting for this PUB.
dynamicDdSeq
Type: str or dict or list or None
Resolved dynamic-circuit feedforward DD sequence for this PUB.
ddQubits
Type: list[int] or None
Resolved DD qubit allowlist for this PUB.
status
Type: str
DD insertion status for this PUB, such as whether DD was applied or skipped.
numRounds
Type: int
Number of DD strategy rounds applied to the PUB.
warnings
Type: list[str]
PUB-level warnings from DD insertion and compatibility handling.
insertionSummary
Type: dict[str, Any]
Overall DD insertion summary for this PUB. Includes status, starting and filled gap counts, number of DD sequences added, added gate counts, gate duration, circuit depth and size before and after insertion, and insertion warnings.
perRoundSummaries
Type: list[dict[str, Any]]
Round-by-round DD insertion summaries. Each entry includes the round index, sequence, pulse density, repetitions, gap counts, added gate counts, gate duration, circuit depth and size before and after that round, and warnings.
measurementErrorMitigation
Type: dict[str, Any]
Present when resolved MEM is enabled for at least one PUB. Reports whether M3 mitigation was applied, partially applied, skipped, or failed. Per-PUB entries preserve unmitigated counts and include mitigated counts when mitigation succeeds.
DD inserts real pulses and sub-delays into scheduled idle windows, so reported circuit depth and size usually increase. The insertion preserves the scheduled idle-window duration; it does not try to preserve gate depth.
Preview output
When options.preview is True, Orbit returns a metadata-only PrimitiveResult. No Qiskit Runtime job is submitted, no Sampler counts or Estimator values are populated, and QPU time is reported as 0.0. Use preview mode to inspect DD insertion reports before running on hardware.
Simulator output
When options.simulator is True and options.preview is False, Orbit executes the post-DD workload with a local Aer simulator inside the function container. The result is still a normal PrimitiveResult; Orbit records simulator=True and the selected simulatorNoise mode in top-level metadata.
Measurement error mitigation output
When resolved MEM is enabled for at least one PUB, Orbit attaches measurementErrorMitigation metadata. When MEM succeeds, the Sampler register's get_counts() method returns the MEM-corrected histogram. The unmitigated Runtime counts remain available as measurementErrorMitigation["rawCounts"].
Successful per-PUB mitigation entries include:
enabledmethodstatusregisterrawCountsquasiDistributionmitigatedCountsmeasurementMappingmappingSourcerawCountsPreserved
For dynamic circuits, Orbit applies MEM to the returned output bitstring as histogram post-processing. Orbit does not infer whether each bit originated from a terminal measurement or a mid-circuit measurement, and it does not retroactively or in real time change conditional branches that used unmitigated measurement results. This treatment is appropriate for bitstrings intended as circuit outputs, but users should not interpret it as correction of the dynamic control flow that produced those outputs.
If mitigation fails, Orbit preserves the raw Qiskit Runtime result and records the failure status and error message in metadata.
Error handling
Orbit raises structured qiskit_serverless.ServerlessError errors for fatal failures. Each error includes a code, message, and details payload. Orbit maps errors to existing IBM Quantum error-code categories when possible; validation errors use code 1221. Orbit-specific errors use the QE reserved code range 4700 through 4709 when no existing IBM Quantum code is a better match. See the IBM Quantum error code reference for general error-code guidance.
Check the error message and details fields first. They identify the invalid field, backend, PUB index, or upstream Qiskit Runtime failure when Orbit can determine it.
- Input validation errors use code
1221. These include invalid option types, unknown option keys, emptypubs, invaliddd_strategy, invalidpub_optionslength,dd_qubitswith resolvedtranspilation_modeother than"validate", caller-prepared circuits that are not compatible with the selected backend target, invalidphysical_layoutvalues, and incompatible MEM requests such asmem=Truewithprimitive="estimator",preview=True, orsimulator=True. - Unsupported primitive errors use code
1211. Orbit accepts onlyprimitive="sampler"andprimitive="estimator". - Backend selection or backend capability errors use code
1007or1009. These include unavailable backend names, no eligible least-busy backend, or a backend without the timing information required for DD insertion. - DD insertion and QASM round-trip failures use code
1003. These can occur when a circuit cannot be transpiled, scheduled, converted, or padded consistently for the selected backend and DD strategy. - Qiskit Runtime submission failures use code
1245; jobs that fail before producing a result use code5203. Orbit preserves an upstream Qiskit Runtime error code when one is exposed, with the Orbit fallback code indetails. - Unexpected Orbit-specific failures are reported as structured errors in the QE reserved range (
4700--4709) when no existing IBM Quantum error code applies.
Non-fatal conditions are reported as warnings instead of failing the job when Orbit can safely preserve the result. Run-level warnings appear in metadata["quantum_elements_orbit"]["warnings"]; PUB-level warnings appear in each PUB report. Recoverable warning events use code 1300 when the Qiskit Functions environment accepts warning events. Examples include preview=True taking precedence over simulator=True, Qiskit Runtime DD being enabled alongside Orbit DD, Sampler ignoring runtime_options.resilience_level, or backend calibration export failing while the primitive result is otherwise available.
Measurement error mitigation failures are also non-fatal. If M3 mitigation cannot be applied, Orbit preserves the raw Sampler result and records measurementErrorMitigation.status="failed" with an error message in Orbit metadata.