Documentation menu
API reference
Qubit design
https://api.cogitan.ai/v1/fluxus; a local engine serves the same route under /api. GET routes are free on the hosted API; every POST consumes one call of quota./v1/fluxus/cell/eval
engine path /api/cell/eval · metered
Evaluate one placed cell with its surrogate (metrics + health).
What it does, in full
Evaluate one placed cell with its surrogate (metrics + health).
Request
Body: CellEvalRequest
Evaluate one placed cell with its surrogate.
Example
curl -s "$FLUXUS_API/cell/eval" -H "Authorization: Bearer $COGITAN_API_KEY" \
-H 'content-type: application/json' \
-d '{"kind": "quantum", "name": "transmon_resonator", "params": {"lj_nh": 12}}'Example body: the cell-library quantum cell
What it refuses
- unknown cell -> HTTP 400
Responses: 200 Successful Response; 422 Validation Error.
Validated for
fidelity surrogate_of_analytic_oracle
see qem_cross for the TransmonCross chain and qem for the parallel-pad family; nothing here is silicon
The full cell_eval card/v1/fluxus/chip
engine path /api/chip · free
Chip map for rendering: node coordinates, roles, edges, targets.
What it does, in full
Chip map for rendering: node coordinates, roles, edges, targets.
Coordinates are lattice grid units (scale freely). role is the heavy-hex role code (0/1 vertex sublattice, 2 edge qubit; square lattices report -1). f_ghz is the default frequency-allocation pattern the yield Monte Carlo uses when no targets are supplied.
Request
Query parameters
Example
curl -s "$FLUXUS_API/chip?n_qubits=27&lattice=heavy_hex" -H "Authorization: Bearer $COGITAN_API_KEY"CLI: fluxus qubit chip
Example body: a 27-qubit heavy-hex chip
What it refuses
- n_qubits outside [1, 2000] -> HTTP 400
Responses: 200 Successful Response; 422 Validation Error.
Validated for
fidelity metadata
see qem_cross for the TransmonCross chain and qem for the parallel-pad family; nothing here is silicon
The full chip_map card/v1/fluxus/coupling/coupler-sweep
engine path /api/coupling/coupler-sweep · metered
ZZ and effective qubit-qubit coupling vs tunable-coupler frequency, and the idle points where each crosses zero (exact), beside Yan et al.'s analytic g~ and its zero.
What it does, in full
ZZ and effective qubit-qubit coupling vs tunable-coupler frequency, and the idle points where each crosses zero (exact), beside Yan et al.'s analytic g~ and its zero.
Request
Body: CouplerSweepRequest
Transmon - tunable coupler - transmon, branch capacitances in fF.
Yan et al., Phys. Rev. Applied 10, 054062 (2018), Fig. 2(a): c1, cc, c2 to ground; c1c, c2c to the coupler; c12 directly between the qubits.
Object: QubitJunction
One transmon's junction: exactly one of lj_nh, ej_ghz, f01_ghz.
f01_ghz is the target BARE frequency of the loaded transmon; EJ is then solved for from the exact charge-basis spectrum.
Example
curl -s "$FLUXUS_API/coupling/coupler-sweep" -H "Authorization: Bearer $COGITAN_API_KEY" \
-H 'content-type: application/json' \
-d '{"c1_ff": 70, "c2_ff": 72, "cc_ff": 200, "c1c_ff": 4, "c2c_ff": 4.2, "c12_ff": 0.1, "qubit1": {"f01_ghz": 4.0}, "qubit2": {"f01_ghz": 4.0}, "fc_min_ghz": 4.5, "fc_max_ghz": 7.0, "n_points": 41}'Example body: docs/qubit/API_AND_CLI.md, s14
What it refuses
- non-symmetric, negative (branch) or non-positive-definite capacitance matrix -> HTTP 400 invalid_circuit with problems[]
- more than the size caps in
envelope-> HTTP 400 invalid_circuit - a quantity whose dressed levels are hybridised (overlap below 0.7236) -> null, with the reason in
refused - out-of-range number (capacitance outside [0, 10000] fF, frequency outside (0, 50] GHz, EJ outside (0, 500] GHz) -> HTTP 422
- fc_max_ghz not above fc_min_ghz -> HTTP 400
- a coupler frequency the coupler EC cannot reach as a transmon -> HTTP 400
Responses: 200 Successful Response; 422 Validation Error.
Validated for
fidelity exact_diagonalisation_of_lumped_circuit
Yan et al., Phys. Rev. Applied 10, 054062 (2018): Eq. (5) worked example and the Fig. 2 circuit
The full coupling_coupler_sweep card/v1/fluxus/coupling/modes
engine path /api/coupling/modes · metered
Dressed frequencies, anharmonicities and the full chi matrix of a small lumped circuit (a trimon, a coupled pair, a chain), by exact diagonalisation. chi_ij = E(1_i 1_j) - E(1_i) - E(1_j) + E(0).
What it does, in full
Dressed frequencies, anharmonicities and the full chi matrix of a small lumped circuit (a trimon, a coupled pair, a chain), by exact diagonalisation. chi_ij = E(1_i 1_j) - E(1_i) - E(1_j) + E(0).
Request
Body: ModesRequest
A small lumped circuit: capacitance matrix plus junctions.
Object: JunctionIn
A junction from node a to node b (null = ground): lj_nh or ej_ghz.
Example
curl -s "$FLUXUS_API/coupling/modes" -H "Authorization: Bearer $COGITAN_API_KEY" \
-H 'content-type: application/json' \
-d '{"capacitance_ff": [[46, 21, 4, 21], [21, 30, 21, 3], [4, 21, 53, 21], [21, 3, 21, 36]], "convention": "branch", "labels": "normal", "junctions": [{"a": 0, "b": 1, "ej_ghz": 8.16}, {"a": 1, "b": 2, "ej_ghz": 8.16}, {"a": 2, "b": 3, "ej_ghz": 8.16}, {"a": 3, "b": 0, "ej_ghz": 8.16}]}'CLI: fluxus qubit modes
Example body: docs/qubit/API_AND_CLI.md, s15
What it refuses
- non-symmetric, negative (branch) or non-positive-definite capacitance matrix -> HTTP 400 invalid_circuit with problems[]
- more than the size caps in
envelope-> HTTP 400 invalid_circuit - a quantity whose dressed levels are hybridised (overlap below 0.7236) -> null, with the reason in
refused - out-of-range number (capacitance outside [0, 10000] fF, frequency outside (0, 50] GHz, EJ outside (0, 500] GHz) -> HTTP 422
- a junction naming a node outside the matrix, or joining a node to itself -> HTTP 400
- no junction, or no dynamical mode -> HTTP 400
Responses: 200 Successful Response; 422 Validation Error.
Validated for
fidelity exact_diagonalisation_of_lumped_circuit
Maurya et al., arXiv:2603.04566 (trimon), Appendix B design capacitance matrix and EJ = 8.16 GHz; Table AI measured values
The full coupling_modes card/v1/fluxus/coupling/pair
engine path /api/coupling/pair · metered
J, static ZZ (exact and perturbative) and dressed frequencies of two transmons coupled by a capacitor (capacitive) or a shared resonator (bus). A value whose dressed levels are hybridised is null, with the reason in refused.
What it does, in full
J, static ZZ (exact and perturbative) and dressed frequencies of two transmons coupled by a capacitor (capacitive) or a shared resonator (bus). A value whose dressed levels are hybridised is null, with the reason in refused.
Request
Body: CouplingPairRequest
Exactly one of capacitive and bus.
Object: CapacitivePair
Two grounded transmons joined by one capacitor (branch values, fF).
Object: QubitJunction
One transmon's junction: exactly one of lj_nh, ej_ghz, f01_ghz.
f01_ghz is the target BARE frequency of the loaded transmon; EJ is then solved for from the exact charge-basis spectrum.
Object: BusPair
Two transmons coupled only through one resonator mode.
Example
curl -s "$FLUXUS_API/coupling/pair" -H "Authorization: Bearer $COGITAN_API_KEY" \
-H 'content-type: application/json' \
-d '{"capacitive": {"c1_ff": 123.65, "c2_ff": 123.65, "cc_ff": 1, "qubit1": {"lj_nh": 9.686}, "qubit2": {"lj_nh": 10.6}}}'CLI: fluxus qubit couple
Example body: docs/qubit/API_AND_CLI.md, s13
What it refuses
- non-symmetric, negative (branch) or non-positive-definite capacitance matrix -> HTTP 400 invalid_circuit with problems[]
- more than the size caps in
envelope-> HTTP 400 invalid_circuit - a quantity whose dressed levels are hybridised (overlap below 0.7236) -> null, with the reason in
refused - out-of-range number (capacitance outside [0, 10000] fF, frequency outside (0, 50] GHz, EJ outside (0, 500] GHz) -> HTTP 422
- both or neither of capacitive and bus -> HTTP 400
- a qubit with not exactly one of lj_nh, ej_ghz, f01_ghz -> HTTP 400
- a target f01 below the EJ/EC = 1 value -> HTTP 400
Responses: 200 Successful Response; 422 Validation Error.
Validated for
fidelity exact_diagonalisation_of_lumped_circuit
limits and second-order perturbation theory of the same circuit Hamiltonian; no measured ZZ
The full coupling_pair card/v1/fluxus/em/inductance
engine path /api/em/inductance · metered
Partial-inductance field solve over supplied conductor segments.
What it does, in full
Partial-inductance field solve over supplied conductor segments.
Runs the REAL closed-form PEEC field solver (fluxus.em.inductance.extract_inductance): Grover straight-bar self terms + Neumann centre-filament mutuals, reduced to a loop/net inductance, with optional London kinetic inductance and a perfect-conductor ground-plane image. Returns the solver's stable dict: L_pH, L_geometric_pH, L_kinetic_pH, L_matrix_pH, n_segments, n_image_segments, london_nm, ground_plane, method, caveat.
DISTINCT from /api/chip/parasitics (a squares-rule ESTIMATE) and /api/chip/extract (an extraction HANDOFF manifest): this is an actual field solve. Its loop sums are checked against closed-form PEEC sums (hairpin, rectangle, square loop) and its mutuals against an independent Neumann quadrature; the model itself (centre-filament mutuals, uniform-current bar self term, ideal image plane) is not validated against measurement or a full field solver, and it is NOT InductEx-grade (no cross-section current solve, no multilayer superconducting stackup). Bad geometry yields a 400 with the structured error envelope.
Request
Body: InductanceRequest
Partial-inductance field-solve request over conductor segments.
segments are the bars of one current path in DRAWN order. london_nm (e.g. ~90 for Nb) adds the superconducting kinetic inductance; ground_plane_z_um (when supplied) puts a perfect-conductor plane at that height, modelled by image bars; the returned L is the conductors' inductance over the plane (half the wire+image loop, L_self - |M_image| for one bar), kinetic term over the real conductors only. All conductors must lie on one side of the plane.
Object: InductanceSegment
One straight rectangular conductor bar for the inductance field solve.
start / end are 3-D points in microns; width_um / thickness_um are the bar cross-section. Matches the dict shape fluxus.em.inductance.extract_inductance consumes.
Example
curl -s "$FLUXUS_API/em/inductance" -H "Authorization: Bearer $COGITAN_API_KEY" \
-H 'content-type: application/json' \
-d '{"segments": [{"start": [0, 0, 0], "end": [1000, 0, 0], "width_um": 1.0, "thickness_um": 0.2}, {"start": [1000, 0, 0], "end": [1000, 50, 0], "width_um": 1.0, "thickness_um": 0.2}, {"start": [1000, 50, 0], "end": [0, 50, 0], "width_um": 1.0, "thickness_um": 0.2}, {"start": [0, 50, 0], "end": [0, 0, 0], "width_um": 1.0, "thickness_um": 0.2}]}'Example body: a 1000 x 50 um rectangular loop, as in the inductance test suite
What it refuses
- more than 1,000 segments -> HTTP 422
- degenerate geometry -> HTTP 400
Responses: 200 Successful Response; 422 Validation Error.
Validated for
fidelity analytic_field_solve
see qem_cross for the TransmonCross chain and qem for the parallel-pad family; nothing here is silicon
The full em_inductance card/v1/fluxus/floorplan/eval
engine path /api/floorplan/eval · metered
Evaluate a placed design: per-cell metrics + chip-level rollup.
What it does, in full
Evaluate a placed design: per-cell metrics + chip-level rollup.
Request
Body: FloorplanRequest
Object: FloorplanCell
Example
curl -s "$FLUXUS_API/floorplan/eval" -H "Authorization: Bearer $COGITAN_API_KEY" \
-H 'content-type: application/json' \
-d '{"cells": [{"id": "q1", "kind": "quantum", "name": "transmon_resonator", "params": {"lj_nh": 12}}, {"id": "q2", "kind": "quantum", "name": "transmon_resonator", "params": {"lj_nh": 14}}], "wires": [{"from": ["q1", "coupler"], "to": ["q2", "coupler"]}]}'Example body: two coupled cell-library qubits
What it refuses
- duplicate cell ids or malformed wires -> HTTP 400
Responses: 200 Successful Response; 422 Validation Error.
Validated for
fidelity surrogate_of_analytic_oracle
see qem_cross for the TransmonCross chain and qem for the parallel-pad family; nothing here is silicon
The full floorplan_eval card/v1/fluxus/gds
engine path /api/gds · metered
Export one quantum design cell as a GDSII mask, base64 in JSON.
What it does, in full
Export one quantum design cell as a GDSII mask, base64 in JSON.
Builds the planar transmon + CPW-resonator layout with fluxus.layout.gds.cellspec_to_gds (same pad / gap / ground-cutout conventions as the capacitance solver) and returns the GDS file bytes as base64 so the browser can download it. Returns {filename, gds_base64, size_bytes, n_polygons, area_um2, source}. HONEST scope: a single-qubit-plus-resonator mask for layout sanity and area accounting, NOT a DRC-clean, tape-out-ready reticle and NOT an EM mesh. Bad cell parameters yield a 400 with the structured error envelope.
Request
Body: GdsRequest
GDS-export request: one quantum design cell, flat keys.
Same flat-key shape /api/qem accepts (fluxus.core.cell_from_flat aliases), so the Design desk can post its current cell straight to the GDS writer. Omitted fields use CellSpec defaults. An optional filename names the downloaded file (sanitized server-side; defaults to transmon_cell.gds).
Example
curl -s "$FLUXUS_API/gds" -H "Authorization: Bearer $COGITAN_API_KEY" \
-H 'content-type: application/json' \
-d '{}'CLI: fluxus qubit gds-pad
Example body: every field at its default
What it refuses
- the same physical-validity check as /api/qem -> HTTP 400
- length_um over 100,000 um -> HTTP 422
Responses: 200 Successful Response; 422 Validation Error.
Validated for
fidelity layout_geometry
see qem_cross for the TransmonCross chain and qem for the parallel-pad family; nothing here is silicon
The full gds card/v1/fluxus/gds/cross
engine path /api/gds/cross · metered · returns a file, not JSON
Export one TransmonCross cell (the SQuADDS geometry) as GDSII bytes.
What it does, in full
Export one TransmonCross cell (the SQuADDS geometry) as GDSII bytes.
Draws qiskit-metal's TransmonCross with fluxus.layout.cross (cross, cross pocket, claw with its ground spacing and claw_cpw stub, and a junction marker) and returns the file itself, application/octet-stream with a Content-Disposition filename. Unlike /api/gds (base64 in JSON), the body is the .gds file.
A geometry outside the trained envelope is still exported, since it is only geometry. X-Fluxus-Envelope says in or outside: whether /api/qem/cross's predictions for this cell come from the HFSS-trained engines (capacitance and fr), and X-Fluxus-Envelope-Detail is the JSON from fluxus.layout.cross.cross_envelope naming the field that is outside. HONEST scope (X-Fluxus-Source): the qubit cell alone, not the resonator, not a tape-out-ready reticle and not an EM mesh. A geometry that cannot be drawn, or a non-physical junction or resonator value, is a 400 with the structured error envelope, as on /api/gds.
Request
Body: CrossGdsRequest
GDS-export request for one TransmonCross cell.
The same fields /api/qem/cross takes, so the Design desk can post its cross state to both routes, plus an optional filename (sanitized server-side; defaults to transmon_cross.gds). Only the qubit geometry is drawn. The resonator fields are not drawn; they decide the envelope header (the fr engine's envelope). intervals and alpha change nothing here.
Object: SquidSpec
A DC-SQUID in place of the single junction (flux-tunable transmon).
Two junction inductances, lj1_nh and lj2_nh; EJ_sum is their parallel combination and the asymmetry d = |EJ2 - EJ1| / (EJ1 + EJ2) (Koch et al. 2007, Eq. (2.13)). flux_bias_phi0 is the external flux through the loop in flux quanta (periodic; -1 to 1 accepted). The geometry and so EC are unchanged; only EJ depends on flux.
flux_noise_uphi0 (optional) is the 1/f flux-noise amplitude sqrt(A_Phi) at 1 Hz, in micro flux quanta per root hertz. Only when it is given is a first-order dephasing estimate returned (Hutchings et al. 2017), with flux_noise_f_ir_hz and flux_noise_t_us its infrared cut-off and time scale (defaults 1 Hz and 10 us, Hutchings's values).
Example
curl -s "$FLUXUS_API/gds/cross" -H "Authorization: Bearer $COGITAN_API_KEY" \
-H 'content-type: application/json' \
-d '{"cross_length_um": 240, "claw_length_um": 215, "ground_spacing_um": 10, "junction_lj_nh": 9.686, "length_um": 3900, "coupling_length_um": 225}' -o cell.gdsCLI: fluxus qubit gds
Example body: docs/qubit/API_AND_CLI.md, s18
What it refuses
- a non-physical junction or resonator value -> HTTP 400
- outside the data: still drawn, X-Fluxus-Envelope says outside and names the field
Responses: 200 Successful Response; 422 Validation Error.
Validated for
fidelity layout_geometry
see qem_cross for the TransmonCross chain and qem for the parallel-pad family; nothing here is silicon
The full gds_cross card/v1/fluxus/inv
engine path /api/inv · metered
Inverse design: targets -> ranked, oracle-verified candidates.
What it does, in full
Inverse design: targets -> ranked, oracle-verified candidates.
Every candidate is re-solved with fluxus.physics.solve_cell (result.source == 'oracle') and ranked by ascending weighted normalized distance to the targets.
Request
Body: INVRequest
Inverse-design request: target Hamiltonian parameters.
Example
curl -s "$FLUXUS_API/inv" -H "Authorization: Bearer $COGITAN_API_KEY" \
-H 'content-type: application/json' \
-d '{"targets": {"f01_ghz": 4.8, "fr_ghz": 7.0}, "n_candidates": 1, "n_screen": 256, "seed": 1}'CLI: fluxus inv
Example body: the `fluxus inv` example in the CLI help
What it refuses
- unknown target name -> HTTP 400
- an unreachable target returns the closest cells; read distance
Responses: 200 Successful Response; 422 Validation Error.
Validated for
fidelity analytic_oracle_verified_search
see qem_cross for the TransmonCross chain and qem for the parallel-pad family; nothing here is silicon
The full inv card/v1/fluxus/inv/cross
engine path /api/inv/cross · metered
Inverse design over the SQuADDS TransmonCross envelope.
What it does, in full
Inverse design over the SQuADDS TransmonCross envelope.
Enumerates the whole 4-parameter design space with a fast accelerator, re-solves the finalists with the REAL chain, then polishes them continuously so the answer does not depend on where the grid points fell. Every returned number comes from solve_cross_cell, never from the accelerator.
Simulated reference (HFSS), never silicon. A returned design is a proposal to simulate, not a fabrication instruction.
Request
Body: CrossINVRequest
Target Hamiltonian -> ranked TransmonCross designs.
Name only the targets you care about. An unnamed target is IGNORED, not defaulted -- a target nobody asked for should not steer the search -- and an unknown target NAME is a 400 rather than a silent no-op.
Example
curl -s "$FLUXUS_API/inv/cross" -H "Authorization: Bearer $COGITAN_API_KEY" \
-H 'content-type: application/json' \
-d '{"f01_ghz": 4.5, "anharmonicity_mhz": -200, "fr_ghz": 6.5}'CLI: fluxus qubit inverse
Example body: docs/qubit/API_AND_CLI.md, s16
What it refuses
- no target named -> HTTP 400 no_targets
- unknown target name -> HTTP 400 (never silently ignored)
- an unreachable target still returns the closest design; read
residualsto tell 'best available' from 'hit'
Responses: 200 Successful Response; 422 Validation Error.
Validated for
fidelity surrogate_of_em_solve+exact_hamiltonian
SQuADDS qubit-TransmonCross-cap_matrix, Ansys HFSS simulated Maxwell capacitance matrix -- NOT silicon
The full inv_cross card/v1/fluxus/junction
engine path /api/junction · metered
Josephson junction calculator: one of Lj, Ic, EJ, Rn_room -> all the rest.
What it does, in full
Josephson junction calculator: one of Lj, Ic, EJ, Rn_room -> all the rest.
Closed forms (fluxus.physics.junction): Lj = Phi0/(2 pi Ic), EJ = Phi0 Ic/(2 pi), Ic = Jc * area, and the Ambegaokar-Baratoff Ic*Rn = pi Delta/(2e) at T = 0 with Delta = 1.764 kB Tc. Returns lj_nh, ic_na, ej_ghz, rn_ohm_cold, rn_ohm_room (null unless room_over_cold_ratio is given), ic_rn_uv, gap_uev, area_um2 (null unless jc is given), the echoed input and settings, and notes. Missing, duplicate, inconsistent or non-physical input is a 400 naming the problem. Analytic, not measured.
Request
Body: JunctionRequest
Josephson junction calculator input: exactly ONE of the four quantities.
lj_nh (nH), ic_na (nA), ej_ghz (EJ/h, GHz) or rn_ohm_room (room-temperature normal resistance, ohm). Optional critical current density in ONE unit, jc_ua_per_um2 (uA/um^2) or jc_a_per_cm2 (A/cm^2; 1 uA/um^2 = 100 A/cm^2), which adds the junction area. tc_k is the electrode Tc for the Ambegaokar-Baratoff gap (default 1.2 K, aluminium film). room_over_cold_ratio = Rn_room / Rn_cold is process-dependent and has NO default: without it the room-temperature resistance is neither accepted as input nor returned.
Example
curl -s "$FLUXUS_API/junction" -H "Authorization: Bearer $COGITAN_API_KEY" \
-H 'content-type: application/json' \
-d '{"lj_nh": 10.755042613636363, "jc_ua_per_um2": 0.5}'Example body: docs/qubit/API_AND_CLI.md, s17
What it refuses
- not exactly one of lj_nh, ic_na, ej_ghz, rn_ohm_room -> HTTP 400 invalid_junction_input
- rn_ohm_room given without room_over_cold_ratio (process-dependent, never defaulted) -> HTTP 400
- jc in both units, or any value <= 0 -> HTTP 400
Responses: 200 Successful Response; 422 Validation Error.
Validated for
fidelity analytic_closed_form
The full junction card/v1/fluxus/preflight
engine path /api/preflight · metered
Logical-qubit preflight: a bounded answer plus its refusals.
Not offered on the hosted API: the deployment withholds the preflight feature, so this route answers 503 there and says so. It answers on a local install that has what it needs.
What it does, in full
Logical-qubit preflight: a bounded answer plus its refusals.
NO PROJECT REQUIRED. Every input has a default or a refusal, because the chain answers a PRE-BUILD question and the person asking it may not have a project yet.
The response deliberately carries structure a caller could flatten and must not: every channel keeps its kind (PREDICTED / PROFILE / BOUND / REFUSED), leakage stays a RANGE conditional on has_lru, and quotable says which of the four decision modes may be answered at all. The go/no-go is REFUSED and that refusal is part of the answer.
Request
Body: PreflightRequest
Inputs for the logical-qubit preflight. All optional except none.
has_lru is asked explicitly rather than defaulted because it is the highest-leverage design question in the profile: worth 10-72x in leakage population, and unstated it widens the band to 156x, which is wider than the threshold crossing itself. None means unstated and is REFUSED.
The four coupler fields drive the experimental coupler-design path. They are optional, and supplying only some of them yields UNAVAILABLE rather than a guess - which is why this is input-driven and not a toggle.
Example
curl -s "$FLUXUS_API/preflight" -H "Authorization: Bearer $COGITAN_API_KEY" \
-H 'content-type: application/json' \
-d '{"has_lru": true, "code_family": "surface"}'Example body: the smallest preflight request
What it refuses
- has_lru or code_family unstated -> refused with the reason
- this host does not carry Corpus -> HTTP 503 corpus_unavailable
Responses: 200 Successful Response; 422 Validation Error.
Validated for
fidelity rules_corpus_bound
see qem_cross for the TransmonCross chain and qem for the parallel-pad family; nothing here is silicon
The full preflight card/v1/fluxus/qem
engine path /api/qem · metered
Predict the five Hamiltonian targets for one cell.
What it does, in full
Predict the five Hamiltonian targets for one cell.
Returns a serialized fluxus.core.PredictionResult: value (HamiltonianResult incl. source), intervals (split-conformal, alpha=0.1, only when calibration residuals exist and the prediction did not abstain; a weak-tier answer has no chi_mhz interval, see fluxus.qem.chi_tier), in_envelope, abstained, model_version.
Request
Body: QEMRequest
One design cell, flat keys. Omitted fields use CellSpec defaults.
Example
curl -s "$FLUXUS_API/qem" -H "Authorization: Bearer $COGITAN_API_KEY" \
-H 'content-type: application/json' \
-d '{"pad_gap_um": 30, "junction_lj_nh": 12, "length_um": 4500, "coupling_cap_ff": 5}'CLI: fluxus qem
CLI: fluxus qubit pad
Example body: the `fluxus qem` example in the CLI help
What it refuses
- geometry outside SPEC_RANGES -> abstained=true, oracle value
- kind other than lambda4, or center_width_um=10.0, gap_um=6.0, eps_r=11.45 changed (the surrogate has no input for them) -> abstained=true, oracle value
- eps_r < 1 -> HTTP 400 from the oracle
- the worst dressed overlap of the four levels chi reads is below 0.7236 (n_crit_eff < 0.25, |Delta| = g for a two-level pair) -> chi NaN, chi_method='unresolved', dispersive_regime='unresolved'
- NOT a refusal: between 0.7236 and 0.8536 (n_crit_eff 0.25 to 1.00) chi IS answered, with dispersive_regime='weak' and a chi_caveat; it holds only well below n_crit photons, so read n_crit_eff before using it at readout power
- dispersive_regime='weak' answers carry NO chi_mhz interval: the calibrated chi interval covers 49.3% of weak-tier answers against a 90% target (98.3% of dispersive ones; fresh 10,000-cell sample, seed 20260710); the chi value and the other four intervals are still served
Responses: 200 Successful Response; 422 Validation Error.
Validated for
fidelity surrogate_of_analytic_oracle
fluxus.physics.solve_cell -- an ANALYTIC capacitance/resonator model. Its geometry->Hamiltonian error against a field solve is tens of percent and is NOT included in the numbers below.
The full qem card/v1/fluxus/qem/cross
engine path /api/qem/cross · metered
Hamiltonian for one TransmonCross cell (SQuADDS geometry family).
What it does, in full
Hamiltonian for one TransmonCross cell (SQuADDS geometry family).
Each step is exact, trained on HFSS, or a named closed form: geometry -> capacitance matrix (HFSS-trained, 0.30%/0.56% median held-out), capacitance -> EC and L_j -> EJ (exact; C_sigma is the cross-to-ground capacitance plus the claw path in series with the resonator, and leaves out the junction's own capacitance), EC/EJ -> f01 and anharmonicity (exact Cooper-pair box), resonator -> fr (HFSS-trained on the one CPW cross-section SQuADDS simulated, no kinetic inductance), g from the two-node capacitance matrix with the resonator capacitance taken as the admittance slope of the loaded line at the claw node (trained fr, an analytic cross-section Z0 and the HFSS-trained claw-to-ground capacitance; not trained itself, and coverage of its interval is not measured), and finally chi by exact diagonalisation.
claw_cpw_length_um (default 40, the only value in the HFSS capacitance data) is not a model input. Another value is answered, with in_envelope false and outside_trained_configuration naming it.
This is the geometry family qiskit-metal and SQuADDS use. The parallel-pad POST /api/qem path is a DIFFERENT, incompatible geometry and is unaffected.
Refuses with HTTP 422 and a structured outside_envelope body rather than extrapolating the capacitance. A resonator outside the fr engine's envelope is answered with the analytic CPW form instead, and then in_envelope is false, abstained is true and out_of_envelope names the fr refusal. Simulated reference, never silicon.
Readout (added 2026-10-16, fields only added): kappa_khz (kappa / 2 pi, the coupled-line closed form fed with the chain's fr, scored against SQuADDS HFSS kappa), kappa_source, purcell_t1_us (single-mode Purcell limit, divided by the optional user-supplied purcell_filter_suppression), purcell_source, and a readout block with validation flags, refusals and the dispersive-form value.
lambda/2 (2026-10-16): the resonator carries its NCap coupler (finger_count, finger_length_um, cap_gap_um, cap_width_um; defaults are the half-wave eigenmode rows' coupler), and fr and kappa both come from the half-wave NCap engine (kappa_source squadds_halfwave_ncap): HFSS-trained eigenmode fr and NCap capacitances through the series-coupled closed form SQuADDS's own half-wave table is built with. readout.halfwave carries the capacitances and the eigenmode fr before the coupler's loading. Outside its envelope fr falls back as above and kappa is null with the reason.
Request
Body: CrossQEMRequest
One TransmonCross cell (the SQuADDS / qiskit-metal geometry family).
Flat keys matching fluxus.core.TransmonCrossSpec + ResonatorSpec. Omitted fields take the spec defaults.
THE FOUR FIXED FIELDS ARE SETTABLE AND VALIDATED, NOT IGNORED. The HFSS training config holds cross_gap_um, cross_width_um, claw_width_um and claw_gap_um at exactly one value each. Passing a different one returns HTTP 422 with a structured outside_envelope body naming the field and the value it is pinned to, so a caller can repair the request without reading prose. They are accepted at all so a caller can be EXPLICIT about the geometry it means; they are never a way to make the engine guess.
Object: SquidSpec
A DC-SQUID in place of the single junction (flux-tunable transmon).
Two junction inductances, lj1_nh and lj2_nh; EJ_sum is their parallel combination and the asymmetry d = |EJ2 - EJ1| / (EJ1 + EJ2) (Koch et al. 2007, Eq. (2.13)). flux_bias_phi0 is the external flux through the loop in flux quanta (periodic; -1 to 1 accepted). The geometry and so EC are unchanged; only EJ depends on flux.
flux_noise_uphi0 (optional) is the 1/f flux-noise amplitude sqrt(A_Phi) at 1 Hz, in micro flux quanta per root hertz. Only when it is given is a first-order dephasing estimate returned (Hutchings et al. 2017), with flux_noise_f_ir_hz and flux_noise_t_us its infrared cut-off and time scale (defaults 1 Hz and 10 us, Hutchings's values).
Example
curl -s "$FLUXUS_API/qem/cross" -H "Authorization: Bearer $COGITAN_API_KEY" \
-H 'content-type: application/json' \
-d '{"cross_length_um": 240, "claw_length_um": 215, "ground_spacing_um": 10, "junction_lj_nh": 9.686, "length_um": 3900, "coupling_length_um": 225, "intervals": true}'CLI: fluxus qem-cross
CLI: fluxus qubit cross
Example body: docs/qubit/API_AND_CLI.md, s04
What it refuses
- a swept axis outside its range -> HTTP 422 outside_envelope with {field, value, allowed:{min,max}}
- a single-valued axis changed -> HTTP 422 outside_envelope with {field, value, allowed:{const}}
- eps_r other than 11.45 (the HFSS-trained capacitance and fr models have no permittivity input) -> HTTP 422 outside_envelope with {field: eps_r, allowed:{const}}
- the capacitance engine has not been trained -> HTTP 503 engine_unavailable with a remedy string
- the worst dressed overlap of the four levels chi reads is below 0.7236 (n_crit_eff < 0.25, |Delta| = g for a two-level pair) -> chi NaN, chi_method='unresolved', dispersive_regime='unresolved'
- NOT a refusal: between 0.7236 and 0.8536 (n_crit_eff 0.25 to 1.00) chi IS answered, with dispersive_regime='weak' and a chi_caveat; it holds only well below n_crit photons, so read n_crit_eff before using it at readout power
Responses: 200 Successful Response; 422 Validation Error.
Validated for
fidelity surrogate_of_em_solve+exact_hamiltonian
SQuADDS qubit-TransmonCross-cap_matrix, Ansys HFSS simulated Maxwell capacitance matrix -- NOT silicon
The full qem_cross card/v1/fluxus/qem/cross/batch
engine path /api/qem/cross/batch · metered
Many TransmonCross designs in one call.
What it does, in full
Many TransmonCross designs in one call.
results is aligned with items; each slot is exactly the /api/qem/cross body for that item (its 422 or 400 error body when it is refused or malformed) plus status, the HTTP status it would have had. summary counts answered, abstained, refused and error slots and the fields refusals named. Over 500 items: truncated with clamped. Past the request budget: budget_exhausted slots and budget.
Request
Body: CrossBatchRequest
Many /api/qem/cross bodies. intervals and alpha here apply to items that do not set them. Items are checked one by one, so a bad item is an error in its own slot.
Example
curl -s "$FLUXUS_API/qem/cross/batch" -H "Authorization: Bearer $COGITAN_API_KEY" \
-H 'content-type: application/json' \
-d '{"items": [{"claw_length_um": 215, "coupling_length_um": 225, "cross_length_um": 240, "ground_spacing_um": 10, "junction_lj_nh": 9.686, "length_um": 3900}, {"cross_length_um": 240, "ground_spacing_um": 10.9}]}'CLI: fluxus qubit batch
Example body: the request model's own example
What it refuses
- each slot inherits /api/qem/cross: outside the data -> that slot holds the 422 outside_envelope body; a malformed item -> its 400 or 422 body
- more than the cap -> truncated with a clamped block
- past the request budget -> budget_exhausted slots and a budget block
Responses: 200 Successful Response; 422 Validation Error.
Validated for
fidelity surrogate_of_em_solve+exact_hamiltonian
see qem_cross for the TransmonCross chain and qem for the parallel-pad family; nothing here is silicon
The full qem_cross_batch card/v1/fluxus/qem/cross/flux-sweep
engine path /api/qem/cross/flux-sweep · metered
f01, anharmonicity, g, chi and the Purcell T1 limit against flux.
What it does, in full
f01, anharmonicity, g, chi and the Purcell T1 limit against flux.
Each point is the full /api/qem/cross chain with EJ(Phi) from the asymmetric DC-SQUID relation (Koch et al. 2007, Eq. (2.13)); the geometry, EC, fr and kappa do not depend on flux and are the same at every point. Columns are lists aligned with flux_phi0; a point that cannot be solved (EJ = 0 for a symmetric SQUID at half a flux quantum) is null there with the reason in refused, and an unresolved chi is null with chi_method saying so. transmon_regime is false where EJ/EC < 20. No intervals. Off-envelope geometry is refused (422) as on /api/qem/cross.
Request
Body: CrossFluxSweepRequest
A tuning curve: the cross chain on a grid of flux points.
The same fields as /api/qem/cross (squid required), plus the grid: n_points (2 to MAX_FLUX_POINTS, default 41) evenly spaced from flux_min_phi0 to flux_max_phi0 (default -0.5 to 0.5). The sweep carries no intervals; intervals: true is refused rather than ignored.
Object: SquidSpec
A DC-SQUID in place of the single junction (flux-tunable transmon).
Two junction inductances, lj1_nh and lj2_nh; EJ_sum is their parallel combination and the asymmetry d = |EJ2 - EJ1| / (EJ1 + EJ2) (Koch et al. 2007, Eq. (2.13)). flux_bias_phi0 is the external flux through the loop in flux quanta (periodic; -1 to 1 accepted). The geometry and so EC are unchanged; only EJ depends on flux.
flux_noise_uphi0 (optional) is the 1/f flux-noise amplitude sqrt(A_Phi) at 1 Hz, in micro flux quanta per root hertz. Only when it is given is a first-order dephasing estimate returned (Hutchings et al. 2017), with flux_noise_f_ir_hz and flux_noise_t_us its infrared cut-off and time scale (defaults 1 Hz and 10 us, Hutchings's values).
Example
curl -s "$FLUXUS_API/qem/cross/flux-sweep" -H "Authorization: Bearer $COGITAN_API_KEY" \
-H 'content-type: application/json' \
-d '{"cross_length_um": 240, "claw_length_um": 215, "ground_spacing_um": 10, "length_um": 3900, "coupling_length_um": 225, "squid": {"lj1_nh": 14.53, "lj2_nh": 29.06, "flux_bias_phi0": 0.0}, "n_points": 61}'Example body: docs/qubit/API_AND_CLI.md, s11
What it refuses
- no squid block -> HTTP 400
- intervals true -> HTTP 400 (the sweep has none)
- n_points above 101 or below 2 -> HTTP 422
- flux_max_phi0 not above flux_min_phi0 -> HTTP 400
- off-envelope geometry -> HTTP 422 outside_envelope, as qem_cross
- a point where EJ = 0 is null, with the reason in
refused
Responses: 200 Successful Response; 422 Validation Error.
Validated for
fidelity surrogate_of_em_solve+exact_hamiltonian
The full qem_cross_flux_sweep card/v1/fluxus/qem/cross/sweep
engine path /api/qem/cross/sweep · metered
One or two TransmonCross fields over a linear grid, point answers.
What it does, in full
One or two TransmonCross fields over a linear grid, point answers.
Every point is the /api/qem/cross answer for base plus the grid values, projected to f01, anharmonicity, fr, g, chi, EC, EJ, kappa, Purcell T1, regime and source, or to the refusal's code, field and reason. n defaults to 21 and is clamped to 201 for one axis and 41 per axis for two, with a clamped block. No intervals: ask /api/qem/cross/batch with intervals at the points you care about.
Request
Body: CrossSweepRequest
A base /api/qem/cross body and one or two axes.
Object: SweepAxis
Example
curl -s "$FLUXUS_API/qem/cross/sweep" -H "Authorization: Bearer $COGITAN_API_KEY" \
-H 'content-type: application/json' \
-d '{"axes": [{"field": "junction_lj_nh", "n": 13, "start": 8, "stop": 14}], "base": {"claw_length_um": 215, "coupling_length_um": 225, "cross_length_um": 240, "ground_spacing_um": 10, "length_um": 3900}}'CLI: fluxus qubit sweep
Example body: the request model's own example
What it refuses
- a malformed base or axis -> HTTP 400 once
- base.intervals true -> HTTP 400 (point answers only)
- points outside the data -> status refused with field and reason
- n over the cap -> clamped with a clamped block
Responses: 200 Successful Response; 422 Validation Error.
Validated for
fidelity surrogate_of_em_solve+exact_hamiltonian
see qem_cross for the TransmonCross chain and qem for the parallel-pad family; nothing here is silicon
The full qem_cross_sweep card/v1/fluxus/qem/schema
engine path /api/qem/schema · free
Every qubit-design input: unit, default, role (swept, pinned, free, resonator, control), range or pinned value, the unsampled ground-spacing gap and the claw support rule; outputs with units; the engines behind each step; interval coverage; refusal kinds; batch and sweep limits; exit codes; and every qubit route with its CLI command. Read from the constants the engines refuse by.
What it does, in full
Every qubit-design input: unit, default, role (swept, pinned, free, resonator, control), range or pinned value, the unsampled ground-spacing gap and the claw support rule; outputs with units; the engines behind each step; interval coverage; refusal kinds; batch and sweep limits; exit codes; and every qubit route with its CLI command. Read from the constants the engines refuse by.
Request
No parameters.
Example
curl -s "$FLUXUS_API/qem/schema" -H "Authorization: Bearer $COGITAN_API_KEY"CLI: fluxus qubit schema
Example body: no parameters
What it refuses
- never refuses
Responses: 200 Successful Response.
Validated for
fidelity metadata
see qem_cross for the TransmonCross chain and qem for the parallel-pad family; nothing here is silicon
The full qem_schema card/v1/fluxus/qem/status
engine path /api/qem/status · free
Whether each qubit-design engine loads on this host, with versions.
What it does, in full
Whether each qubit-design engine loads on this host, with versions.
Request
No parameters.
Example
curl -s "$FLUXUS_API/qem/status" -H "Authorization: Bearer $COGITAN_API_KEY"CLI: fluxus qubit status
Example body: no parameters
What it refuses
- never refuses; an engine that does not load reports available false with the error
Responses: 200 Successful Response.
Validated for
fidelity metadata
see qem_cross for the TransmonCross chain and qem for the parallel-pad family; nothing here is silicon
The full qem_status card/v1/fluxus/qem/triage
engine path /api/qem/triage · metered
Which TransmonCross candidates still need your solver.
What it does, in full
Which TransmonCross candidates still need your solver.
ACCEPT when every requirement's calibrated interval sits inside its window, REJECT when one sits wholly outside, SIMULATE otherwise (and for a refused design, an abstention or a missing interval). Never reads the point estimate. Returns per-candidate decisions with reasons, counts, simulate_rate and the accept and reject risk BOUNDS (k x alpha and alpha), which are bounds from coverage, not measured decision error. Up to 200 candidates; each is an interval solve (about 0.16 s).
Request
Body: TriageRequest
Candidates (/api/qem/cross bodies) and the spec they must meet.
Object: Requirement
Example
curl -s "$FLUXUS_API/qem/triage" -H "Authorization: Bearer $COGITAN_API_KEY" \
-H 'content-type: application/json' \
-d '{"alpha": 0.1, "items": [{"claw_length_um": 215, "coupling_length_um": 225, "cross_length_um": 240, "ground_spacing_um": 10, "junction_lj_nh": 9.686, "length_um": 3900}], "requirements": [{"hi": 4.7, "lo": 4.3, "target": "f01_ghz"}, {"hi": -150, "target": "anharmonicity_mhz"}]}'CLI: fluxus qubit triage
Example body: the request model's own example
What it refuses
- a requirement on an unknown target, or with lo > hi or a NaN bound -> HTTP 400
- a candidate outside the data -> simulate, refusal named; never accept or reject without an interval
Responses: 200 Successful Response; 422 Validation Error.
Validated for
fidelity conformal_interval_decision
see qem_cross for the TransmonCross chain and qem for the parallel-pad family; nothing here is silicon
The full qem_triage card/v1/fluxus/qem/verify
engine path /api/qem/verify · metered
The /api/qem prediction for one parallel-pad cell beside the analytic oracle's: per-target delta (predicted minus verified) and, where an interval is served, whether the oracle value falls inside it. The oracle is a closed form, not an EM solver; this checks the surrogate against its own teacher.
What it does, in full
The /api/qem prediction for one parallel-pad cell beside the analytic oracle's: per-target delta (predicted minus verified) and, where an interval is served, whether the oracle value falls inside it. The oracle is a closed form, not an EM solver; this checks the surrogate against its own teacher.
Request
Body: PadVerifyRequest
A parallel-pad cell (the /api/qem fields) to check against the oracle.
Example
curl -s "$FLUXUS_API/qem/verify" -H "Authorization: Bearer $COGITAN_API_KEY" \
-H 'content-type: application/json' \
-d '{}'CLI: fluxus qubit verify
Example body: every field at its default
What it refuses
- the same refusals as /api/qem
Responses: 200 Successful Response; 422 Validation Error.
Validated for
fidelity surrogate_vs_analytic_oracle
see qem_cross for the TransmonCross chain and qem for the parallel-pad family; nothing here is silicon
The full qem_verify card/v1/fluxus/resonator
engine path /api/resonator · metered
Predict resonator fr (GHz) with the persisted SQuADDS surrogate.
What it does, in full
Predict resonator fr (GHz) with the persisted SQuADDS surrogate.
Input is resonator geometry (ResonatorSpec fields + optional coupling_length_um). Returns fr_ghz from the data-trained surrogate, its held-out rel_interval (the measured p95 relative error, a fractional band -- NOT a per-point conformal interval), and source: "squadds_surrogate". HONEST: trained on SQuADDS HFSS eigenmode simulation (EM-simulated, not silicon); predicts the resonator fr only. 503 (with the shared error envelope) when the checkpoint has not been trained/persisted yet.
Request
Body: ResonatorRequest
Resonator geometry for the SQuADDS fr surrogate (ResonatorSpec fields).
Flat keys matching fluxus.core.ResonatorSpec plus an optional coupling_length_um (a SQuADDS coupler feature not on ResonatorSpec). Omitted fields use ResonatorSpec defaults / the surrogate's training default (coupling_length_um = 0).
Example
curl -s "$FLUXUS_API/resonator" -H "Authorization: Bearer $COGITAN_API_KEY" \
-H 'content-type: application/json' \
-d '{"length_um": 8150, "kind": "lambda2", "claw_length_um": 185.9, "finger_count": 10, "finger_length_um": 30.9, "cap_gap_um": 4.1, "cap_width_um": 10.9, "ground_spacing_um": 4.1}'Example body: docs/qubit/API_AND_CLI.md, s10
What it refuses
- checkpoint absent -> HTTP 503
- center_width_um or gap_um differs from the single trained value -> HTTP 422 resonator_outside_envelope
- length_um or coupling_length_um outside the trained range for its kind -> HTTP 422 resonator_outside_envelope
- NCap fields with kind lambda4, with a coupling_length_um, or without claw_length_um -> HTTP 400
- NCap request outside the half-wave envelope (see qem_cross envelope._halfwave_ncap) -> HTTP 422 naming the field
Responses: 200 Successful Response; 422 Validation Error.
Validated for
fidelity surrogate_of_em_solve
SQuADDS HFSS eigenmode (EM-simulated, not silicon)
The full resonator_fr card/v1/fluxus/yld
engine path /api/yld · metered
Monte Carlo frequency-collision yield for a fixed-frequency chip.
What it does, in full
Monte Carlo frequency-collision yield for a fixed-frequency chip.
Returns a serialized fluxus.core.YieldReport: n_trials, yield_fraction, collision_counts (Hertzberg et al. arXiv:2009.00781 rule name -> mean violations per chip), notes.
Request
Body: YLDRequest
ChipSpec fields plus Monte Carlo controls.
Example
curl -s "$FLUXUS_API/yld" -H "Authorization: Bearer $COGITAN_API_KEY" \
-H 'content-type: application/json' \
-d '{"n_qubits": 127, "sigma_f_mhz": 12, "n_trials": 20000, "seed": 1}'CLI: fluxus qubit yield
CLI: fluxus yld
Example body: docs/qubit/API_AND_CLI.md, s19
What it refuses
- over the request budget -> HTTP 422 naming the n_trials that fits
Responses: 200 Successful Response; 422 Validation Error.
Validated for
fidelity monte_carlo_of_collision_rules
see qem_cross for the TransmonCross chain and qem for the parallel-pad family; nothing here is silicon
The full yld card/v1/fluxus/yld/curve
engine path /api/yld/curve · metered
Yield versus frequency spread: [[sigma_f_mhz, yield], ...].
What it does, in full
Yield versus frequency spread: [[sigma_f_mhz, yield], ...].
Request
Body: CurveRequest
Yield-vs-sigma sweep: YLDRequest fields plus the sigma list.
Example
curl -s "$FLUXUS_API/yld/curve" -H "Authorization: Bearer $COGITAN_API_KEY" \
-H 'content-type: application/json' \
-d '{"n_qubits": 27, "n_trials": 2000, "sigmas": [8, 12, 16], "seed": 1}'Example body: a 27-qubit heavy-hex chip
What it refuses
- over the request budget (one run per sigma) -> HTTP 422
Responses: 200 Successful Response; 422 Validation Error.
Validated for
fidelity monte_carlo_of_collision_rules
see qem_cross for the TransmonCross chain and qem for the parallel-pad family; nothing here is silicon
The full yld_curve card/v1/fluxus/yld/detail
engine path /api/yld/detail · metered
Yield Monte Carlo with per-qubit collision attribution.
What it does, in full
Yield Monte Carlo with per-qubit collision attribution.
Same simulation as /api/yld plus per_qubit_rate (fraction of trials each qubit participated in >= 1 violation -- for chip-map coloring) and targets_ghz (the allocation pattern used).
Request
Body: YLDRequest
ChipSpec fields plus Monte Carlo controls.
Example
curl -s "$FLUXUS_API/yld/detail" -H "Authorization: Bearer $COGITAN_API_KEY" \
-H 'content-type: application/json' \
-d '{"n_qubits": 27, "n_trials": 2000, "seed": 1}'Example body: a 27-qubit heavy-hex chip
What it refuses
- over the request budget -> HTTP 422
Responses: 200 Successful Response; 422 Validation Error.
Validated for
fidelity monte_carlo_of_collision_rules
see qem_cross for the TransmonCross chain and qem for the parallel-pad family; nothing here is silicon
The full yld_detail card/v1/fluxus/yld/graph
engine path /api/yld/graph · metered
Frequency-collision yield over the supplied qubit graph + targets.
What it does, in full
Frequency-collision yield over the supplied qubit graph + targets.
Runs the SAME Hertzberg et al. (arXiv:2009.00781) collision Monte Carlo as /api/yld, but over the EXPLICIT topology the caller supplies -- frequencies_ghz[k] is qubit k's target frequency and edges are 0-based index pairs (the floorplan's real wiring) -- rather than a generated heavy-hex / square lattice. Mirrors the shape of /api/yld/detail so the frontend can reuse its rendering: n_qubits, n_edges, n_trials, yield_fraction, collision_counts, per_qubit_rate, note, source.
n_trials is clamped to <= 50000. Empty frequencies or edges that reference out-of-range / self-looped indices return a 400 envelope.
Request
Body: GraphYLDRequest
Frequency-collision yield over an explicit qubit graph + targets.
frequencies_ghz[k] is qubit k's design target frequency; edges are 0-based index pairs into that list (the floorplan's actual wiring). Drives the SAME Hertzberg et al. collision Monte Carlo as /api/yld, but over this supplied topology rather than a generated lattice. n_trials is clamped to a sane cap (<= 50000) by the service.
Example
curl -s "$FLUXUS_API/yld/graph" -H "Authorization: Bearer $COGITAN_API_KEY" \
-H 'content-type: application/json' \
-d '{"frequencies_ghz": [5.0, 5.08, 5.16, 5.04], "edges": [[0, 1], [1, 2], [2, 3]], "seed": 1}'Example body: a four-qubit chain written for this page
What it refuses
- edges out of range or self-loops -> HTTP 400
- n_trials over 50,000 -> clamped
Responses: 200 Successful Response; 422 Validation Error.
Validated for
fidelity monte_carlo_of_collision_rules
see qem_cross for the TransmonCross chain and qem for the parallel-pad family; nothing here is silicon
The full yld_graph cardGenerated from Fluxus 0.3.0 at commit b9aa57d on 2026-10-20 by python -m fluxus.docs_bundle.