Full Reference →

Braket Cheat Sheet

Install: pip install amazon-braket-sdk

Background and History

Amazon Braket was announced at AWS re:Invent in December 2019 and entered general availability in August 2020. The service was AWS’s entry into the quantum computing market, taking a vendor-neutral cloud approach rather than building proprietary quantum hardware. The name “Braket” references bra-ket notation, the standard mathematical formalism used in quantum mechanics. The Braket Python SDK, which provides the Circuit class and device interfaces covered in this reference, was open-sourced on GitHub alongside the service launch.

Amazon Braket’s core value proposition is unified access to multiple quantum hardware providers through a single API. At launch, the service offered processors from three vendors: superconducting qubits from Rigetti, trapped ions from IonQ, and quantum annealers from D-Wave. Over time, AWS added support for additional providers, including Oxford Quantum Circuits (OQC), QuEra’s neutral atom processor Aquila, and IQM’s superconducting systems. This multi-vendor model allows researchers and developers to benchmark algorithms across different hardware modalities without managing separate accounts and SDKs for each provider.

The SDK itself is a lightweight Python library that handles circuit construction, device management, and result retrieval. It was designed to be straightforward for developers already familiar with AWS infrastructure, using standard AWS patterns like S3 for result storage, IAM for access control, and CloudWatch for monitoring. The Hybrid Jobs feature, introduced in 2021, provides managed classical-quantum compute environments for iterative algorithms like VQE and QAOA, with co-located classical instances that reduce round-trip latency to quantum hardware.

As of 2025, Amazon Braket remains actively maintained and is one of the primary paths for enterprise teams to access quantum computing within existing AWS workflows. The Braket SDK has accumulated a moderate open-source community, though its adoption is concentrated among organizations already invested in the AWS ecosystem. AWS has also invested in the Amazon Quantum Solutions Lab, a consultancy program that uses Braket as its technical foundation.

Installation

pip install amazon-braket-sdk

For local simulation without AWS credentials:

pip install amazon-braket-default-simulator

Key Imports

from braket.circuits import Circuit, Gate, Qubit
from braket.devices import LocalSimulator
from braket.aws import AwsDevice

Devices

Braket separates local simulators (free, no AWS) from cloud devices (billed per task).

Local simulators

from braket.devices import LocalSimulator

device = LocalSimulator()                         # default statevector
device = LocalSimulator('braket_sv')              # statevector
device = LocalSimulator('braket_dm')              # density matrix
device = LocalSimulator('braket_ahs')             # analog Hamiltonian

AWS managed simulators

from braket.aws import AwsDevice

device = AwsDevice("arn:aws:braket:::device/quantum-simulator/amazon/sv1")   # SV1 statevector
device = AwsDevice("arn:aws:braket:::device/quantum-simulator/amazon/tn1")   # TN1 tensor network
device = AwsDevice("arn:aws:braket:::device/quantum-simulator/amazon/dm1")   # DM1 density matrix

Real hardware

# IQM (superconducting)
device = AwsDevice("arn:aws:braket:eu-north-1::device/qpu/iqm/Garnet")

# IonQ (trapped ion)
device = AwsDevice("arn:aws:braket:us-east-1::device/qpu/ionq/Aria-1")

# QuEra (neutral atom)
device = AwsDevice("arn:aws:braket:us-east-1::device/qpu/quera/Aquila")

Circuit Construction

Braket circuits use method chaining - each gate method returns the circuit.

from braket.circuits import Circuit

circuit = Circuit()
circuit.h(0)                 # Hadamard on qubit 0
circuit.cnot(0, 1)           # CNOT, control=0, target=1
circuit.measure([0, 1])      # explicit measurement (optional for simulators)

Chained style:

circuit = Circuit().h(0).cnot(0, 1)

Gates

circuit.h(qubit)             # Hadamard
circuit.x(qubit)             # Pauli-X
circuit.y(qubit)             # Pauli-Y
circuit.z(qubit)             # Pauli-Z
circuit.s(qubit)             # S gate
circuit.t(qubit)             # T gate
circuit.cnot(control, target) # CNOT
circuit.cz(q1, q2)           # Controlled-Z
circuit.swap(q1, q2)         # SWAP
circuit.ccnot(q1, q2, q3)    # Toffoli

# Rotation gates (angles in radians)
circuit.rx(qubit, angle)
circuit.ry(qubit, angle)
circuit.rz(qubit, angle)

# Arbitrary unitary
import numpy as np
circuit.unitary(matrix=np.eye(2), targets=[0])

Running Circuits

Local simulation

from braket.devices import LocalSimulator

device = LocalSimulator()
task = device.run(circuit, shots=1000)
result = task.result()

print(result.measurement_counts)   # {'00': 503, '11': 497}
print(result.measurements)         # raw 2D array
print(result.measurement_probabilities)

Cloud execution

from braket.aws import AwsDevice, AwsSession

device = AwsDevice("arn:aws:braket:::device/quantum-simulator/amazon/sv1")
task = device.run(circuit, s3_destination_folder=('my-bucket', 'results'), shots=100)

# Task runs asynchronously - poll for result
result = task.result()
print(result.measurement_counts)

Task status

task.state()       # 'RUNNING', 'COMPLETED', 'FAILED', etc.
task.cancel()      # cancel a queued task

Common Patterns

Bell state

from braket.circuits import Circuit
from braket.devices import LocalSimulator

circuit = Circuit().h(0).cnot(0, 1)
device = LocalSimulator()
result = device.run(circuit, shots=1000).result()
print(result.measurement_counts)

Statevector (no shots)

circuit = Circuit().h(0).cnot(0, 1)
device = LocalSimulator()
result = device.run(circuit, shots=0).result()
print(result.values[0].real)   # statevector

Parameterised circuits

from braket.circuits import FreeParameter

angle = FreeParameter('angle')
circuit = Circuit().h(0).rx(0, angle)

result = device.run(circuit, shots=100, inputs={'angle': 1.57}).result()

Noise simulation

from braket.circuits import Circuit
from braket.circuits.noise import BitFlip, Depolarizing
from braket.devices import LocalSimulator

circuit = Circuit().h(0).bit_flip(0, 0.01).cnot(0, 1)
device = LocalSimulator('braket_dm')
result = device.run(circuit, shots=1000).result()

Result Object

result.measurement_counts          # dict: bitstring → count
result.measurements                # numpy array of shape (shots, n_qubits)
result.measurement_probabilities   # dict: bitstring → probability
result.values                      # raw result data (statevector, etc.)