Skip to main content
Docs

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

    Tools · Computational Biology

    FreeBindCraft

    Design miniprotein and peptide binders against a target structure using open-source scoring
    On this page

    Prices, workflows, and method papersOpen in the app

    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.

    FreeBindCraft freebindcraft

    Job type
    freebindcraft
    Hardware
    a10 (default)l40sa100-40gba100-80gbh100h200b200
    Typical runtime
    2 h on Nvidia A10

    Payload

    Payload fields
    FieldTypeDescription
    target_pdbrequiredstring
    target_chains[]string[]

    Limits: min items 1

    design_typerequiredstring

    One of: "miniprotein", "peptide"

    hotspot_residues[]string[]
    binder_length_mininteger

    Limits: ≥ 5, ≤ 500

    binder_length_maxinteger

    Limits: ≥ 5, ≤ 500

    num_designsinteger

    Default: 10Limits: ≥ 1, ≤ 100

    filtersstring

    Default: "default_filters"One of: "default_filters", "relaxed_filters", "no_filters"

    advanced_settingsstring

    Default: "default"

    rank_bystring

    Default: "i_pTM"One of: "i_pTM", "ipSAE"

    Example

    from cognichem_client import CogniChem
    
    client = CogniChem.from_env()  # reads COGNICHEM_API_KEY
    payload = {
        "target_pdb": "ATOM      1  N   ASN A  17      -0.952   8.873 -32.964  1.00… (73,715 characters)",
        "target_chains": ["A"],
        "design_type": "miniprotein",
        "hotspot_residues": ["A56"],
        "binder_length_min": 65,
        "binder_length_max": 80,
        "num_designs": 1,
        "filters": "default_filters",
        "rank_by": "i_pTM",
    }
    
    estimate = client.jobs.estimate(job_type="freebindcraft", payload=payload, resource="a10")
    print(f"Reserves ${estimate.cost:.2f}")
    
    job = client.jobs.submit(
        job_name="my-freebindcraft-run",
        job_type="freebindcraft",
        payload=payload,
        resource="a10",
    )
    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

    • Protein structurePDB

    Workflow outputs

    • ArchiveZIP
    • StructuresPDB