Skip to main content
Docs

Search guides and API endpoints, for example “Idempotency-Key” or “submit job”.

    Tools · Cheminformatics & Structure

    ADMET Predictor

    Predicted absorption, distribution, metabolism, excretion, and toxicity for up to 10,000 molecules, for triaging hit lists before costlier work.

    Updated October 1, 2026

    On this page

    Prices, workflows, and method papersOpen in the app

    ADMET Predictor estimates 41 absorption, distribution, metabolism, excretion, and toxicity (ADMET) properties from structure alone. Use it to drop compounds with likely liabilities (poor absorption, hERG blocking, mutagenicity) before you spend GPU time docking or co-folding them.

    These are model predictions, not measurements. For rule-based filters (Lipinski, Veber, PAINS and other structural alerts), use Drug-likeness & Structural Alerts.

    How it works

    The job runs ADMET-AI 2.0.1: Chemprop-RDKit graph neural network ensembles trained on the 41 ADMET datasets of the Therapeutics Data Commons. Every run predicts all 41 endpoints; asking for fewer would not save compute. It runs on CPU.

    • Classification endpoints are probabilities (0 to 1) that the molecule has the property.
    • Regression endpoints use the source dataset's units, for example log(mol/L) for aqueous solubility or kcal/mol for hydration free energy.

    Inputs

    Up to 10,000 molecules as SMILES, InChI, or MOL blocks. Optionally add thresholds: rules such as {"endpoint": "admet_herg", "op": "lt", "value": 0.3}, all of which a molecule must pass. Molecules that can't be parsed are marked error and never pass.

    Outputs

    • predictions.csv: one row per input molecule, one column per endpoint (admet_hia_hou, admet_herg, admet_solubility_aqsoldb, …).
    • passers.smi: the molecules that passed every threshold (all parsed molecules when you set none).

    In a workflow, every endpoint is a metric that later filter steps can rank or cut on, such as keeping molecules with admet_herg below 0.3.

    Endpoints

    GroupEndpoints
    AbsorptionHuman intestinal absorption, oral bioavailability, aqueous solubility, lipophilicity (logD7.4), hydration free energy, Caco-2 and PAMPA permeability, P-glycoprotein inhibition
    DistributionBlood-brain barrier penetration, plasma protein binding, volume of distribution
    MetabolismInhibition of CYP1A2, 2C19, 2C9, 2D6, 3A4; CYP2C9, 2D6, 3A4 substrates
    ExcretionHalf-life, hepatocyte and microsomal clearance
    ToxicityhERG blocking, clinical toxicity, Ames mutagenicity, drug-induced liver injury, carcinogenicity, acute toxicity (LD50), skin reaction, and the 12 Tox21 nuclear-receptor and stress-response assays

    Limits

    • Predictions are only as good as the training data: treat them as a screen, and expect lower accuracy for chemistry unlike the training sets.
    • Reference percentiles against approved drugs are not included.

    Run it from the API

    Submit with Submit a job and the job_type below. Price it first with Estimate job reservation cost: submitting reserves that amount from your wallet, and the charge settles at the actual runtime.

    ADMET Predictor admet-predict

    Job type
    admet-predict
    Hardware
    cpu (default)
    Typical runtime
    5 min on CPU

    Payload

    Payload fields
    FieldTypeDescription
    input_data[]required(string | object)[]

    Limits: min items 1, max items 10000

    input_formatrequiredstring

    One of: "smiles", "inchi", "molblock"

    thresholds[]object[]

    Limits: max items 41

    thresholds.endpointrequiredstring

    One of: "admet_hia_hou", "admet_bioavailability_ma", "admet_solubility_aqsoldb", "admet_lipophilicity_astrazeneca", "admet_hydrationfreeenergy_freesolv", "admet_caco2_wang", "admet_pampa_ncats", "admet_pgp_broccatelli", "admet_bbb_martins", "admet_ppbr_az", "admet_vdss_lombardo", "admet_half_life_obach", "admet_clearance_hepatocyte_az", "admet_clearance_microsome_az", "admet_cyp1a2_veith", "admet_cyp2c19_veith", "admet_cyp2c9_veith", "admet_cyp2d6_veith", "admet_cyp3a4_veith", "admet_cyp2c9_substrate_carbonmangels", "admet_cyp2d6_substrate_carbonmangels", "admet_cyp3a4_substrate_carbonmangels", "admet_herg", "admet_clintox", "admet_ames", "admet_dili", "admet_carcinogens_lagunin", "admet_ld50_zhu", "admet_skin_reaction", "admet_nr_ar", "admet_nr_ar_lbd", "admet_nr_ahr", "admet_nr_aromatase", "admet_nr_er", "admet_nr_er_lbd", "admet_nr_ppar_gamma", "admet_sr_are", "admet_sr_atad5", "admet_sr_hse", "admet_sr_mmp", "admet_sr_p53"

    thresholds.oprequiredstring

    One of: "lt", "le", "gt", "gte"

    thresholds.valuerequirednumber

    Example

    from cognichem_client import CogniChem
    
    client = CogniChem.from_env()  # reads COGNICHEM_API_KEY
    payload = {
        "input_data": ["CCO", "c1ccccc1"],
        "input_format": "smiles",
        "thresholds": [{"endpoint": "admet_herg", "op": "lt", "value": 0.3}],
    }
    
    estimate = client.jobs.estimate(job_type="admet-predict", payload=payload, resource="cpu")
    print(f"Reserves ${estimate.cost:.2f}")
    
    job = client.jobs.submit(
        job_name="my-admet-predict-run",
        job_type="admet-predict",
        payload=payload,
        resource="cpu",
    )
    status = client.jobs.wait(job.process_id)
    if status.status == "completed":
        client.jobs.result(job.process_id, save_path=".")

    Sample data from the job catalog; long values are shortened here. Each job_name must be unique among your jobs.

    Workflow inputs

    • Molecules (list)SMILES, INCHI, MOLBLOCK

    Workflow outputs

    • ArchiveZIP
    • MoleculesSMILES
    • TableCSV