{"openapi": "3.0.3", "info": {"title": "Boltz-2 prediction service", "version": "2.2.1", "description": "HTTP wrapper around the open-source **Boltz-2** CLI, `boltz==2.2.1`. One prediction runs at a time, because the pod owns a single GPU slice.\n\n**Runtime flags** applied to every prediction: `--max_parallel_samples 1 --diffusion_samples 1 --recycling_steps 3 --sampling_steps 200 --use_potentials`\n\n**MSAs:** the external MSA server is disabled. Every protein must have an `msa:` field, either a saved `.a3m` path inside the pod (for example `/root/.boltz/msa/tyk2_4gih.a3m`) or `empty` for single-sequence mode. No sequence is sent to any external server.\n\nInput format: [Boltz YAML schema](https://github.com/jwohlwend/boltz/blob/v2.2.1/docs/prediction.md)."}, "paths": {"/health": {"get": {"summary": "Liveness and readiness", "responses": {"200": {"description": "Service is up", "content": {"application/json": {"schema": {"type": "object", "properties": {"status": {"type": "string", "example": "ok"}, "busy": {"type": "boolean", "description": "A prediction is running"}, "boltz_version": {"type": "string", "example": "2.2.1"}}}}}}}}}, "/checkpoints": {"get": {"summary": "Downloaded model checkpoints with SHA-256", "description": "Checkpoints download on the first prediction: `boltz2_conf.ckpt` (structure), `boltz2_aff.ckpt` (affinity) and `mols.tar`. Hashes are computed on first request and cached.", "responses": {"200": {"description": "Checkpoint files", "content": {"application/json": {"schema": {"type": "object", "properties": {"boltz_version": {"type": "string"}, "cache": {"type": "string"}, "files": {"type": "array", "items": {"type": "object", "properties": {"file": {"type": "string"}, "path": {"type": "string"}, "present": {"type": "boolean"}, "size_bytes": {"type": "integer"}, "sha256": {"type": "string"}}}}}}}}}}}}, "/predict": {"post": {"summary": "Run boltz predict on one input", "description": "Send a Boltz input YAML as the raw body, or JSON with the YAML in `input`. Add `properties: [affinity: {binder: <ligand id>}]` to the YAML for an affinity prediction. The first call is slow because it downloads the checkpoints.", "requestBody": {"required": true, "content": {"application/x-yaml": {"schema": {"type": "string"}, "example": "version: 1\nsequences:\n  - protein:\n      id: A\n      sequence: MQSWYLLYCKRGQLQRAQEHLERQAVNCLAPMITLEKIVRGKRTAVSEPLFPNYLFVEFDPEVIHTTTINATRGVSHFVRFGASPAIVPSAVIHQLSVYKPKDIVDPATPYPGDKVIITEGAFEGFQAIFTEPDGEARSMLLLNLINKEIKHSVKNTEFRKL\n      msa: empty\n"}, "application/json": {"schema": {"type": "object", "required": ["input"], "properties": {"input": {"type": "string", "description": "Boltz input YAML"}, "name": {"type": "string", "description": "Job name, used in output file names"}}}, "example": {"name": "rfah-test", "input": "version: 1\nsequences:\n  - protein:\n      id: A\n      sequence: MQSWYLLYCKRGQLQRAQEHLERQAVNCLAPMITLEKIVRGKRTAVSEPLFPNYLFVEFDPEVIHTTTINATRGVSHFVRFGASPAIVPSAVIHQLSVYKPKDIVDPATPYPGDKVIITEGAFEGFQAIFTEPDGEARSMLLLNLINKEIKHSVKNTEFRKL\n      msa: empty\n"}}}}, "responses": {"200": {"description": "Prediction results", "content": {"application/json": {"schema": {"type": "object", "properties": {"name": {"type": "string"}, "boltz_version": {"type": "string"}, "args": {"type": "array", "items": {"type": "string"}}, "metrics": {"type": "object", "properties": {"runtime_seconds": {"type": "number"}, "peak_gpu_memory_mib": {"type": "integer", "nullable": true}, "gpu_memory_baseline_mib": {"type": "integer", "nullable": true}, "peak_gpu_memory_delta_mib": {"type": "integer", "nullable": true}, "peak_host_rss_mib": {"type": "integer", "nullable": true}, "sample_interval_s": {"type": "number"}}}, "structures": {"type": "array", "items": {"type": "object", "properties": {"file": {"type": "string"}, "format": {"type": "string", "example": "cif"}, "content": {"type": "string", "description": "mmCIF text"}}}}, "confidence": {"type": "array", "items": {"type": "object"}}, "affinity": {"type": "array", "items": {"type": "object"}}, "other": {"type": "array", "items": {"type": "object"}}}}}}}, "400": {"description": "Bad request body", "content": {"application/json": {"schema": {"type": "object", "properties": {"error": {"type": "string"}}}}}}, "429": {"description": "Another prediction is running, retry later", "content": {"application/json": {"schema": {"type": "object", "properties": {"error": {"type": "string"}}}}}}, "500": {"description": "boltz predict failed (stderr included)", "content": {"application/json": {"schema": {"type": "object", "properties": {"error": {"type": "string"}}}}}}, "504": {"description": "Prediction exceeded the timeout", "content": {"application/json": {"schema": {"type": "object", "properties": {"error": {"type": "string"}}}}}}}}}}}