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
| Tier | Daily cap | Burst (per minute) | Concurrent |
|---|---|---|---|
| Academic A | 1,000 predictions | 60 | 4 |
| Corporate C | 50,000 predictions (default, negotiable) | 600 | 32 |
| Enterprise E | contracted volume, unmetered | unmetered | unmetered |
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
| Status | Body error | Meaning |
|---|---|---|
401 | unauthorized | Missing or malformed bearer token |
403 | tier_insufficient | Endpoint not available on your tier |
429 | rate_limit | Daily or burst cap reached |
503 | waitlist_only | Pre-launch phase — see signup field |
503 | stale_calibration | Pipeline calibration invalidated; predictions locked until re-run |
502 | upstream_error | Substrate 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.
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
}
]
}