Skip to content
Static snapshot of QMint (git 5b73a0bb93c1) — live experiments run locally

Docs · Reference

API reference

Every endpoint of the FastAPI research API, generated from openapi.json.

Conventions

QMint Research API 1.0.0. Evidence-labelled research API over merged QMint lanes. Research platform only: not money, not a payment service. Base path /api/v1; JSON only; the web app calls it same-origin through a Next.js rewrite.

  • Every response is an envelope: status (OK, DEMO_ADAPTER or NOT_AVAILABLE), evidence_kind of the headline numbers, provenance, reason (required unless OK) and data.
  • Every displayable number is a Quantity. value: null means not available — never 0.
  • This page is generated from web/lib/api/openapi.json; regenerate it with pnpm gen:api.

Quantity

  • evidence_kindEvidenceKindrequired
  • formulastring | null
  • idstringrequired
  • intervalConfidenceInterval | null
  • labelstringrequired
  • log10_valuenumber | null

    log10(value), for values below float range

  • method"closed_form" | "exact_enumeration" | "aer_sampling" | "monte_carlo" | "numerical_sdp" | "event_simulation" | "published_value" | "measured_dataset" | "not_available"required
  • notestring | null
  • sourcestringrequired

    module path or citation (URL + anchor)

  • unitUnitrequired
  • valuenumber | nullrequired

ApiProvenance

  • generated_at_utcstringrequired
  • git_shastringrequired
  • notesstring | null
  • seedinteger | null
  • softwareRecord<string, string>
  • sourcestringrequired

Meta

GET/api/v1/health

Liveness probe.

curl -s localhost:8787/api/v1/health
GET/api/v1/meta

API and schema versions, git sha, lane package probe and the research-platform disclaimer.

curl -s localhost:8787/api/v1/meta
GET/api/v1/meta/tracker

Gate and task status read verbatim from project/TRACKER.yaml (lead-maintained).

curl -s localhost:8787/api/v1/meta/tracker

Protocols

GET/api/v1/games

Security games W1..C1 with transcribed closed-form bounds and their theorem / proof-obligation anchors.

curl -s localhost:8787/api/v1/games
GET/api/v1/protocols

Registered protocol ids, their games, and whether a merged lane implements them.

curl -s localhost:8787/api/v1/protocols

Lab

POST/api/v1/lab/attack

Attack

Request body · AttackRequest

  • attack"A01_basis_guess_resend" | "A01b_basis_guess_bayes_resend" | "A02_breidbart_resend" | "A02b_breidbart_bayes_resend" | "A03_universal_buzek_hillery" | "A03b_phase_covariant_xz" | "A04_mvw_optimal_channel" | "A06_split_and_report_loss" | "A08_adaptive_oracle_probe" | "CTRL_secret_leak"default "A04_mvw_optimal_channel"
  • include_sdpbooleandefault true
  • max_error_fractionnumber≥ 0 · ≤ 0.5 · default 0

    A06 toy verifier

  • max_loss_fractionnumber≥ 0 · ≤ 1 · default 0.5

    A06 toy verifier

  • ninteger≥ 1 · ≤ 8 · default 2
  • noiseLabNoise

    honest holder's channel (honest acceptance only)

  • probesinteger≥ 1 · ≤ 16 · default 10

    A08 Z-probes per position

  • seedinteger≥ 0 · ≤ 2147483647 · default 42
  • trialsinteger≥ 0 · ≤ 5000 · default 1000

422 Request validation error · 500 Internal error · 504 Compute deadline exceeded — body: ApiError

curl -s -X POST localhost:8787/api/v1/lab/attack \    -H 'content-type: application/json' -d '{}'
POST/api/v1/lab/mint

Mint

Request body · MintRequest

  • backend"exact" | "aer"default "aer"
  • n_qubitsinteger≥ 1 · ≤ 8 · default 4
  • noiseLabNoise
  • protocol_id"wiesner_ideal" | "wiesner_noisy"default "wiesner_ideal"
  • seedinteger≥ 0 · ≤ 2147483647 · default 42
  • shotsinteger≥ 1 · ≤ 20000 · default 2000
  • teaching_revealbooleandefault false

    TEST_ONLY: also return the issuer secret of this note (OUT_OF_MODEL teaching view)

  • thresholdinteger≥ 0 · ≤ 8 · default 0

    max wrong positions accepted (wiesner_noisy)

  • trialsinteger≥ 0 · ≤ 5000 · default 1000

    fresh notes for the honest Monte Carlo

422 Request validation error · 500 Internal error · 504 Compute deadline exceeded — body: ApiError

curl -s -X POST localhost:8787/api/v1/lab/mint \    -H 'content-type: application/json' -d '{}'

Benchmarks

GET/api/v1/benchmarks

Benchmarks

curl -s localhost:8787/api/v1/benchmarks

Certificates

POST/api/v1/certificates

Certificates

Request body · CertificateRequest

  • calibration"none" | "schiansky_photon_Z" | "schiansky_photon_X" | "schiansky_published_aggregate"default "none"
  • declared_assumptionsstring[]
  • gameGameIddefault "W1"
  • honest_error_tolerancenumber | null

    ideal games: any value > 0 is outside the theorem; S2: used as gamma_err when not given

  • noise_source"published_kent_2022" | "published_schiansky_2023" | "hypothetical" | "calibration" | null
  • parametersRecord<string, integer | number | IntervalIn>

    theorem parameters: a number or an interval {lo, hi}

  • protocol_idstring | null

    defaults to the protocol registered for the game

  • targetsTargetsIn

422 Request validation error · 500 Internal error — body: ApiError

curl -s -X POST localhost:8787/api/v1/certificates \    -H 'content-type: application/json' -d '{}'
GET/api/v1/certificates/catalog

Catalog

422 Request validation error · 500 Internal error — body: ApiError

curl -s localhost:8787/api/v1/certificates/catalog

Research

GET/api/v1/research/sources

Research library index: papers, theorems, obligations, datasets, corrections, novelty audit.

422 Request validation error · 500 Internal error — body: ApiError

curl -s localhost:8787/api/v1/research/sources
GET/api/v1/research/sources/{entry_id}

One research entry with every field of its source record and related entries (404 if unknown).

Parameters

  • entry_idstringpath · required

404 Unknown entry id · 422 Request validation error · 500 Internal error — body: ApiError

curl -s localhost:8787/api/v1/research/sources/P01

Evidence

GET/api/v1/evidence

Index of experiment records in the RecordStore registry, newest first (may be empty). Each record passes the provenance gate: unverifiable or fixture records are served as SYNTHETIC.

curl -s localhost:8787/api/v1/evidence
GET/api/v1/evidence/highlights

Headline numbers (SDP bracket, reproduced QBER, matched-topology latency) with source files and evidence.

curl -s localhost:8787/api/v1/evidence/highlights
GET/api/v1/evidence/labels

Display labels for every EvidenceKind, CertificateStatus and API status.

curl -s localhost:8787/api/v1/evidence/labels

Errors

Every 4xx and 5xx response, including request validation, has the same body. Validation errors are 422 validation_error with pydantic's error list in detail; unknown routes and research ids are 404 not_found.

json
{ "error": { "code": "not_found", "message": "unknown research entry 'NOPE'", "detail": null } }
  • codestringrequired
  • detailany | null
  • messagestringrequired