API Reference
MoC-JEPA is a pretrained framework — Moment-driven Charge Density Joint Embedding Predictive Architecture — that maps a structure into per-node latents, then into a charge-density grid you can drop into PySCF as an SCF initial guess. Billing is metered on Processed Atoms for every density prediction. The API is operated by 本征实验室 (Braketlab Inc.). All requests go over HTTPS to https://api.moc-jepa.ai/v1.
01
Upload structure
Crystal .cif / .xyz, or molecule .pdb / .xyz.
02
Encode latents
Backbone returns per-node latents as .h5.
03
Predict density
DEN head writes .cube (default) or .chgcar.
04
Accelerate SCF
Feed the grid to PySCF as init_guess.
Authentication
Authenticate with a secret key in the Authorization header. Generate keys from your dashboard. Never expose a secret key in client-side code.
Authorization: Bearer moc-...Pretrained Backbones
Two independently pretrained backbones share the same architecture and versioning rule. Pick the one that matches your chemistry.
MoC-JEPA-M1-v1.0.pt
moc-jepa-m1Pretrained on crystal datasets in the Materials Project family. Built for solid-state chemistry and condensed-matter problems.
Inputs .cif / .xyz · crystal chemistry, materials discovery, periodic systems
MoC-JEPA-O1-v1.0.pt
moc-jepa-o1Pretrained on single-molecule organic datasets with more complex covalent topologies. Built for drug-discovery workflows.
Inputs .pdb / .xyz · drug discovery, small-molecule screening, ligand design
Density Prediction Models
Density is the shipping application. Each DEN head is bound to one backbone major line and is the model you pay API tokens against. Future heads (Band Gap Prediction, Potential Energy Prediction) will reuse the same slot.
MoC-JEPA-M1-DEN-v1.0.pt
moc-jepa-m1-denRecommended density head bound to MoC-JEPA-M1-v1.0.pt. Predicts the charge-density grid from per-node latents.
Default .cube · optional .chgcar · pin moc-jepa-m1-den-v1.0
MoC-JEPA-O1-DEN-v1.0.pt
moc-jepa-o1-denRecommended density head bound to MoC-JEPA-O1-v1.0.pt. Predicts the charge-density grid from per-node latents.
Default .cube · optional .chgcar · pin moc-jepa-o1-den-v1.0
Naming & Versioning
Checkpoints follow a single pattern. The three-letter task slot is reserved so new applications can land without renaming the backbone.
- major — latent space is not backward compatible; every downstream head must be retrained.
- minor — same architecture, more or cleaner data; latents stay compatible.
- A head at
DEN-v1.xbinds to backbone major linev1.x. - API ids are the lowercase kebab form. Unpinned ids (
moc-jepa-m1-den) resolve to the latest minor within the current major. Pin withmoc-jepa-m1-den-v1.0. - Reserved task codes:
GAPBand Gap PredictionPESPotential Energy Prediction — documented, not shipping.
| Kind | Checkpoint | Meaning |
|---|---|---|
| Backbone | MoC-JEPA-M1-v1.0.pt | Materials pretrained model, first major line |
| Backbone | MoC-JEPA-O1-v1.0.pt | Organic pretrained model, first major line |
| Task head | MoC-JEPA-M1-DEN-v1.0.pt | Density head bound to M1 v1.x |
| Task head | MoC-JEPA-O1-DEN-v1.0.pt | Density head bound to O1 v1.x |
Encode Latents
/v1/latentsMaps an input structure into the MoC-JEPA latent space and returns per-node latents as an .h5 file. The model is equivariant under the Euclidean group E(3), so for any rotation R the latents transform as z(Rx) = R · z(x).
Each Processed Atom yields a 256-dimensional latent vector. The full tensor has shape (N, 256) and dtype float32.
Request body
| Parameter | Type | Description |
|---|---|---|
modelrequired | string | Backbone id. Currently moc-jepa-m1 or moc-jepa-o1. |
structurerequired | file | Crystal geometry as .cif / .xyz, or molecular geometry as .pdb / .xyz. |
Predict Density
/v1/densityRuns the recommended Density Prediction Model on a latents file and returns a charge-density grid. This is the billable call: one Processed Atom is counted per atom in the encoded structure.
Request body
| Parameter | Type | Description |
|---|---|---|
model | string | Density-head id. Defaults to the recommended DEN head bound to the latents' backbone. Currently moc-jepa-m1-den or moc-jepa-o1-den. Pin with a version suffix, e.g. moc-jepa-m1-den-v1.0. |
latentsrequired | file | Per-node latents .h5 from POST /v1/latents. Alternatively pass latents_id from a previous encode response. |
latents_id | string | Server-side handle returned by /v1/latents. Use instead of re-uploading the .h5 file. |
format | string | Output grid format: cube (default) or chgcar. |
One-shot Density
/v1/density:directConvenience endpoint that encodes latents and predicts density in one request. Equivalent to calling /v1/latents then /v1/density. Prefer the two-step path when you want to reuse latents across multiple heads.
Request body
| Parameter | Type | Description |
|---|---|---|
modelrequired | string | Density-head id (moc-jepa-m1-den or moc-jepa-o1-den). The matching backbone is selected automatically. |
structurerequired | file | Same structure formats as /v1/latents. |
format | string | Output grid format: cube (default) or chgcar. |
Accelerating SCF with PySCF
Download the density grid, then initialize the SCF density matrix from that cube instead of a minao or atomic guess. The helper projects the real-space density onto the chosen basis and returns a density matrix you pass to mf.kernel.
- Call
/v1/densityor/v1/density:directand save the.cube. - Build the PySCF molecule with the same geometry you uploaded.
- Construct
dm0viainitial_guess_from_cube. - Run
mf.kernel(dm0=dm0).
File Formats
| Stage | Formats | Notes |
|---|---|---|
| Crystal input | .cif / .xyz | Use with moc-jepa-m1 |
| Molecule input | .pdb / .xyz | Use with moc-jepa-o1 |
| Latents | .h5 | Per-node float32 tensor, shape (N, 256) |
| Charge density | .cube / .chgcar | cube is the default; chgcar for periodic cells |
Rate Limits
Limits are enforced per Processed Atom, not per request. Both /v1/latents and /v1/density count against the same quota. The default tier allows 10,000,000 Processed Atoms per month and 200 requests per minute. Contact us for research-scale throughput.
Errors
MoC-JEPA uses conventional HTTP response codes. 2xx indicates success, 4xx a client error (e.g. malformed structure or unsupported format), and 5xx an error on our side.