{"openapi":"3.1.0","info":{"title":"MAMMAL Inference API","description":"\nWarm, always-on inference for IBM's **MAMMAL** biomedical foundation model\n(`ibm/biomed.omics.bl.sm.ma-ted-458m`) and two finetuned task checkpoints.\n\nAll inference endpoints require an **API key** sent as a bearer token:\n\n```\nAuthorization: Bearer <YOUR_MAMMAL_API_KEY>\n```\n\nCall this API **server-side only** — never ship the key to a browser.\n\n### Endpoints\n| Endpoint | Task | Input | Output |\n|----------|------|-------|--------|\n| `POST /ppi` | Protein–protein binding-affinity class | two amino-acid sequences | label string |\n| `POST /dti` | Drug–target binding affinity (pKd) | target AA sequence + drug SMILES | pKd (float) |\n| `POST /clintox_tox` | ClinTox clinical-trial toxicity | drug SMILES | class 0/1 + score |\n\n`GET /health` is open (no key) and reports which models are loaded.\n","contact":{"name":"CureCancerWithAI","url":"https://curecancerwithai.com/"},"version":"2.1.0"},"servers":[{"url":"https://mammal.curecancerwithai.com","description":"Production"}],"paths":{"/health":{"get":{"tags":["meta"],"summary":"Liveness + loaded models","description":"Open (no API key). Reports service status and which task models are warm-loaded.","operationId":"health_health_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HealthResponse"}}}}}}},"/ppi":{"post":{"tags":["inference"],"summary":"Protein–protein binding-affinity class","description":"Classify the binding affinity between two proteins from their amino-acid sequences.","operationId":"ppi_ppi_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PPIRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PPIResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"HTTPBearer":[]}]}},"/dti":{"post":{"tags":["inference"],"summary":"Drug–target binding affinity (pKd)","description":"Predict drug–target binding affinity (pKd) from a target protein sequence and a drug SMILES.","operationId":"dti_dti_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DTIRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DTIResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"HTTPBearer":[]}]}},"/clintox_tox":{"post":{"tags":["inference"],"summary":"ClinTox clinical-trial toxicity","description":"Predict whether a drug (SMILES) would fail clinical trials for toxicity (1 = toxic, 0 = not).","operationId":"clintox_tox_clintox_tox_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ClinToxRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ClinToxResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"HTTPBearer":[]}]}}},"components":{"schemas":{"ClinToxRequest":{"properties":{"smiles":{"type":"string","title":"Smiles","description":"SMILES representation of the drug."}},"type":"object","required":["smiles"],"title":"ClinToxRequest","examples":[{"smiles":"CC(CCl)OC(C)CCl"}]},"ClinToxResponse":{"properties":{"pred":{"type":"integer","title":"Pred","description":"Predicted class: 1 = toxic / failed clinical trials, 0 = not.","examples":[0]},"score":{"type":"number","title":"Score","description":"Raw positive-class score for the prediction.","examples":[1.9e-05]}},"type":"object","required":["pred","score"],"title":"ClinToxResponse"},"DTIRequest":{"properties":{"target_seq":{"type":"string","title":"Target Seq","description":"Amino-acid sequence of the target protein."},"drug_seq":{"type":"string","title":"Drug Seq","description":"SMILES representation of the drug."},"norm_y_mean":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Norm Y Mean","description":"Optional override of the fine-tuning normalization mean (defaults to the published value)."},"norm_y_std":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Norm Y Std","description":"Optional override of the fine-tuning normalization std (defaults to the published value)."}},"type":"object","required":["target_seq","drug_seq"],"title":"DTIRequest","examples":[{"drug_seq":"CC(=O)NCCC1=CNc2c1cc(OC)cc2","target_seq":"NLMKRCTRGFRKLGKCTTLEEEKCKTLYPRGQCTCSDSKMNTHSCDCKSC"}]},"DTIResponse":{"properties":{"pKd":{"type":"number","title":"Pkd","description":"Predicted binding affinity as pKd (negative log10 of the dissociation constant).","examples":[5.4932751]}},"type":"object","required":["pKd"],"title":"DTIResponse"},"HTTPValidationError":{"properties":{"detail":{"items":{"$ref":"#/components/schemas/ValidationError"},"type":"array","title":"Detail"}},"type":"object","title":"HTTPValidationError"},"HealthResponse":{"properties":{"status":{"type":"string","title":"Status","examples":["ok"]},"models_loaded":{"items":{"type":"string"},"type":"array","title":"Models Loaded","examples":[["clintox_tox","dti","ppi"]]},"base_model":{"type":"string","title":"Base Model","examples":["ibm/biomed.omics.bl.sm.ma-ted-458m"]}},"type":"object","required":["status","models_loaded","base_model"],"title":"HealthResponse"},"PPIRequest":{"properties":{"protein_a":{"type":"string","title":"Protein A","description":"Amino-acid sequence of the first protein."},"protein_b":{"type":"string","title":"Protein B","description":"Amino-acid sequence of the second protein."}},"type":"object","required":["protein_a","protein_b"],"title":"PPIRequest","examples":[{"protein_a":"MADQLTEEQIAEFKEAFSLFDKDGDGTITTKELGTVMRSLGQNPTEAELQDMISELDQDGFIDKEDLHDGDGKISFEEFLNLVNKEMTADVDGDGQVNYEEFVTMMTSK","protein_b":"MSSKLLLAGLDIERVLAEKNFYKEWDTWIIEAMNVGDEEVDRIKEFKEDEIFEEAKTLGTAEMQEYKKQKLEEAIEGAFDIFDKDGNGYISAAELRHVMTNLGEKLTDEEVDEMIRQMWDQNGDWDRIKELKFGEIKKLSAKDTRGTIFIKVFENLGTGVDSEYEDVSKYMLKHQ"}]},"PPIResponse":{"properties":{"prediction":{"type":"string","title":"Prediction","description":"Decoded model output for the binding-affinity class.","examples":["<SENTINEL_ID_0><1><EOS>"]}},"type":"object","required":["prediction"],"title":"PPIResponse"},"ValidationError":{"properties":{"loc":{"items":{"anyOf":[{"type":"string"},{"type":"integer"}]},"type":"array","title":"Location"},"msg":{"type":"string","title":"Message"},"type":{"type":"string","title":"Error Type"},"input":{"title":"Input"},"ctx":{"type":"object","title":"Context"}},"type":"object","required":["loc","msg","type"],"title":"ValidationError"}},"securitySchemes":{"HTTPBearer":{"type":"http","description":"Your MAMMAL_API_KEY","scheme":"bearer"}}},"tags":[{"name":"inference","description":"Model inference endpoints (require an API key)."},{"name":"meta","description":"Service metadata and documentation (no key required)."}]}