api reference · v1

API reference.

Every endpoint, every response field, every tier gate. Schema-filtered on the way out — the substrate can't leak manifold internals even if it wanted to.

Authentication

Bearer-token auth via the Authorization header. Keys are prefixed by tier (dyd_academic_..., dyd_corp_..., dyd_ent_...) so their intended scope is obvious at a glance.

curl https://api.dydact.io/api/v1/predict/tc \
  -H "Authorization: Bearer $DYDACT_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"compound":"Nb","pressure_gpa":0.0001}'

Enterprise keys can additionally enforce DPoP proof-of-possession and mTLS to bind the key to a specific client device. Academic and standard corporate tiers use the bearer token alone.

Rate limits

TierDaily capBurst (per minute)Concurrent
Academic A1,000 predictions604
Corporate C50,000 predictions (default, negotiable)60032
Enterprise Econtracted volume, unmeteredunmeteredunmetered

Response headers include X-RateLimit-Remaining, X-RateLimit-Reset, and X-DailyQuota-Remaining so integrations can gracefully back off before hitting a 429. Academic users hitting the ceiling: email access@dydact.io — every legitimate request for more has been granted to date.

Error codes

StatusBody errorMeaning
401unauthorizedMissing or malformed bearer token
403tier_insufficientEndpoint not available on your tier
429rate_limitDaily or burst cap reached
503waitlist_onlyPre-launch phase — see signup field
503stale_calibrationPipeline calibration invalidated; predictions locked until re-run
502upstream_errorSubstrate unreachable — transient, retry with backoff

All 4xx and 5xx responses share a common shape: {error, detail?, signup?, retry_after?}. Internal server errors are intentionally opaque — the full trace exists in the audit log, not in the client response.

POST /api/v1/predict/tc ACE

Single-point Tc prediction. Fastest endpoint (~2ms CPU forward pass).

Request

{
  "compound": "Nb",                // SMILES for molecular or canonical symbol
  "pressure_gpa": 0.0001,          // default: 0.0001 (ambient)
  "archetype_hint": null         // optional: BCS_classical | iron_pnictide | cuprate | hydride
}

Response

{
  "predicted_tc_k": 9.82,
  "predicted_tc_log_decades": 0.992,
  "pressure_gpa": 0.0001,
  "archetype": "BCS_classical",
  "confidence": "clean",         // clean | mode-II | mode-I | stale
  "model_version": "v0.3",
  "coverage_gap": false
}

POST /api/v1/predict/tc/sweep ACE

Pressure-axis sweep in a single call. Up to 32 pressure points per request (academic), 256 (corporate), unlimited (enterprise). Billed as N predictions against the quota.

⚠ discovery-mode — retainer + agreement required (both, always)

The endpoints below generate novel candidate compounds that didn't exist in training — i.e. they produce IP. Access requires both: a paid retainer (funds substrate + GPU + operator time regardless of outcome) and an executed discovery agreement (equity + IP sharing terms). Both conditions apply independently. Not one or the other.

Calls without a discovery-scoped key return 403 discovery_agreement_required. See pricing for retainer structure and agreement terms. To initiate: access@dydact.io.

POST /api/v1/oracle/synthesize C+DE+D

Void-boundary inversion — give it a target Tc + condition envelope, it returns ranked candidate compounds in the geometric neighborhood. Iterative Riemannian descent across canonical bases; runs on GPU burst so latency is higher (1–8s typical) but parallelism is available at corporate+ discovery tiers.

Access: discovery-scoped key (dyd_corpD_… or dyd_entD_…) issued only after executed partnership agreement. Academic tier does not have access by default — dept-level discovery arrangements for grant-funded programs with pre-negotiated IP terms are scoped case-by-case.

POST /api/v1/candidates/rank C+DE+D

Score a user-supplied list of candidate compounds + conditions against the operator. Returns ranked list with per-candidate σ-convergence and basin-tag metadata. Discovery-gated because ranked output materially informs IP filing decisions.

POST /api/v1/holdout/run ACE

Reproduce the paper's hold-out tests. Specify a compound to exclude from training, the API returns predictions under the hold-out operator. Pinned to model_version v0.3 for paper reproducibility; pin other versions via ?version=.

GET /api/v1/calibration/:basis ACE

Current calibration artifact for a basis. Read ui_rating + stale before committing on a prediction. Schema matches CalibrationArtifact from the Beamer CandidatePipelineLens integration.

POST /api/v1/training/init E

Initiate a private fine-tune against the enterprise-client's corpus. Requires a signed data-processing addendum. Spawns a Cherry/Lambda bare-metal GPU instance per job; cost passed through + management premium.

GET /api/v1/shard/status E

Dedicated-shard health + usage for enterprise tenants with contracted isolation.

GET /status

Public liveness check. Returns phase (waitlist | live), D1 liveness, and a timestamp. No auth required.

GET /api/v1/models ACE

List available model versions and their calibration status.

Response

{
  "models": [
    {
      "version": "v0.3",
      "released": "2026-04-22",
      "bases": ["molecular", "clinical", "reaction_conditions", "..."],
      "calibration": {
        "ui_rating": "moderate",
        "stale": false,
        "top_10_recall": 0.62
      },
      "default": true
    }
  ]
}