# Library Screen

## Start

`protein.library_screen.start(LibraryScreenStartParams**kwargs)  -> LibraryScreenStartResponse`

**post** `/compute/v1/protein/library-screen`

Screen a set of protein candidates against a target

### Parameters

- `proteins: Iterable[Protein]`

  List of protein entries to screen.

  - `entities: Iterable[ProteinEntity]`

    Entities that make up this protein complex

    - `class ProteinEntityProteinEntity: …`

      - `chain_ids: SequenceNotStr[str]`

        Chain IDs for this entity

      - `type: Literal["protein"]`

        - `"protein"`

      - `value: str`

        Amino acid sequence (one-letter codes)

      - `cyclic: Optional[bool]`

        Whether the sequence is cyclic

      - `modifications: Optional[Iterable[ProteinEntityProteinEntityModification]]`

        Post-translational modifications. Optional; defaults to an empty list when omitted.

        - `class ProteinEntityProteinEntityModificationCcdModification: …`

          - `residue_index: int`

            0-based index of the residue to modify

          - `type: Literal["ccd"]`

            - `"ccd"`

          - `value: str`

            CCD code from RCSB PDB (e.g. 'MSE' for selenomethionine, 'SEP' for phosphoserine)

        - `class ProteinEntityProteinEntityModificationSmilesModification: …`

          - `residue_index: int`

            0-based index of the residue to modify

          - `type: Literal["smiles"]`

            - `"smiles"`

          - `value: str`

            SMILES string for the modification

    - `class ProteinEntityRnaEntity: …`

      - `chain_ids: SequenceNotStr[str]`

        Chain IDs for this entity

      - `type: Literal["rna"]`

        - `"rna"`

      - `value: str`

        RNA nucleotide sequence (A, C, G, U, N)

      - `cyclic: Optional[bool]`

        Whether the sequence is cyclic

      - `modifications: Optional[Iterable[ProteinEntityRnaEntityModification]]`

        Chemical modifications. Optional; defaults to an empty list when omitted.

        - `class ProteinEntityRnaEntityModificationCcdModification: …`

          - `residue_index: int`

            0-based index of the residue to modify

          - `type: Literal["ccd"]`

            - `"ccd"`

          - `value: str`

            CCD code from RCSB PDB (e.g. 'MSE' for selenomethionine, 'SEP' for phosphoserine)

        - `class ProteinEntityRnaEntityModificationSmilesModification: …`

          - `residue_index: int`

            0-based index of the residue to modify

          - `type: Literal["smiles"]`

            - `"smiles"`

          - `value: str`

            SMILES string for the modification

    - `class ProteinEntityDnaEntity: …`

      - `chain_ids: SequenceNotStr[str]`

        Chain IDs for this entity

      - `type: Literal["dna"]`

        - `"dna"`

      - `value: str`

        DNA nucleotide sequence (A, C, G, T, N)

      - `cyclic: Optional[bool]`

        Whether the sequence is cyclic

      - `modifications: Optional[Iterable[ProteinEntityDnaEntityModification]]`

        Chemical modifications. Optional; defaults to an empty list when omitted.

        - `class ProteinEntityDnaEntityModificationCcdModification: …`

          - `residue_index: int`

            0-based index of the residue to modify

          - `type: Literal["ccd"]`

            - `"ccd"`

          - `value: str`

            CCD code from RCSB PDB (e.g. 'MSE' for selenomethionine, 'SEP' for phosphoserine)

        - `class ProteinEntityDnaEntityModificationSmilesModification: …`

          - `residue_index: int`

            0-based index of the residue to modify

          - `type: Literal["smiles"]`

            - `"smiles"`

          - `value: str`

            SMILES string for the modification

    - `class ProteinEntityLigandCcdEntity: …`

      - `chain_ids: SequenceNotStr[str]`

        Chain IDs for this ligand

      - `type: Literal["ligand_ccd"]`

        - `"ligand_ccd"`

      - `value: str`

        CCD code (e.g., ATP, ADP)

    - `class ProteinEntityLigandSmilesEntity: …`

      - `chain_ids: SequenceNotStr[str]`

        Chain IDs for this ligand

      - `type: Literal["ligand_smiles"]`

        - `"ligand_smiles"`

      - `value: str`

        SMILES string representing the ligand

  - `id: Optional[str]`

    Optional client-provided identifier for this entry

- `target: Target`

  Target specification (structure template or template-free)

  - `class TargetStructureTemplateTarget: …`

    Target defined by an uploaded 3D structure (CIF or PDB file). Only chains included in chain_selection are used.

    - `chain_selection: Dict[str, TargetStructureTemplateTargetChainSelection]`

      Chains selected from the uploaded structure, keyed by chain ID. Only chains listed here are included in the engine run — any chains omitted from this mapping are ignored. Each value defines which residues to keep, which are epitope residues, and which are flexible.

      - `class TargetStructureTemplateTargetChainSelectionStructureTemplateTargetPolymerChainSpec: …`

        Per-chain specification for a polymer (protein/RNA/DNA) chain in a structure template target.

        - `chain_type: Literal["polymer"]`

          - `"polymer"`

        - `crop_residues: Union[Iterable[int], Literal["all"]]`

          0-indexed residue indices to retain from this chain, or 'all' to keep all residues. Residues not listed are excluded from the engine run.

          - `Iterable[int]`

            0-indexed residue indices to keep

          - `Literal["all"]`

            - `"all"`

        - `epitope_residues: Optional[Iterable[int]]`

          0-indexed residue indices where binder contact is desired (the epitope). All indices must be present in crop_residues.

        - `flexible_residues: Optional[Iterable[int]]`

          0-indexed residue indices allowed to move during design (e.g. flexible loop regions). All indices must be present in crop_residues.

      - `class TargetStructureTemplateTargetChainSelectionStructureTemplateTargetLigandChainSpec: …`

        Per-chain specification for a ligand chain in a structure template target. The full ligand is always included.

        - `chain_type: Literal["ligand"]`

          - `"ligand"`

    - `structure: TargetStructureTemplateTargetStructure`

      How to provide a CIF structure file. URLs are auto-detected; base64 uploads must use chemical/x-cif media type.

      - `class TargetStructureTemplateTargetStructureURLSource: …`

        - `type: Literal["url"]`

          - `"url"`

        - `url: str`

      - `class TargetStructureTemplateTargetStructureCifBase64Source: …`

        - `data: str`

          Base64-encoded CIF file contents

        - `media_type: Literal["chemical/x-cif"]`

          Must be chemical/x-cif for CIF files

          - `"chemical/x-cif"`

        - `type: Literal["base64"]`

          - `"base64"`

    - `type: Literal["structure_template"]`

      - `"structure_template"`

  - `class TargetNoTemplateTarget: …`

    Target defined by sequences only, without a 3D structure template

    - `entities: Iterable[TargetNoTemplateTargetEntity]`

      Entities (proteins, RNA, DNA, ligands) defining the target complex.

      - `class TargetNoTemplateTargetEntityProteinEntity: …`

        - `chain_ids: SequenceNotStr[str]`

          Chain IDs for this entity

        - `type: Literal["protein"]`

          - `"protein"`

        - `value: str`

          Amino acid sequence (one-letter codes)

        - `cyclic: Optional[bool]`

          Whether the sequence is cyclic

        - `modifications: Optional[Iterable[TargetNoTemplateTargetEntityProteinEntityModification]]`

          Post-translational modifications. Optional; defaults to an empty list when omitted.

          - `class TargetNoTemplateTargetEntityProteinEntityModificationCcdModification: …`

            - `residue_index: int`

              0-based index of the residue to modify

            - `type: Literal["ccd"]`

              - `"ccd"`

            - `value: str`

              CCD code from RCSB PDB (e.g. 'MSE' for selenomethionine, 'SEP' for phosphoserine)

          - `class TargetNoTemplateTargetEntityProteinEntityModificationSmilesModification: …`

            - `residue_index: int`

              0-based index of the residue to modify

            - `type: Literal["smiles"]`

              - `"smiles"`

            - `value: str`

              SMILES string for the modification

      - `class TargetNoTemplateTargetEntityRnaEntity: …`

        - `chain_ids: SequenceNotStr[str]`

          Chain IDs for this entity

        - `type: Literal["rna"]`

          - `"rna"`

        - `value: str`

          RNA nucleotide sequence (A, C, G, U, N)

        - `cyclic: Optional[bool]`

          Whether the sequence is cyclic

        - `modifications: Optional[Iterable[TargetNoTemplateTargetEntityRnaEntityModification]]`

          Chemical modifications. Optional; defaults to an empty list when omitted.

          - `class TargetNoTemplateTargetEntityRnaEntityModificationCcdModification: …`

            - `residue_index: int`

              0-based index of the residue to modify

            - `type: Literal["ccd"]`

              - `"ccd"`

            - `value: str`

              CCD code from RCSB PDB (e.g. 'MSE' for selenomethionine, 'SEP' for phosphoserine)

          - `class TargetNoTemplateTargetEntityRnaEntityModificationSmilesModification: …`

            - `residue_index: int`

              0-based index of the residue to modify

            - `type: Literal["smiles"]`

              - `"smiles"`

            - `value: str`

              SMILES string for the modification

      - `class TargetNoTemplateTargetEntityDnaEntity: …`

        - `chain_ids: SequenceNotStr[str]`

          Chain IDs for this entity

        - `type: Literal["dna"]`

          - `"dna"`

        - `value: str`

          DNA nucleotide sequence (A, C, G, T, N)

        - `cyclic: Optional[bool]`

          Whether the sequence is cyclic

        - `modifications: Optional[Iterable[TargetNoTemplateTargetEntityDnaEntityModification]]`

          Chemical modifications. Optional; defaults to an empty list when omitted.

          - `class TargetNoTemplateTargetEntityDnaEntityModificationCcdModification: …`

            - `residue_index: int`

              0-based index of the residue to modify

            - `type: Literal["ccd"]`

              - `"ccd"`

            - `value: str`

              CCD code from RCSB PDB (e.g. 'MSE' for selenomethionine, 'SEP' for phosphoserine)

          - `class TargetNoTemplateTargetEntityDnaEntityModificationSmilesModification: …`

            - `residue_index: int`

              0-based index of the residue to modify

            - `type: Literal["smiles"]`

              - `"smiles"`

            - `value: str`

              SMILES string for the modification

      - `class TargetNoTemplateTargetEntityLigandCcdEntity: …`

        - `chain_ids: SequenceNotStr[str]`

          Chain IDs for this ligand

        - `type: Literal["ligand_ccd"]`

          - `"ligand_ccd"`

        - `value: str`

          CCD code (e.g., ATP, ADP)

      - `class TargetNoTemplateTargetEntityLigandSmilesEntity: …`

        - `chain_ids: SequenceNotStr[str]`

          Chain IDs for this ligand

        - `type: Literal["ligand_smiles"]`

          - `"ligand_smiles"`

        - `value: str`

          SMILES string representing the ligand

    - `type: Literal["no_template"]`

      - `"no_template"`

    - `bonds: Optional[Iterable[TargetNoTemplateTargetBond]]`

      Covalent bond constraints between atoms in the target complex. Atom-level ligand references currently support ligand_ccd only; ligand_smiles is unsupported.

      - `atom1: TargetNoTemplateTargetBondAtom1`

        Ligand atom reference. Atom-level ligand references currently support ligand_ccd entities only; ligand_smiles is unsupported.

        - `class TargetNoTemplateTargetBondAtom1LigandAtom: …`

          Ligand atom reference. Atom-level ligand references currently support ligand_ccd entities only; ligand_smiles is unsupported.

          - `atom_name: str`

            Standardized atom name (verifiable in CIF file on RCSB). Atom-level references to ligand_smiles entities are currently unsupported; use ligand_ccd instead.

          - `chain_id: str`

            Chain ID containing the atom

          - `type: Literal["ligand_atom"]`

            - `"ligand_atom"`

        - `class TargetNoTemplateTargetBondAtom1PolymerAtom: …`

          - `atom_name: str`

            Standardized atom name (verifiable in CIF file on RCSB)

          - `chain_id: str`

            Chain ID containing the atom

          - `residue_index: int`

            0-based residue index

          - `type: Literal["polymer_atom"]`

            - `"polymer_atom"`

      - `atom2: TargetNoTemplateTargetBondAtom2`

        Ligand atom reference. Atom-level ligand references currently support ligand_ccd entities only; ligand_smiles is unsupported.

        - `class TargetNoTemplateTargetBondAtom2LigandAtom: …`

          Ligand atom reference. Atom-level ligand references currently support ligand_ccd entities only; ligand_smiles is unsupported.

          - `atom_name: str`

            Standardized atom name (verifiable in CIF file on RCSB). Atom-level references to ligand_smiles entities are currently unsupported; use ligand_ccd instead.

          - `chain_id: str`

            Chain ID containing the atom

          - `type: Literal["ligand_atom"]`

            - `"ligand_atom"`

        - `class TargetNoTemplateTargetBondAtom2PolymerAtom: …`

          - `atom_name: str`

            Standardized atom name (verifiable in CIF file on RCSB)

          - `chain_id: str`

            Chain ID containing the atom

          - `residue_index: int`

            0-based residue index

          - `type: Literal["polymer_atom"]`

            - `"polymer_atom"`

    - `constraints: Optional[Iterable[TargetNoTemplateTargetConstraint]]`

      Structural constraints (pocket and contact). Atom-level ligand references currently support ligand_ccd only; ligand_smiles is unsupported.

      - `class TargetNoTemplateTargetConstraintPocketConstraint: …`

        Constrains the binder to interact with specific pocket residues on the target.

        - `binder_chain_id: str`

          Chain ID of the binder molecule

        - `contact_residues: Dict[str, Iterable[int]]`

          Binding pocket residues keyed by chain ID. Each key is a chain ID (e.g. "A") and the value is an array of 0-indexed residue indices that define the pocket on that chain.

        - `max_distance_angstrom: float`

          Maximum allowed distance in Angstroms between binder and pocket residues. Typical range: 4-8 A.

        - `type: Literal["pocket"]`

          - `"pocket"`

        - `force: Optional[bool]`

          Whether to force the constraint

      - `class TargetNoTemplateTargetConstraintContactConstraint: …`

        Contact constraint between two tokens. Atom-level ligand references currently support ligand_ccd entities only; ligand_smiles is unsupported.

        - `max_distance_angstrom: float`

          Maximum distance in Angstroms

        - `token1: TargetNoTemplateTargetConstraintContactConstraintToken1`

          Ligand contact token. Atom-level ligand references currently support ligand_ccd entities only; ligand_smiles is unsupported.

          - `class TargetNoTemplateTargetConstraintContactConstraintToken1PolymerContactToken: …`

            - `chain_id: str`

              Chain ID

            - `residue_index: int`

              0-based residue index

            - `type: Literal["polymer_contact"]`

              - `"polymer_contact"`

          - `class TargetNoTemplateTargetConstraintContactConstraintToken1LigandContactToken: …`

            Ligand contact token. Atom-level ligand references currently support ligand_ccd entities only; ligand_smiles is unsupported.

            - `atom_name: str`

              Atom name. Atom-level references to ligand_smiles entities are currently unsupported; use ligand_ccd instead.

            - `chain_id: str`

              Chain ID

            - `type: Literal["ligand_contact"]`

              - `"ligand_contact"`

        - `token2: TargetNoTemplateTargetConstraintContactConstraintToken2`

          Ligand contact token. Atom-level ligand references currently support ligand_ccd entities only; ligand_smiles is unsupported.

          - `class TargetNoTemplateTargetConstraintContactConstraintToken2PolymerContactToken: …`

            - `chain_id: str`

              Chain ID

            - `residue_index: int`

              0-based residue index

            - `type: Literal["polymer_contact"]`

              - `"polymer_contact"`

          - `class TargetNoTemplateTargetConstraintContactConstraintToken2LigandContactToken: …`

            Ligand contact token. Atom-level ligand references currently support ligand_ccd entities only; ligand_smiles is unsupported.

            - `atom_name: str`

              Atom name. Atom-level references to ligand_smiles entities are currently unsupported; use ligand_ccd instead.

            - `chain_id: str`

              Chain ID

            - `type: Literal["ligand_contact"]`

              - `"ligand_contact"`

        - `type: Literal["contact"]`

          - `"contact"`

        - `force: Optional[bool]`

          Whether to force the constraint

    - `epitope_ligand_chains: Optional[SequenceNotStr[str]]`

      Chain IDs of ligand entities that are part of the binding epitope. Ligands are marked as epitope in full (no residue-level selection).

    - `epitope_residues: Optional[Dict[str, Iterable[int]]]`

      Polymer chain residues where binder contact is desired (the epitope). Each key is a chain ID of a polymer entity, each value is an array of 0-indexed residue indices.

- `idempotency_key: Optional[str]`

  Client-provided key to prevent duplicate submissions on retries

- `workspace_id: Optional[str]`

  Target workspace ID (admin keys only; ignored for workspace keys)

### Returns

- `class LibraryScreenStartResponse: …`

  A protein library screening engine run

  - `id: str`

    Unique ProteinLibraryScreen identifier

  - `completed_at: Optional[datetime]`

  - `created_at: datetime`

  - `data_deleted_at: Optional[datetime]`

    When the input, output, and result data was permanently deleted. Null if data has not been deleted.

  - `engine: Literal["boltz-protein-screen"]`

    Engine used for protein library screen

    - `"boltz-protein-screen"`

  - `engine_version: str`

    Engine version used for protein library screen

  - `error: Optional[Error]`

    - `code: str`

      Machine-readable error code

    - `message: str`

      Human-readable error message

    - `details: Optional[object]`

      Additional field-level error details keyed by input path, when available.

  - `input: Optional[Input]`

    Pipeline input (null if data deleted)

    - `proteins: InputProteins`

      - `url: str`

        URL to download the file

      - `url_expires_at: datetime`

        When the presigned URL expires

    - `target: InputTarget`

      Target specification (structure template or template-free)

      - `class InputTargetStructureTemplateTargetResponse: …`

        Target defined by an uploaded 3D structure (CIF or PDB file). Only chains included in chain_selection are used.

        - `chain_selection: Dict[str, InputTargetStructureTemplateTargetResponseChainSelection]`

          Chains selected from the uploaded structure, keyed by chain ID. Only chains listed here are included in the engine run — any chains omitted from this mapping are ignored. Each value defines which residues to keep, which are epitope residues, and which are flexible.

          - `class InputTargetStructureTemplateTargetResponseChainSelectionStructureTemplateTargetPolymerChainSpec: …`

            Per-chain specification for a polymer (protein/RNA/DNA) chain in a structure template target.

            - `chain_type: Literal["polymer"]`

              - `"polymer"`

            - `crop_residues: Union[List[int], Literal["all"]]`

              0-indexed residue indices to retain from this chain, or 'all' to keep all residues. Residues not listed are excluded from the engine run.

              - `List[int]`

                0-indexed residue indices to keep

              - `Literal["all"]`

                - `"all"`

            - `epitope_residues: Optional[List[int]]`

              0-indexed residue indices where binder contact is desired (the epitope). All indices must be present in crop_residues.

            - `flexible_residues: Optional[List[int]]`

              0-indexed residue indices allowed to move during design (e.g. flexible loop regions). All indices must be present in crop_residues.

          - `class InputTargetStructureTemplateTargetResponseChainSelectionStructureTemplateTargetLigandChainSpec: …`

            Per-chain specification for a ligand chain in a structure template target. The full ligand is always included.

            - `chain_type: Literal["ligand"]`

              - `"ligand"`

        - `structure: InputTargetStructureTemplateTargetResponseStructure`

          - `url: str`

            URL to download the file

          - `url_expires_at: datetime`

            When the presigned URL expires

        - `type: Literal["structure_template"]`

          - `"structure_template"`

      - `class InputTargetNoTemplateTargetResponse: …`

        Target defined by sequences only, without a 3D structure template

        - `entities: List[InputTargetNoTemplateTargetResponseEntity]`

          Entities (proteins, RNA, DNA, ligands) defining the target complex.

          - `class InputTargetNoTemplateTargetResponseEntityProteinEntityResponse: …`

            - `chain_ids: List[str]`

              Chain IDs for this entity

            - `type: Literal["protein"]`

              - `"protein"`

            - `value: str`

              Amino acid sequence (one-letter codes)

            - `cyclic: Optional[bool]`

              Whether the sequence is cyclic

            - `modifications: Optional[List[InputTargetNoTemplateTargetResponseEntityProteinEntityResponseModification]]`

              Post-translational modifications. Optional; defaults to an empty list when omitted.

              - `class InputTargetNoTemplateTargetResponseEntityProteinEntityResponseModificationCcdModificationResponse: …`

                - `residue_index: int`

                  0-based index of the residue to modify

                - `type: Literal["ccd"]`

                  - `"ccd"`

                - `value: str`

                  CCD code from RCSB PDB (e.g. 'MSE' for selenomethionine, 'SEP' for phosphoserine)

              - `class InputTargetNoTemplateTargetResponseEntityProteinEntityResponseModificationSmilesModificationResponse: …`

                - `residue_index: int`

                  0-based index of the residue to modify

                - `type: Literal["smiles"]`

                  - `"smiles"`

                - `value: str`

                  SMILES string for the modification

          - `class InputTargetNoTemplateTargetResponseEntityRnaEntityResponse: …`

            - `chain_ids: List[str]`

              Chain IDs for this entity

            - `type: Literal["rna"]`

              - `"rna"`

            - `value: str`

              RNA nucleotide sequence (A, C, G, U, N)

            - `cyclic: Optional[bool]`

              Whether the sequence is cyclic

            - `modifications: Optional[List[InputTargetNoTemplateTargetResponseEntityRnaEntityResponseModification]]`

              Chemical modifications. Optional; defaults to an empty list when omitted.

              - `class InputTargetNoTemplateTargetResponseEntityRnaEntityResponseModificationCcdModificationResponse: …`

                - `residue_index: int`

                  0-based index of the residue to modify

                - `type: Literal["ccd"]`

                  - `"ccd"`

                - `value: str`

                  CCD code from RCSB PDB (e.g. 'MSE' for selenomethionine, 'SEP' for phosphoserine)

              - `class InputTargetNoTemplateTargetResponseEntityRnaEntityResponseModificationSmilesModificationResponse: …`

                - `residue_index: int`

                  0-based index of the residue to modify

                - `type: Literal["smiles"]`

                  - `"smiles"`

                - `value: str`

                  SMILES string for the modification

          - `class InputTargetNoTemplateTargetResponseEntityDnaEntityResponse: …`

            - `chain_ids: List[str]`

              Chain IDs for this entity

            - `type: Literal["dna"]`

              - `"dna"`

            - `value: str`

              DNA nucleotide sequence (A, C, G, T, N)

            - `cyclic: Optional[bool]`

              Whether the sequence is cyclic

            - `modifications: Optional[List[InputTargetNoTemplateTargetResponseEntityDnaEntityResponseModification]]`

              Chemical modifications. Optional; defaults to an empty list when omitted.

              - `class InputTargetNoTemplateTargetResponseEntityDnaEntityResponseModificationCcdModificationResponse: …`

                - `residue_index: int`

                  0-based index of the residue to modify

                - `type: Literal["ccd"]`

                  - `"ccd"`

                - `value: str`

                  CCD code from RCSB PDB (e.g. 'MSE' for selenomethionine, 'SEP' for phosphoserine)

              - `class InputTargetNoTemplateTargetResponseEntityDnaEntityResponseModificationSmilesModificationResponse: …`

                - `residue_index: int`

                  0-based index of the residue to modify

                - `type: Literal["smiles"]`

                  - `"smiles"`

                - `value: str`

                  SMILES string for the modification

          - `class InputTargetNoTemplateTargetResponseEntityLigandCcdEntityResponse: …`

            - `chain_ids: List[str]`

              Chain IDs for this ligand

            - `type: Literal["ligand_ccd"]`

              - `"ligand_ccd"`

            - `value: str`

              CCD code (e.g., ATP, ADP)

          - `class InputTargetNoTemplateTargetResponseEntityLigandSmilesEntityResponse: …`

            - `chain_ids: List[str]`

              Chain IDs for this ligand

            - `type: Literal["ligand_smiles"]`

              - `"ligand_smiles"`

            - `value: str`

              SMILES string representing the ligand

        - `type: Literal["no_template"]`

          - `"no_template"`

        - `bonds: Optional[List[InputTargetNoTemplateTargetResponseBond]]`

          Covalent bond constraints between atoms in the target complex. Atom-level ligand references currently support ligand_ccd only; ligand_smiles is unsupported.

          - `atom1: InputTargetNoTemplateTargetResponseBondAtom1`

            Ligand atom reference. Atom-level ligand references currently support ligand_ccd entities only; ligand_smiles is unsupported.

            - `class InputTargetNoTemplateTargetResponseBondAtom1LigandAtomResponse: …`

              Ligand atom reference. Atom-level ligand references currently support ligand_ccd entities only; ligand_smiles is unsupported.

              - `atom_name: str`

                Standardized atom name (verifiable in CIF file on RCSB). Atom-level references to ligand_smiles entities are currently unsupported; use ligand_ccd instead.

              - `chain_id: str`

                Chain ID containing the atom

              - `type: Literal["ligand_atom"]`

                - `"ligand_atom"`

            - `class InputTargetNoTemplateTargetResponseBondAtom1PolymerAtomResponse: …`

              - `atom_name: str`

                Standardized atom name (verifiable in CIF file on RCSB)

              - `chain_id: str`

                Chain ID containing the atom

              - `residue_index: int`

                0-based residue index

              - `type: Literal["polymer_atom"]`

                - `"polymer_atom"`

          - `atom2: InputTargetNoTemplateTargetResponseBondAtom2`

            Ligand atom reference. Atom-level ligand references currently support ligand_ccd entities only; ligand_smiles is unsupported.

            - `class InputTargetNoTemplateTargetResponseBondAtom2LigandAtomResponse: …`

              Ligand atom reference. Atom-level ligand references currently support ligand_ccd entities only; ligand_smiles is unsupported.

              - `atom_name: str`

                Standardized atom name (verifiable in CIF file on RCSB). Atom-level references to ligand_smiles entities are currently unsupported; use ligand_ccd instead.

              - `chain_id: str`

                Chain ID containing the atom

              - `type: Literal["ligand_atom"]`

                - `"ligand_atom"`

            - `class InputTargetNoTemplateTargetResponseBondAtom2PolymerAtomResponse: …`

              - `atom_name: str`

                Standardized atom name (verifiable in CIF file on RCSB)

              - `chain_id: str`

                Chain ID containing the atom

              - `residue_index: int`

                0-based residue index

              - `type: Literal["polymer_atom"]`

                - `"polymer_atom"`

        - `constraints: Optional[List[InputTargetNoTemplateTargetResponseConstraint]]`

          Structural constraints (pocket and contact). Atom-level ligand references currently support ligand_ccd only; ligand_smiles is unsupported.

          - `class InputTargetNoTemplateTargetResponseConstraintPocketConstraintResponse: …`

            Constrains the binder to interact with specific pocket residues on the target.

            - `binder_chain_id: str`

              Chain ID of the binder molecule

            - `contact_residues: Dict[str, List[int]]`

              Binding pocket residues keyed by chain ID. Each key is a chain ID (e.g. "A") and the value is an array of 0-indexed residue indices that define the pocket on that chain.

            - `max_distance_angstrom: float`

              Maximum allowed distance in Angstroms between binder and pocket residues. Typical range: 4-8 A.

            - `type: Literal["pocket"]`

              - `"pocket"`

            - `force: Optional[bool]`

              Whether to force the constraint

          - `class InputTargetNoTemplateTargetResponseConstraintContactConstraintResponse: …`

            Contact constraint between two tokens. Atom-level ligand references currently support ligand_ccd entities only; ligand_smiles is unsupported.

            - `max_distance_angstrom: float`

              Maximum distance in Angstroms

            - `token1: InputTargetNoTemplateTargetResponseConstraintContactConstraintResponseToken1`

              Ligand contact token. Atom-level ligand references currently support ligand_ccd entities only; ligand_smiles is unsupported.

              - `class InputTargetNoTemplateTargetResponseConstraintContactConstraintResponseToken1PolymerContactTokenResponse: …`

                - `chain_id: str`

                  Chain ID

                - `residue_index: int`

                  0-based residue index

                - `type: Literal["polymer_contact"]`

                  - `"polymer_contact"`

              - `class InputTargetNoTemplateTargetResponseConstraintContactConstraintResponseToken1LigandContactTokenResponse: …`

                Ligand contact token. Atom-level ligand references currently support ligand_ccd entities only; ligand_smiles is unsupported.

                - `atom_name: str`

                  Atom name. Atom-level references to ligand_smiles entities are currently unsupported; use ligand_ccd instead.

                - `chain_id: str`

                  Chain ID

                - `type: Literal["ligand_contact"]`

                  - `"ligand_contact"`

            - `token2: InputTargetNoTemplateTargetResponseConstraintContactConstraintResponseToken2`

              Ligand contact token. Atom-level ligand references currently support ligand_ccd entities only; ligand_smiles is unsupported.

              - `class InputTargetNoTemplateTargetResponseConstraintContactConstraintResponseToken2PolymerContactTokenResponse: …`

                - `chain_id: str`

                  Chain ID

                - `residue_index: int`

                  0-based residue index

                - `type: Literal["polymer_contact"]`

                  - `"polymer_contact"`

              - `class InputTargetNoTemplateTargetResponseConstraintContactConstraintResponseToken2LigandContactTokenResponse: …`

                Ligand contact token. Atom-level ligand references currently support ligand_ccd entities only; ligand_smiles is unsupported.

                - `atom_name: str`

                  Atom name. Atom-level references to ligand_smiles entities are currently unsupported; use ligand_ccd instead.

                - `chain_id: str`

                  Chain ID

                - `type: Literal["ligand_contact"]`

                  - `"ligand_contact"`

            - `type: Literal["contact"]`

              - `"contact"`

            - `force: Optional[bool]`

              Whether to force the constraint

        - `epitope_ligand_chains: Optional[List[str]]`

          Chain IDs of ligand entities that are part of the binding epitope. Ligands are marked as epitope in full (no residue-level selection).

        - `epitope_residues: Optional[Dict[str, List[int]]]`

          Polymer chain residues where binder contact is desired (the epitope). Each key is a chain ID of a polymer entity, each value is an array of 0-indexed residue indices.

  - `livemode: bool`

    Whether this resource was created with a live API key.

  - `progress: Optional[Progress]`

    - `num_proteins_failed: int`

      Number of accepted proteins that reached terminal failure during screening.

    - `num_proteins_screened: int`

      Number of accepted proteins that produced usable screening results.

    - `total_proteins_to_screen: int`

      Total number of proteins accepted into the screening run.

    - `latest_result_id: Optional[str]`

      ID of the latest result

  - `started_at: Optional[datetime]`

  - `status: Literal["pending", "running", "succeeded", 2 more]`

    - `"pending"`

    - `"running"`

    - `"succeeded"`

    - `"failed"`

    - `"stopped"`

  - `stopped_at: Optional[datetime]`

  - `workspace_id: str`

    Workspace ID

  - `idempotency_key: Optional[str]`

    Client-provided idempotency key

### Example

```python
import os
from boltz_api import Boltz

client = Boltz(
    api_key=os.environ.get("BOLTZ_API_KEY"),  # This is the default and can be omitted
)
response = client.protein.library_screen.start(
    proteins=[{
        "entities": [{
            "chain_ids": ["string"],
            "type": "protein",
            "value": "value",
        }]
    }],
    target={
        "chain_selection": {
            "A": {
                "chain_type": "polymer",
                "crop_residues": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12],
            }
        },
        "structure": {
            "type": "url",
            "url": "https://example.com",
        },
        "type": "structure_template",
    },
)
print(response.id)
```

## List

`protein.library_screen.list(LibraryScreenListParams**kwargs)  -> SyncCursorPage[LibraryScreenListResponse]`

**get** `/compute/v1/protein/library-screen`

List protein library screens, optionally filtered by workspace

### Parameters

- `after_id: Optional[str]`

  Return results after this ID

- `before_id: Optional[str]`

  Return results before this ID

- `limit: Optional[int]`

  Max items to return. Defaults to 100.

- `workspace_id: Optional[str]`

  Filter by workspace ID. Only used with admin API keys. If not provided, defaults to the workspace associated with the API key, or the default workspace for admin keys.

### Returns

- `class LibraryScreenListResponse: …`

  Summary of a protein library screening engine run (excludes input)

  - `id: str`

    Unique ProteinLibraryScreenSummary identifier

  - `completed_at: Optional[datetime]`

  - `created_at: datetime`

  - `data_deleted_at: Optional[datetime]`

    When the input, output, and result data was permanently deleted. Null if data has not been deleted.

  - `engine: Literal["boltz-protein-screen"]`

    Engine used for protein library screen

    - `"boltz-protein-screen"`

  - `engine_version: str`

    Engine version used for protein library screen

  - `error: Optional[Error]`

    - `code: str`

      Machine-readable error code

    - `message: str`

      Human-readable error message

    - `details: Optional[object]`

      Additional field-level error details keyed by input path, when available.

  - `livemode: bool`

    Whether this resource was created with a live API key.

  - `progress: Optional[Progress]`

    - `num_proteins_failed: int`

      Number of accepted proteins that reached terminal failure during screening.

    - `num_proteins_screened: int`

      Number of accepted proteins that produced usable screening results.

    - `total_proteins_to_screen: int`

      Total number of proteins accepted into the screening run.

    - `latest_result_id: Optional[str]`

      ID of the latest result

  - `started_at: Optional[datetime]`

  - `status: Literal["pending", "running", "succeeded", 2 more]`

    - `"pending"`

    - `"running"`

    - `"succeeded"`

    - `"failed"`

    - `"stopped"`

  - `stopped_at: Optional[datetime]`

  - `workspace_id: str`

    Workspace ID

  - `idempotency_key: Optional[str]`

    Client-provided idempotency key

### Example

```python
import os
from boltz_api import Boltz

client = Boltz(
    api_key=os.environ.get("BOLTZ_API_KEY"),  # This is the default and can be omitted
)
page = client.protein.library_screen.list()
page = page.data[0]
print(page.id)
```

## Retrieve

`protein.library_screen.retrieve(strid, LibraryScreenRetrieveParams**kwargs)  -> LibraryScreenRetrieveResponse`

**get** `/compute/v1/protein/library-screen/{id}`

Retrieve a library screen by ID, including progress and status

### Parameters

- `id: str`

- `workspace_id: Optional[str]`

  Workspace ID. Only used with admin API keys. Ignored (or validated) for workspace-scoped keys.

### Returns

- `class LibraryScreenRetrieveResponse: …`

  A protein library screening engine run

  - `id: str`

    Unique ProteinLibraryScreen identifier

  - `completed_at: Optional[datetime]`

  - `created_at: datetime`

  - `data_deleted_at: Optional[datetime]`

    When the input, output, and result data was permanently deleted. Null if data has not been deleted.

  - `engine: Literal["boltz-protein-screen"]`

    Engine used for protein library screen

    - `"boltz-protein-screen"`

  - `engine_version: str`

    Engine version used for protein library screen

  - `error: Optional[Error]`

    - `code: str`

      Machine-readable error code

    - `message: str`

      Human-readable error message

    - `details: Optional[object]`

      Additional field-level error details keyed by input path, when available.

  - `input: Optional[Input]`

    Pipeline input (null if data deleted)

    - `proteins: InputProteins`

      - `url: str`

        URL to download the file

      - `url_expires_at: datetime`

        When the presigned URL expires

    - `target: InputTarget`

      Target specification (structure template or template-free)

      - `class InputTargetStructureTemplateTargetResponse: …`

        Target defined by an uploaded 3D structure (CIF or PDB file). Only chains included in chain_selection are used.

        - `chain_selection: Dict[str, InputTargetStructureTemplateTargetResponseChainSelection]`

          Chains selected from the uploaded structure, keyed by chain ID. Only chains listed here are included in the engine run — any chains omitted from this mapping are ignored. Each value defines which residues to keep, which are epitope residues, and which are flexible.

          - `class InputTargetStructureTemplateTargetResponseChainSelectionStructureTemplateTargetPolymerChainSpec: …`

            Per-chain specification for a polymer (protein/RNA/DNA) chain in a structure template target.

            - `chain_type: Literal["polymer"]`

              - `"polymer"`

            - `crop_residues: Union[List[int], Literal["all"]]`

              0-indexed residue indices to retain from this chain, or 'all' to keep all residues. Residues not listed are excluded from the engine run.

              - `List[int]`

                0-indexed residue indices to keep

              - `Literal["all"]`

                - `"all"`

            - `epitope_residues: Optional[List[int]]`

              0-indexed residue indices where binder contact is desired (the epitope). All indices must be present in crop_residues.

            - `flexible_residues: Optional[List[int]]`

              0-indexed residue indices allowed to move during design (e.g. flexible loop regions). All indices must be present in crop_residues.

          - `class InputTargetStructureTemplateTargetResponseChainSelectionStructureTemplateTargetLigandChainSpec: …`

            Per-chain specification for a ligand chain in a structure template target. The full ligand is always included.

            - `chain_type: Literal["ligand"]`

              - `"ligand"`

        - `structure: InputTargetStructureTemplateTargetResponseStructure`

          - `url: str`

            URL to download the file

          - `url_expires_at: datetime`

            When the presigned URL expires

        - `type: Literal["structure_template"]`

          - `"structure_template"`

      - `class InputTargetNoTemplateTargetResponse: …`

        Target defined by sequences only, without a 3D structure template

        - `entities: List[InputTargetNoTemplateTargetResponseEntity]`

          Entities (proteins, RNA, DNA, ligands) defining the target complex.

          - `class InputTargetNoTemplateTargetResponseEntityProteinEntityResponse: …`

            - `chain_ids: List[str]`

              Chain IDs for this entity

            - `type: Literal["protein"]`

              - `"protein"`

            - `value: str`

              Amino acid sequence (one-letter codes)

            - `cyclic: Optional[bool]`

              Whether the sequence is cyclic

            - `modifications: Optional[List[InputTargetNoTemplateTargetResponseEntityProteinEntityResponseModification]]`

              Post-translational modifications. Optional; defaults to an empty list when omitted.

              - `class InputTargetNoTemplateTargetResponseEntityProteinEntityResponseModificationCcdModificationResponse: …`

                - `residue_index: int`

                  0-based index of the residue to modify

                - `type: Literal["ccd"]`

                  - `"ccd"`

                - `value: str`

                  CCD code from RCSB PDB (e.g. 'MSE' for selenomethionine, 'SEP' for phosphoserine)

              - `class InputTargetNoTemplateTargetResponseEntityProteinEntityResponseModificationSmilesModificationResponse: …`

                - `residue_index: int`

                  0-based index of the residue to modify

                - `type: Literal["smiles"]`

                  - `"smiles"`

                - `value: str`

                  SMILES string for the modification

          - `class InputTargetNoTemplateTargetResponseEntityRnaEntityResponse: …`

            - `chain_ids: List[str]`

              Chain IDs for this entity

            - `type: Literal["rna"]`

              - `"rna"`

            - `value: str`

              RNA nucleotide sequence (A, C, G, U, N)

            - `cyclic: Optional[bool]`

              Whether the sequence is cyclic

            - `modifications: Optional[List[InputTargetNoTemplateTargetResponseEntityRnaEntityResponseModification]]`

              Chemical modifications. Optional; defaults to an empty list when omitted.

              - `class InputTargetNoTemplateTargetResponseEntityRnaEntityResponseModificationCcdModificationResponse: …`

                - `residue_index: int`

                  0-based index of the residue to modify

                - `type: Literal["ccd"]`

                  - `"ccd"`

                - `value: str`

                  CCD code from RCSB PDB (e.g. 'MSE' for selenomethionine, 'SEP' for phosphoserine)

              - `class InputTargetNoTemplateTargetResponseEntityRnaEntityResponseModificationSmilesModificationResponse: …`

                - `residue_index: int`

                  0-based index of the residue to modify

                - `type: Literal["smiles"]`

                  - `"smiles"`

                - `value: str`

                  SMILES string for the modification

          - `class InputTargetNoTemplateTargetResponseEntityDnaEntityResponse: …`

            - `chain_ids: List[str]`

              Chain IDs for this entity

            - `type: Literal["dna"]`

              - `"dna"`

            - `value: str`

              DNA nucleotide sequence (A, C, G, T, N)

            - `cyclic: Optional[bool]`

              Whether the sequence is cyclic

            - `modifications: Optional[List[InputTargetNoTemplateTargetResponseEntityDnaEntityResponseModification]]`

              Chemical modifications. Optional; defaults to an empty list when omitted.

              - `class InputTargetNoTemplateTargetResponseEntityDnaEntityResponseModificationCcdModificationResponse: …`

                - `residue_index: int`

                  0-based index of the residue to modify

                - `type: Literal["ccd"]`

                  - `"ccd"`

                - `value: str`

                  CCD code from RCSB PDB (e.g. 'MSE' for selenomethionine, 'SEP' for phosphoserine)

              - `class InputTargetNoTemplateTargetResponseEntityDnaEntityResponseModificationSmilesModificationResponse: …`

                - `residue_index: int`

                  0-based index of the residue to modify

                - `type: Literal["smiles"]`

                  - `"smiles"`

                - `value: str`

                  SMILES string for the modification

          - `class InputTargetNoTemplateTargetResponseEntityLigandCcdEntityResponse: …`

            - `chain_ids: List[str]`

              Chain IDs for this ligand

            - `type: Literal["ligand_ccd"]`

              - `"ligand_ccd"`

            - `value: str`

              CCD code (e.g., ATP, ADP)

          - `class InputTargetNoTemplateTargetResponseEntityLigandSmilesEntityResponse: …`

            - `chain_ids: List[str]`

              Chain IDs for this ligand

            - `type: Literal["ligand_smiles"]`

              - `"ligand_smiles"`

            - `value: str`

              SMILES string representing the ligand

        - `type: Literal["no_template"]`

          - `"no_template"`

        - `bonds: Optional[List[InputTargetNoTemplateTargetResponseBond]]`

          Covalent bond constraints between atoms in the target complex. Atom-level ligand references currently support ligand_ccd only; ligand_smiles is unsupported.

          - `atom1: InputTargetNoTemplateTargetResponseBondAtom1`

            Ligand atom reference. Atom-level ligand references currently support ligand_ccd entities only; ligand_smiles is unsupported.

            - `class InputTargetNoTemplateTargetResponseBondAtom1LigandAtomResponse: …`

              Ligand atom reference. Atom-level ligand references currently support ligand_ccd entities only; ligand_smiles is unsupported.

              - `atom_name: str`

                Standardized atom name (verifiable in CIF file on RCSB). Atom-level references to ligand_smiles entities are currently unsupported; use ligand_ccd instead.

              - `chain_id: str`

                Chain ID containing the atom

              - `type: Literal["ligand_atom"]`

                - `"ligand_atom"`

            - `class InputTargetNoTemplateTargetResponseBondAtom1PolymerAtomResponse: …`

              - `atom_name: str`

                Standardized atom name (verifiable in CIF file on RCSB)

              - `chain_id: str`

                Chain ID containing the atom

              - `residue_index: int`

                0-based residue index

              - `type: Literal["polymer_atom"]`

                - `"polymer_atom"`

          - `atom2: InputTargetNoTemplateTargetResponseBondAtom2`

            Ligand atom reference. Atom-level ligand references currently support ligand_ccd entities only; ligand_smiles is unsupported.

            - `class InputTargetNoTemplateTargetResponseBondAtom2LigandAtomResponse: …`

              Ligand atom reference. Atom-level ligand references currently support ligand_ccd entities only; ligand_smiles is unsupported.

              - `atom_name: str`

                Standardized atom name (verifiable in CIF file on RCSB). Atom-level references to ligand_smiles entities are currently unsupported; use ligand_ccd instead.

              - `chain_id: str`

                Chain ID containing the atom

              - `type: Literal["ligand_atom"]`

                - `"ligand_atom"`

            - `class InputTargetNoTemplateTargetResponseBondAtom2PolymerAtomResponse: …`

              - `atom_name: str`

                Standardized atom name (verifiable in CIF file on RCSB)

              - `chain_id: str`

                Chain ID containing the atom

              - `residue_index: int`

                0-based residue index

              - `type: Literal["polymer_atom"]`

                - `"polymer_atom"`

        - `constraints: Optional[List[InputTargetNoTemplateTargetResponseConstraint]]`

          Structural constraints (pocket and contact). Atom-level ligand references currently support ligand_ccd only; ligand_smiles is unsupported.

          - `class InputTargetNoTemplateTargetResponseConstraintPocketConstraintResponse: …`

            Constrains the binder to interact with specific pocket residues on the target.

            - `binder_chain_id: str`

              Chain ID of the binder molecule

            - `contact_residues: Dict[str, List[int]]`

              Binding pocket residues keyed by chain ID. Each key is a chain ID (e.g. "A") and the value is an array of 0-indexed residue indices that define the pocket on that chain.

            - `max_distance_angstrom: float`

              Maximum allowed distance in Angstroms between binder and pocket residues. Typical range: 4-8 A.

            - `type: Literal["pocket"]`

              - `"pocket"`

            - `force: Optional[bool]`

              Whether to force the constraint

          - `class InputTargetNoTemplateTargetResponseConstraintContactConstraintResponse: …`

            Contact constraint between two tokens. Atom-level ligand references currently support ligand_ccd entities only; ligand_smiles is unsupported.

            - `max_distance_angstrom: float`

              Maximum distance in Angstroms

            - `token1: InputTargetNoTemplateTargetResponseConstraintContactConstraintResponseToken1`

              Ligand contact token. Atom-level ligand references currently support ligand_ccd entities only; ligand_smiles is unsupported.

              - `class InputTargetNoTemplateTargetResponseConstraintContactConstraintResponseToken1PolymerContactTokenResponse: …`

                - `chain_id: str`

                  Chain ID

                - `residue_index: int`

                  0-based residue index

                - `type: Literal["polymer_contact"]`

                  - `"polymer_contact"`

              - `class InputTargetNoTemplateTargetResponseConstraintContactConstraintResponseToken1LigandContactTokenResponse: …`

                Ligand contact token. Atom-level ligand references currently support ligand_ccd entities only; ligand_smiles is unsupported.

                - `atom_name: str`

                  Atom name. Atom-level references to ligand_smiles entities are currently unsupported; use ligand_ccd instead.

                - `chain_id: str`

                  Chain ID

                - `type: Literal["ligand_contact"]`

                  - `"ligand_contact"`

            - `token2: InputTargetNoTemplateTargetResponseConstraintContactConstraintResponseToken2`

              Ligand contact token. Atom-level ligand references currently support ligand_ccd entities only; ligand_smiles is unsupported.

              - `class InputTargetNoTemplateTargetResponseConstraintContactConstraintResponseToken2PolymerContactTokenResponse: …`

                - `chain_id: str`

                  Chain ID

                - `residue_index: int`

                  0-based residue index

                - `type: Literal["polymer_contact"]`

                  - `"polymer_contact"`

              - `class InputTargetNoTemplateTargetResponseConstraintContactConstraintResponseToken2LigandContactTokenResponse: …`

                Ligand contact token. Atom-level ligand references currently support ligand_ccd entities only; ligand_smiles is unsupported.

                - `atom_name: str`

                  Atom name. Atom-level references to ligand_smiles entities are currently unsupported; use ligand_ccd instead.

                - `chain_id: str`

                  Chain ID

                - `type: Literal["ligand_contact"]`

                  - `"ligand_contact"`

            - `type: Literal["contact"]`

              - `"contact"`

            - `force: Optional[bool]`

              Whether to force the constraint

        - `epitope_ligand_chains: Optional[List[str]]`

          Chain IDs of ligand entities that are part of the binding epitope. Ligands are marked as epitope in full (no residue-level selection).

        - `epitope_residues: Optional[Dict[str, List[int]]]`

          Polymer chain residues where binder contact is desired (the epitope). Each key is a chain ID of a polymer entity, each value is an array of 0-indexed residue indices.

  - `livemode: bool`

    Whether this resource was created with a live API key.

  - `progress: Optional[Progress]`

    - `num_proteins_failed: int`

      Number of accepted proteins that reached terminal failure during screening.

    - `num_proteins_screened: int`

      Number of accepted proteins that produced usable screening results.

    - `total_proteins_to_screen: int`

      Total number of proteins accepted into the screening run.

    - `latest_result_id: Optional[str]`

      ID of the latest result

  - `started_at: Optional[datetime]`

  - `status: Literal["pending", "running", "succeeded", 2 more]`

    - `"pending"`

    - `"running"`

    - `"succeeded"`

    - `"failed"`

    - `"stopped"`

  - `stopped_at: Optional[datetime]`

  - `workspace_id: str`

    Workspace ID

  - `idempotency_key: Optional[str]`

    Client-provided idempotency key

### Example

```python
import os
from boltz_api import Boltz

client = Boltz(
    api_key=os.environ.get("BOLTZ_API_KEY"),  # This is the default and can be omitted
)
library_screen = client.protein.library_screen.retrieve(
    id="id",
)
print(library_screen.id)
```

## List Results

`protein.library_screen.list_results(strid, LibraryScreenListResultsParams**kwargs)  -> SyncCursorPage[LibraryScreenListResultsResponse]`

**get** `/compute/v1/protein/library-screen/{id}/results`

Retrieve paginated results from a protein library screen

### Parameters

- `id: str`

- `after_id: Optional[str]`

  Return results after this ID

- `before_id: Optional[str]`

  Return results before this ID

- `limit: Optional[int]`

  Max results to return. Defaults to 100.

- `workspace_id: Optional[str]`

  Workspace ID. Only used with admin API keys. Ignored (or validated) for workspace-scoped keys.

### Returns

- `class LibraryScreenListResultsResponse: …`

  Result for a single screened protein

  - `id: str`

    Unique result ID

  - `artifacts: Artifacts`

    - `archive: ArtifactsArchive`

      - `url: str`

        URL to download the file

      - `url_expires_at: datetime`

        When the presigned URL expires

    - `structure: ArtifactsStructure`

      - `url: str`

        URL to download the file

      - `url_expires_at: datetime`

        When the presigned URL expires

  - `created_at: datetime`

  - `entities: List[Entity]`

    Entities of the screened complex. Includes both screened and fixed entities from the input.

    - `class EntityProteinEntity: …`

      - `chain_ids: List[str]`

        Chain IDs for this entity

      - `type: Literal["protein"]`

        - `"protein"`

      - `value: str`

        Amino acid sequence (one-letter codes)

      - `cyclic: Optional[bool]`

        Whether the sequence is cyclic

      - `modifications: Optional[List[EntityProteinEntityModification]]`

        Post-translational modifications. Optional; defaults to an empty list when omitted.

        - `class EntityProteinEntityModificationCcdModification: …`

          - `residue_index: int`

            0-based index of the residue to modify

          - `type: Literal["ccd"]`

            - `"ccd"`

          - `value: str`

            CCD code from RCSB PDB (e.g. 'MSE' for selenomethionine, 'SEP' for phosphoserine)

        - `class EntityProteinEntityModificationSmilesModification: …`

          - `residue_index: int`

            0-based index of the residue to modify

          - `type: Literal["smiles"]`

            - `"smiles"`

          - `value: str`

            SMILES string for the modification

    - `class EntityRnaEntity: …`

      - `chain_ids: List[str]`

        Chain IDs for this entity

      - `type: Literal["rna"]`

        - `"rna"`

      - `value: str`

        RNA nucleotide sequence (A, C, G, U, N)

      - `cyclic: Optional[bool]`

        Whether the sequence is cyclic

      - `modifications: Optional[List[EntityRnaEntityModification]]`

        Chemical modifications. Optional; defaults to an empty list when omitted.

        - `class EntityRnaEntityModificationCcdModification: …`

          - `residue_index: int`

            0-based index of the residue to modify

          - `type: Literal["ccd"]`

            - `"ccd"`

          - `value: str`

            CCD code from RCSB PDB (e.g. 'MSE' for selenomethionine, 'SEP' for phosphoserine)

        - `class EntityRnaEntityModificationSmilesModification: …`

          - `residue_index: int`

            0-based index of the residue to modify

          - `type: Literal["smiles"]`

            - `"smiles"`

          - `value: str`

            SMILES string for the modification

    - `class EntityDnaEntity: …`

      - `chain_ids: List[str]`

        Chain IDs for this entity

      - `type: Literal["dna"]`

        - `"dna"`

      - `value: str`

        DNA nucleotide sequence (A, C, G, T, N)

      - `cyclic: Optional[bool]`

        Whether the sequence is cyclic

      - `modifications: Optional[List[EntityDnaEntityModification]]`

        Chemical modifications. Optional; defaults to an empty list when omitted.

        - `class EntityDnaEntityModificationCcdModification: …`

          - `residue_index: int`

            0-based index of the residue to modify

          - `type: Literal["ccd"]`

            - `"ccd"`

          - `value: str`

            CCD code from RCSB PDB (e.g. 'MSE' for selenomethionine, 'SEP' for phosphoserine)

        - `class EntityDnaEntityModificationSmilesModification: …`

          - `residue_index: int`

            0-based index of the residue to modify

          - `type: Literal["smiles"]`

            - `"smiles"`

          - `value: str`

            SMILES string for the modification

    - `class EntityLigandCcdEntity: …`

      - `chain_ids: List[str]`

        Chain IDs for this ligand

      - `type: Literal["ligand_ccd"]`

        - `"ligand_ccd"`

      - `value: str`

        CCD code (e.g., ATP, ADP)

    - `class EntityLigandSmilesEntity: …`

      - `chain_ids: List[str]`

        Chain IDs for this ligand

      - `type: Literal["ligand_smiles"]`

        - `"ligand_smiles"`

      - `value: str`

        SMILES string representing the ligand

  - `metrics: Metrics`

    Structural and binding quality metrics for a screened protein

    - `binding_confidence: float`

      Confidence that the protein binds the target (0-1). Primary metric for hit discovery.

    - `helix_fraction: float`

      Fraction of the sequence forming alpha helices (0-1).

    - `iptm: float`

      Interface predicted TM score (0-1). Confidence in the protein-protein interface.

    - `loop_fraction: float`

      Fraction of the sequence in coil/loop regions (0-1).

    - `min_interaction_pae: float`

      Minimum predicted aligned error at the interface (Angstroms). Lower values indicate higher confidence.

    - `sheet_fraction: float`

      Fraction of the sequence forming beta sheets (0-1).

    - `structure_confidence: float`

      Confidence in the predicted 3D structure (0-1).

  - `external_id: Optional[str]`

    Client-provided identifier for this protein, if provided

  - `warnings: Optional[List[Warning]]`

    Warnings about potential quality issues with this result.

    - `code: str`

      Machine-readable warning code (e.g. "low_confidence", "unusual_geometry")

    - `message: str`

      Human-readable description of the warning

### Example

```python
import os
from boltz_api import Boltz

client = Boltz(
    api_key=os.environ.get("BOLTZ_API_KEY"),  # This is the default and can be omitted
)
page = client.protein.library_screen.list_results(
    id="id",
)
page = page.data[0]
print(page.id)
```

## Stop

`protein.library_screen.stop(strid)  -> LibraryScreenStopResponse`

**post** `/compute/v1/protein/library-screen/{id}/stop`

Stop an in-progress protein library screen early

### Parameters

- `id: str`

### Returns

- `class LibraryScreenStopResponse: …`

  A protein library screening engine run

  - `id: str`

    Unique ProteinLibraryScreen identifier

  - `completed_at: Optional[datetime]`

  - `created_at: datetime`

  - `data_deleted_at: Optional[datetime]`

    When the input, output, and result data was permanently deleted. Null if data has not been deleted.

  - `engine: Literal["boltz-protein-screen"]`

    Engine used for protein library screen

    - `"boltz-protein-screen"`

  - `engine_version: str`

    Engine version used for protein library screen

  - `error: Optional[Error]`

    - `code: str`

      Machine-readable error code

    - `message: str`

      Human-readable error message

    - `details: Optional[object]`

      Additional field-level error details keyed by input path, when available.

  - `input: Optional[Input]`

    Pipeline input (null if data deleted)

    - `proteins: InputProteins`

      - `url: str`

        URL to download the file

      - `url_expires_at: datetime`

        When the presigned URL expires

    - `target: InputTarget`

      Target specification (structure template or template-free)

      - `class InputTargetStructureTemplateTargetResponse: …`

        Target defined by an uploaded 3D structure (CIF or PDB file). Only chains included in chain_selection are used.

        - `chain_selection: Dict[str, InputTargetStructureTemplateTargetResponseChainSelection]`

          Chains selected from the uploaded structure, keyed by chain ID. Only chains listed here are included in the engine run — any chains omitted from this mapping are ignored. Each value defines which residues to keep, which are epitope residues, and which are flexible.

          - `class InputTargetStructureTemplateTargetResponseChainSelectionStructureTemplateTargetPolymerChainSpec: …`

            Per-chain specification for a polymer (protein/RNA/DNA) chain in a structure template target.

            - `chain_type: Literal["polymer"]`

              - `"polymer"`

            - `crop_residues: Union[List[int], Literal["all"]]`

              0-indexed residue indices to retain from this chain, or 'all' to keep all residues. Residues not listed are excluded from the engine run.

              - `List[int]`

                0-indexed residue indices to keep

              - `Literal["all"]`

                - `"all"`

            - `epitope_residues: Optional[List[int]]`

              0-indexed residue indices where binder contact is desired (the epitope). All indices must be present in crop_residues.

            - `flexible_residues: Optional[List[int]]`

              0-indexed residue indices allowed to move during design (e.g. flexible loop regions). All indices must be present in crop_residues.

          - `class InputTargetStructureTemplateTargetResponseChainSelectionStructureTemplateTargetLigandChainSpec: …`

            Per-chain specification for a ligand chain in a structure template target. The full ligand is always included.

            - `chain_type: Literal["ligand"]`

              - `"ligand"`

        - `structure: InputTargetStructureTemplateTargetResponseStructure`

          - `url: str`

            URL to download the file

          - `url_expires_at: datetime`

            When the presigned URL expires

        - `type: Literal["structure_template"]`

          - `"structure_template"`

      - `class InputTargetNoTemplateTargetResponse: …`

        Target defined by sequences only, without a 3D structure template

        - `entities: List[InputTargetNoTemplateTargetResponseEntity]`

          Entities (proteins, RNA, DNA, ligands) defining the target complex.

          - `class InputTargetNoTemplateTargetResponseEntityProteinEntityResponse: …`

            - `chain_ids: List[str]`

              Chain IDs for this entity

            - `type: Literal["protein"]`

              - `"protein"`

            - `value: str`

              Amino acid sequence (one-letter codes)

            - `cyclic: Optional[bool]`

              Whether the sequence is cyclic

            - `modifications: Optional[List[InputTargetNoTemplateTargetResponseEntityProteinEntityResponseModification]]`

              Post-translational modifications. Optional; defaults to an empty list when omitted.

              - `class InputTargetNoTemplateTargetResponseEntityProteinEntityResponseModificationCcdModificationResponse: …`

                - `residue_index: int`

                  0-based index of the residue to modify

                - `type: Literal["ccd"]`

                  - `"ccd"`

                - `value: str`

                  CCD code from RCSB PDB (e.g. 'MSE' for selenomethionine, 'SEP' for phosphoserine)

              - `class InputTargetNoTemplateTargetResponseEntityProteinEntityResponseModificationSmilesModificationResponse: …`

                - `residue_index: int`

                  0-based index of the residue to modify

                - `type: Literal["smiles"]`

                  - `"smiles"`

                - `value: str`

                  SMILES string for the modification

          - `class InputTargetNoTemplateTargetResponseEntityRnaEntityResponse: …`

            - `chain_ids: List[str]`

              Chain IDs for this entity

            - `type: Literal["rna"]`

              - `"rna"`

            - `value: str`

              RNA nucleotide sequence (A, C, G, U, N)

            - `cyclic: Optional[bool]`

              Whether the sequence is cyclic

            - `modifications: Optional[List[InputTargetNoTemplateTargetResponseEntityRnaEntityResponseModification]]`

              Chemical modifications. Optional; defaults to an empty list when omitted.

              - `class InputTargetNoTemplateTargetResponseEntityRnaEntityResponseModificationCcdModificationResponse: …`

                - `residue_index: int`

                  0-based index of the residue to modify

                - `type: Literal["ccd"]`

                  - `"ccd"`

                - `value: str`

                  CCD code from RCSB PDB (e.g. 'MSE' for selenomethionine, 'SEP' for phosphoserine)

              - `class InputTargetNoTemplateTargetResponseEntityRnaEntityResponseModificationSmilesModificationResponse: …`

                - `residue_index: int`

                  0-based index of the residue to modify

                - `type: Literal["smiles"]`

                  - `"smiles"`

                - `value: str`

                  SMILES string for the modification

          - `class InputTargetNoTemplateTargetResponseEntityDnaEntityResponse: …`

            - `chain_ids: List[str]`

              Chain IDs for this entity

            - `type: Literal["dna"]`

              - `"dna"`

            - `value: str`

              DNA nucleotide sequence (A, C, G, T, N)

            - `cyclic: Optional[bool]`

              Whether the sequence is cyclic

            - `modifications: Optional[List[InputTargetNoTemplateTargetResponseEntityDnaEntityResponseModification]]`

              Chemical modifications. Optional; defaults to an empty list when omitted.

              - `class InputTargetNoTemplateTargetResponseEntityDnaEntityResponseModificationCcdModificationResponse: …`

                - `residue_index: int`

                  0-based index of the residue to modify

                - `type: Literal["ccd"]`

                  - `"ccd"`

                - `value: str`

                  CCD code from RCSB PDB (e.g. 'MSE' for selenomethionine, 'SEP' for phosphoserine)

              - `class InputTargetNoTemplateTargetResponseEntityDnaEntityResponseModificationSmilesModificationResponse: …`

                - `residue_index: int`

                  0-based index of the residue to modify

                - `type: Literal["smiles"]`

                  - `"smiles"`

                - `value: str`

                  SMILES string for the modification

          - `class InputTargetNoTemplateTargetResponseEntityLigandCcdEntityResponse: …`

            - `chain_ids: List[str]`

              Chain IDs for this ligand

            - `type: Literal["ligand_ccd"]`

              - `"ligand_ccd"`

            - `value: str`

              CCD code (e.g., ATP, ADP)

          - `class InputTargetNoTemplateTargetResponseEntityLigandSmilesEntityResponse: …`

            - `chain_ids: List[str]`

              Chain IDs for this ligand

            - `type: Literal["ligand_smiles"]`

              - `"ligand_smiles"`

            - `value: str`

              SMILES string representing the ligand

        - `type: Literal["no_template"]`

          - `"no_template"`

        - `bonds: Optional[List[InputTargetNoTemplateTargetResponseBond]]`

          Covalent bond constraints between atoms in the target complex. Atom-level ligand references currently support ligand_ccd only; ligand_smiles is unsupported.

          - `atom1: InputTargetNoTemplateTargetResponseBondAtom1`

            Ligand atom reference. Atom-level ligand references currently support ligand_ccd entities only; ligand_smiles is unsupported.

            - `class InputTargetNoTemplateTargetResponseBondAtom1LigandAtomResponse: …`

              Ligand atom reference. Atom-level ligand references currently support ligand_ccd entities only; ligand_smiles is unsupported.

              - `atom_name: str`

                Standardized atom name (verifiable in CIF file on RCSB). Atom-level references to ligand_smiles entities are currently unsupported; use ligand_ccd instead.

              - `chain_id: str`

                Chain ID containing the atom

              - `type: Literal["ligand_atom"]`

                - `"ligand_atom"`

            - `class InputTargetNoTemplateTargetResponseBondAtom1PolymerAtomResponse: …`

              - `atom_name: str`

                Standardized atom name (verifiable in CIF file on RCSB)

              - `chain_id: str`

                Chain ID containing the atom

              - `residue_index: int`

                0-based residue index

              - `type: Literal["polymer_atom"]`

                - `"polymer_atom"`

          - `atom2: InputTargetNoTemplateTargetResponseBondAtom2`

            Ligand atom reference. Atom-level ligand references currently support ligand_ccd entities only; ligand_smiles is unsupported.

            - `class InputTargetNoTemplateTargetResponseBondAtom2LigandAtomResponse: …`

              Ligand atom reference. Atom-level ligand references currently support ligand_ccd entities only; ligand_smiles is unsupported.

              - `atom_name: str`

                Standardized atom name (verifiable in CIF file on RCSB). Atom-level references to ligand_smiles entities are currently unsupported; use ligand_ccd instead.

              - `chain_id: str`

                Chain ID containing the atom

              - `type: Literal["ligand_atom"]`

                - `"ligand_atom"`

            - `class InputTargetNoTemplateTargetResponseBondAtom2PolymerAtomResponse: …`

              - `atom_name: str`

                Standardized atom name (verifiable in CIF file on RCSB)

              - `chain_id: str`

                Chain ID containing the atom

              - `residue_index: int`

                0-based residue index

              - `type: Literal["polymer_atom"]`

                - `"polymer_atom"`

        - `constraints: Optional[List[InputTargetNoTemplateTargetResponseConstraint]]`

          Structural constraints (pocket and contact). Atom-level ligand references currently support ligand_ccd only; ligand_smiles is unsupported.

          - `class InputTargetNoTemplateTargetResponseConstraintPocketConstraintResponse: …`

            Constrains the binder to interact with specific pocket residues on the target.

            - `binder_chain_id: str`

              Chain ID of the binder molecule

            - `contact_residues: Dict[str, List[int]]`

              Binding pocket residues keyed by chain ID. Each key is a chain ID (e.g. "A") and the value is an array of 0-indexed residue indices that define the pocket on that chain.

            - `max_distance_angstrom: float`

              Maximum allowed distance in Angstroms between binder and pocket residues. Typical range: 4-8 A.

            - `type: Literal["pocket"]`

              - `"pocket"`

            - `force: Optional[bool]`

              Whether to force the constraint

          - `class InputTargetNoTemplateTargetResponseConstraintContactConstraintResponse: …`

            Contact constraint between two tokens. Atom-level ligand references currently support ligand_ccd entities only; ligand_smiles is unsupported.

            - `max_distance_angstrom: float`

              Maximum distance in Angstroms

            - `token1: InputTargetNoTemplateTargetResponseConstraintContactConstraintResponseToken1`

              Ligand contact token. Atom-level ligand references currently support ligand_ccd entities only; ligand_smiles is unsupported.

              - `class InputTargetNoTemplateTargetResponseConstraintContactConstraintResponseToken1PolymerContactTokenResponse: …`

                - `chain_id: str`

                  Chain ID

                - `residue_index: int`

                  0-based residue index

                - `type: Literal["polymer_contact"]`

                  - `"polymer_contact"`

              - `class InputTargetNoTemplateTargetResponseConstraintContactConstraintResponseToken1LigandContactTokenResponse: …`

                Ligand contact token. Atom-level ligand references currently support ligand_ccd entities only; ligand_smiles is unsupported.

                - `atom_name: str`

                  Atom name. Atom-level references to ligand_smiles entities are currently unsupported; use ligand_ccd instead.

                - `chain_id: str`

                  Chain ID

                - `type: Literal["ligand_contact"]`

                  - `"ligand_contact"`

            - `token2: InputTargetNoTemplateTargetResponseConstraintContactConstraintResponseToken2`

              Ligand contact token. Atom-level ligand references currently support ligand_ccd entities only; ligand_smiles is unsupported.

              - `class InputTargetNoTemplateTargetResponseConstraintContactConstraintResponseToken2PolymerContactTokenResponse: …`

                - `chain_id: str`

                  Chain ID

                - `residue_index: int`

                  0-based residue index

                - `type: Literal["polymer_contact"]`

                  - `"polymer_contact"`

              - `class InputTargetNoTemplateTargetResponseConstraintContactConstraintResponseToken2LigandContactTokenResponse: …`

                Ligand contact token. Atom-level ligand references currently support ligand_ccd entities only; ligand_smiles is unsupported.

                - `atom_name: str`

                  Atom name. Atom-level references to ligand_smiles entities are currently unsupported; use ligand_ccd instead.

                - `chain_id: str`

                  Chain ID

                - `type: Literal["ligand_contact"]`

                  - `"ligand_contact"`

            - `type: Literal["contact"]`

              - `"contact"`

            - `force: Optional[bool]`

              Whether to force the constraint

        - `epitope_ligand_chains: Optional[List[str]]`

          Chain IDs of ligand entities that are part of the binding epitope. Ligands are marked as epitope in full (no residue-level selection).

        - `epitope_residues: Optional[Dict[str, List[int]]]`

          Polymer chain residues where binder contact is desired (the epitope). Each key is a chain ID of a polymer entity, each value is an array of 0-indexed residue indices.

  - `livemode: bool`

    Whether this resource was created with a live API key.

  - `progress: Optional[Progress]`

    - `num_proteins_failed: int`

      Number of accepted proteins that reached terminal failure during screening.

    - `num_proteins_screened: int`

      Number of accepted proteins that produced usable screening results.

    - `total_proteins_to_screen: int`

      Total number of proteins accepted into the screening run.

    - `latest_result_id: Optional[str]`

      ID of the latest result

  - `started_at: Optional[datetime]`

  - `status: Literal["pending", "running", "succeeded", 2 more]`

    - `"pending"`

    - `"running"`

    - `"succeeded"`

    - `"failed"`

    - `"stopped"`

  - `stopped_at: Optional[datetime]`

  - `workspace_id: str`

    Workspace ID

  - `idempotency_key: Optional[str]`

    Client-provided idempotency key

### Example

```python
import os
from boltz_api import Boltz

client = Boltz(
    api_key=os.environ.get("BOLTZ_API_KEY"),  # This is the default and can be omitted
)
response = client.protein.library_screen.stop(
    "id",
)
print(response.id)
```

## Delete Data

`protein.library_screen.delete_data(strid)  -> LibraryScreenDeleteDataResponse`

**post** `/compute/v1/protein/library-screen/{id}/delete-data`

Permanently delete the input, output, and result data associated with this library screen. The library screen record itself is retained with a `data_deleted_at` timestamp. This action is irreversible.

### Parameters

- `id: str`

### Returns

- `class LibraryScreenDeleteDataResponse: …`

  - `id: str`

    ID of the resource whose data was deleted

  - `data_deleted: Literal[true]`

    - `true`

  - `data_deleted_at: datetime`

    When the data was deleted

### Example

```python
import os
from boltz_api import Boltz

client = Boltz(
    api_key=os.environ.get("BOLTZ_API_KEY"),  # This is the default and can be omitted
)
response = client.protein.library_screen.delete_data(
    "id",
)
print(response.id)
```

## Estimate Cost

`protein.library_screen.estimate_cost(LibraryScreenEstimateCostParams**kwargs)  -> LibraryScreenEstimateCostResponse`

**post** `/compute/v1/protein/library-screen/estimate-cost`

Estimate the cost of a protein library screen without creating any resource or consuming GPU.

### Parameters

- `proteins: Iterable[Protein]`

  List of protein entries to screen.

  - `entities: Iterable[ProteinEntity]`

    Entities that make up this protein complex

    - `class ProteinEntityProteinEntity: …`

      - `chain_ids: SequenceNotStr[str]`

        Chain IDs for this entity

      - `type: Literal["protein"]`

        - `"protein"`

      - `value: str`

        Amino acid sequence (one-letter codes)

      - `cyclic: Optional[bool]`

        Whether the sequence is cyclic

      - `modifications: Optional[Iterable[ProteinEntityProteinEntityModification]]`

        Post-translational modifications. Optional; defaults to an empty list when omitted.

        - `class ProteinEntityProteinEntityModificationCcdModification: …`

          - `residue_index: int`

            0-based index of the residue to modify

          - `type: Literal["ccd"]`

            - `"ccd"`

          - `value: str`

            CCD code from RCSB PDB (e.g. 'MSE' for selenomethionine, 'SEP' for phosphoserine)

        - `class ProteinEntityProteinEntityModificationSmilesModification: …`

          - `residue_index: int`

            0-based index of the residue to modify

          - `type: Literal["smiles"]`

            - `"smiles"`

          - `value: str`

            SMILES string for the modification

    - `class ProteinEntityRnaEntity: …`

      - `chain_ids: SequenceNotStr[str]`

        Chain IDs for this entity

      - `type: Literal["rna"]`

        - `"rna"`

      - `value: str`

        RNA nucleotide sequence (A, C, G, U, N)

      - `cyclic: Optional[bool]`

        Whether the sequence is cyclic

      - `modifications: Optional[Iterable[ProteinEntityRnaEntityModification]]`

        Chemical modifications. Optional; defaults to an empty list when omitted.

        - `class ProteinEntityRnaEntityModificationCcdModification: …`

          - `residue_index: int`

            0-based index of the residue to modify

          - `type: Literal["ccd"]`

            - `"ccd"`

          - `value: str`

            CCD code from RCSB PDB (e.g. 'MSE' for selenomethionine, 'SEP' for phosphoserine)

        - `class ProteinEntityRnaEntityModificationSmilesModification: …`

          - `residue_index: int`

            0-based index of the residue to modify

          - `type: Literal["smiles"]`

            - `"smiles"`

          - `value: str`

            SMILES string for the modification

    - `class ProteinEntityDnaEntity: …`

      - `chain_ids: SequenceNotStr[str]`

        Chain IDs for this entity

      - `type: Literal["dna"]`

        - `"dna"`

      - `value: str`

        DNA nucleotide sequence (A, C, G, T, N)

      - `cyclic: Optional[bool]`

        Whether the sequence is cyclic

      - `modifications: Optional[Iterable[ProteinEntityDnaEntityModification]]`

        Chemical modifications. Optional; defaults to an empty list when omitted.

        - `class ProteinEntityDnaEntityModificationCcdModification: …`

          - `residue_index: int`

            0-based index of the residue to modify

          - `type: Literal["ccd"]`

            - `"ccd"`

          - `value: str`

            CCD code from RCSB PDB (e.g. 'MSE' for selenomethionine, 'SEP' for phosphoserine)

        - `class ProteinEntityDnaEntityModificationSmilesModification: …`

          - `residue_index: int`

            0-based index of the residue to modify

          - `type: Literal["smiles"]`

            - `"smiles"`

          - `value: str`

            SMILES string for the modification

    - `class ProteinEntityLigandCcdEntity: …`

      - `chain_ids: SequenceNotStr[str]`

        Chain IDs for this ligand

      - `type: Literal["ligand_ccd"]`

        - `"ligand_ccd"`

      - `value: str`

        CCD code (e.g., ATP, ADP)

    - `class ProteinEntityLigandSmilesEntity: …`

      - `chain_ids: SequenceNotStr[str]`

        Chain IDs for this ligand

      - `type: Literal["ligand_smiles"]`

        - `"ligand_smiles"`

      - `value: str`

        SMILES string representing the ligand

  - `id: Optional[str]`

    Optional client-provided identifier for this entry

- `target: Target`

  Target specification (structure template or template-free)

  - `class TargetStructureTemplateTarget: …`

    Target defined by an uploaded 3D structure (CIF or PDB file). Only chains included in chain_selection are used.

    - `chain_selection: Dict[str, TargetStructureTemplateTargetChainSelection]`

      Chains selected from the uploaded structure, keyed by chain ID. Only chains listed here are included in the engine run — any chains omitted from this mapping are ignored. Each value defines which residues to keep, which are epitope residues, and which are flexible.

      - `class TargetStructureTemplateTargetChainSelectionStructureTemplateTargetPolymerChainSpec: …`

        Per-chain specification for a polymer (protein/RNA/DNA) chain in a structure template target.

        - `chain_type: Literal["polymer"]`

          - `"polymer"`

        - `crop_residues: Union[Iterable[int], Literal["all"]]`

          0-indexed residue indices to retain from this chain, or 'all' to keep all residues. Residues not listed are excluded from the engine run.

          - `Iterable[int]`

            0-indexed residue indices to keep

          - `Literal["all"]`

            - `"all"`

        - `epitope_residues: Optional[Iterable[int]]`

          0-indexed residue indices where binder contact is desired (the epitope). All indices must be present in crop_residues.

        - `flexible_residues: Optional[Iterable[int]]`

          0-indexed residue indices allowed to move during design (e.g. flexible loop regions). All indices must be present in crop_residues.

      - `class TargetStructureTemplateTargetChainSelectionStructureTemplateTargetLigandChainSpec: …`

        Per-chain specification for a ligand chain in a structure template target. The full ligand is always included.

        - `chain_type: Literal["ligand"]`

          - `"ligand"`

    - `structure: TargetStructureTemplateTargetStructure`

      How to provide a CIF structure file. URLs are auto-detected; base64 uploads must use chemical/x-cif media type.

      - `class TargetStructureTemplateTargetStructureURLSource: …`

        - `type: Literal["url"]`

          - `"url"`

        - `url: str`

      - `class TargetStructureTemplateTargetStructureCifBase64Source: …`

        - `data: str`

          Base64-encoded CIF file contents

        - `media_type: Literal["chemical/x-cif"]`

          Must be chemical/x-cif for CIF files

          - `"chemical/x-cif"`

        - `type: Literal["base64"]`

          - `"base64"`

    - `type: Literal["structure_template"]`

      - `"structure_template"`

  - `class TargetNoTemplateTarget: …`

    Target defined by sequences only, without a 3D structure template

    - `entities: Iterable[TargetNoTemplateTargetEntity]`

      Entities (proteins, RNA, DNA, ligands) defining the target complex.

      - `class TargetNoTemplateTargetEntityProteinEntity: …`

        - `chain_ids: SequenceNotStr[str]`

          Chain IDs for this entity

        - `type: Literal["protein"]`

          - `"protein"`

        - `value: str`

          Amino acid sequence (one-letter codes)

        - `cyclic: Optional[bool]`

          Whether the sequence is cyclic

        - `modifications: Optional[Iterable[TargetNoTemplateTargetEntityProteinEntityModification]]`

          Post-translational modifications. Optional; defaults to an empty list when omitted.

          - `class TargetNoTemplateTargetEntityProteinEntityModificationCcdModification: …`

            - `residue_index: int`

              0-based index of the residue to modify

            - `type: Literal["ccd"]`

              - `"ccd"`

            - `value: str`

              CCD code from RCSB PDB (e.g. 'MSE' for selenomethionine, 'SEP' for phosphoserine)

          - `class TargetNoTemplateTargetEntityProteinEntityModificationSmilesModification: …`

            - `residue_index: int`

              0-based index of the residue to modify

            - `type: Literal["smiles"]`

              - `"smiles"`

            - `value: str`

              SMILES string for the modification

      - `class TargetNoTemplateTargetEntityRnaEntity: …`

        - `chain_ids: SequenceNotStr[str]`

          Chain IDs for this entity

        - `type: Literal["rna"]`

          - `"rna"`

        - `value: str`

          RNA nucleotide sequence (A, C, G, U, N)

        - `cyclic: Optional[bool]`

          Whether the sequence is cyclic

        - `modifications: Optional[Iterable[TargetNoTemplateTargetEntityRnaEntityModification]]`

          Chemical modifications. Optional; defaults to an empty list when omitted.

          - `class TargetNoTemplateTargetEntityRnaEntityModificationCcdModification: …`

            - `residue_index: int`

              0-based index of the residue to modify

            - `type: Literal["ccd"]`

              - `"ccd"`

            - `value: str`

              CCD code from RCSB PDB (e.g. 'MSE' for selenomethionine, 'SEP' for phosphoserine)

          - `class TargetNoTemplateTargetEntityRnaEntityModificationSmilesModification: …`

            - `residue_index: int`

              0-based index of the residue to modify

            - `type: Literal["smiles"]`

              - `"smiles"`

            - `value: str`

              SMILES string for the modification

      - `class TargetNoTemplateTargetEntityDnaEntity: …`

        - `chain_ids: SequenceNotStr[str]`

          Chain IDs for this entity

        - `type: Literal["dna"]`

          - `"dna"`

        - `value: str`

          DNA nucleotide sequence (A, C, G, T, N)

        - `cyclic: Optional[bool]`

          Whether the sequence is cyclic

        - `modifications: Optional[Iterable[TargetNoTemplateTargetEntityDnaEntityModification]]`

          Chemical modifications. Optional; defaults to an empty list when omitted.

          - `class TargetNoTemplateTargetEntityDnaEntityModificationCcdModification: …`

            - `residue_index: int`

              0-based index of the residue to modify

            - `type: Literal["ccd"]`

              - `"ccd"`

            - `value: str`

              CCD code from RCSB PDB (e.g. 'MSE' for selenomethionine, 'SEP' for phosphoserine)

          - `class TargetNoTemplateTargetEntityDnaEntityModificationSmilesModification: …`

            - `residue_index: int`

              0-based index of the residue to modify

            - `type: Literal["smiles"]`

              - `"smiles"`

            - `value: str`

              SMILES string for the modification

      - `class TargetNoTemplateTargetEntityLigandCcdEntity: …`

        - `chain_ids: SequenceNotStr[str]`

          Chain IDs for this ligand

        - `type: Literal["ligand_ccd"]`

          - `"ligand_ccd"`

        - `value: str`

          CCD code (e.g., ATP, ADP)

      - `class TargetNoTemplateTargetEntityLigandSmilesEntity: …`

        - `chain_ids: SequenceNotStr[str]`

          Chain IDs for this ligand

        - `type: Literal["ligand_smiles"]`

          - `"ligand_smiles"`

        - `value: str`

          SMILES string representing the ligand

    - `type: Literal["no_template"]`

      - `"no_template"`

    - `bonds: Optional[Iterable[TargetNoTemplateTargetBond]]`

      Covalent bond constraints between atoms in the target complex. Atom-level ligand references currently support ligand_ccd only; ligand_smiles is unsupported.

      - `atom1: TargetNoTemplateTargetBondAtom1`

        Ligand atom reference. Atom-level ligand references currently support ligand_ccd entities only; ligand_smiles is unsupported.

        - `class TargetNoTemplateTargetBondAtom1LigandAtom: …`

          Ligand atom reference. Atom-level ligand references currently support ligand_ccd entities only; ligand_smiles is unsupported.

          - `atom_name: str`

            Standardized atom name (verifiable in CIF file on RCSB). Atom-level references to ligand_smiles entities are currently unsupported; use ligand_ccd instead.

          - `chain_id: str`

            Chain ID containing the atom

          - `type: Literal["ligand_atom"]`

            - `"ligand_atom"`

        - `class TargetNoTemplateTargetBondAtom1PolymerAtom: …`

          - `atom_name: str`

            Standardized atom name (verifiable in CIF file on RCSB)

          - `chain_id: str`

            Chain ID containing the atom

          - `residue_index: int`

            0-based residue index

          - `type: Literal["polymer_atom"]`

            - `"polymer_atom"`

      - `atom2: TargetNoTemplateTargetBondAtom2`

        Ligand atom reference. Atom-level ligand references currently support ligand_ccd entities only; ligand_smiles is unsupported.

        - `class TargetNoTemplateTargetBondAtom2LigandAtom: …`

          Ligand atom reference. Atom-level ligand references currently support ligand_ccd entities only; ligand_smiles is unsupported.

          - `atom_name: str`

            Standardized atom name (verifiable in CIF file on RCSB). Atom-level references to ligand_smiles entities are currently unsupported; use ligand_ccd instead.

          - `chain_id: str`

            Chain ID containing the atom

          - `type: Literal["ligand_atom"]`

            - `"ligand_atom"`

        - `class TargetNoTemplateTargetBondAtom2PolymerAtom: …`

          - `atom_name: str`

            Standardized atom name (verifiable in CIF file on RCSB)

          - `chain_id: str`

            Chain ID containing the atom

          - `residue_index: int`

            0-based residue index

          - `type: Literal["polymer_atom"]`

            - `"polymer_atom"`

    - `constraints: Optional[Iterable[TargetNoTemplateTargetConstraint]]`

      Structural constraints (pocket and contact). Atom-level ligand references currently support ligand_ccd only; ligand_smiles is unsupported.

      - `class TargetNoTemplateTargetConstraintPocketConstraint: …`

        Constrains the binder to interact with specific pocket residues on the target.

        - `binder_chain_id: str`

          Chain ID of the binder molecule

        - `contact_residues: Dict[str, Iterable[int]]`

          Binding pocket residues keyed by chain ID. Each key is a chain ID (e.g. "A") and the value is an array of 0-indexed residue indices that define the pocket on that chain.

        - `max_distance_angstrom: float`

          Maximum allowed distance in Angstroms between binder and pocket residues. Typical range: 4-8 A.

        - `type: Literal["pocket"]`

          - `"pocket"`

        - `force: Optional[bool]`

          Whether to force the constraint

      - `class TargetNoTemplateTargetConstraintContactConstraint: …`

        Contact constraint between two tokens. Atom-level ligand references currently support ligand_ccd entities only; ligand_smiles is unsupported.

        - `max_distance_angstrom: float`

          Maximum distance in Angstroms

        - `token1: TargetNoTemplateTargetConstraintContactConstraintToken1`

          Ligand contact token. Atom-level ligand references currently support ligand_ccd entities only; ligand_smiles is unsupported.

          - `class TargetNoTemplateTargetConstraintContactConstraintToken1PolymerContactToken: …`

            - `chain_id: str`

              Chain ID

            - `residue_index: int`

              0-based residue index

            - `type: Literal["polymer_contact"]`

              - `"polymer_contact"`

          - `class TargetNoTemplateTargetConstraintContactConstraintToken1LigandContactToken: …`

            Ligand contact token. Atom-level ligand references currently support ligand_ccd entities only; ligand_smiles is unsupported.

            - `atom_name: str`

              Atom name. Atom-level references to ligand_smiles entities are currently unsupported; use ligand_ccd instead.

            - `chain_id: str`

              Chain ID

            - `type: Literal["ligand_contact"]`

              - `"ligand_contact"`

        - `token2: TargetNoTemplateTargetConstraintContactConstraintToken2`

          Ligand contact token. Atom-level ligand references currently support ligand_ccd entities only; ligand_smiles is unsupported.

          - `class TargetNoTemplateTargetConstraintContactConstraintToken2PolymerContactToken: …`

            - `chain_id: str`

              Chain ID

            - `residue_index: int`

              0-based residue index

            - `type: Literal["polymer_contact"]`

              - `"polymer_contact"`

          - `class TargetNoTemplateTargetConstraintContactConstraintToken2LigandContactToken: …`

            Ligand contact token. Atom-level ligand references currently support ligand_ccd entities only; ligand_smiles is unsupported.

            - `atom_name: str`

              Atom name. Atom-level references to ligand_smiles entities are currently unsupported; use ligand_ccd instead.

            - `chain_id: str`

              Chain ID

            - `type: Literal["ligand_contact"]`

              - `"ligand_contact"`

        - `type: Literal["contact"]`

          - `"contact"`

        - `force: Optional[bool]`

          Whether to force the constraint

    - `epitope_ligand_chains: Optional[SequenceNotStr[str]]`

      Chain IDs of ligand entities that are part of the binding epitope. Ligands are marked as epitope in full (no residue-level selection).

    - `epitope_residues: Optional[Dict[str, Iterable[int]]]`

      Polymer chain residues where binder contact is desired (the epitope). Each key is a chain ID of a polymer entity, each value is an array of 0-indexed residue indices.

- `idempotency_key: Optional[str]`

  Client-provided key to prevent duplicate submissions on retries

- `workspace_id: Optional[str]`

  Target workspace ID (admin keys only; ignored for workspace keys)

### Returns

- `class LibraryScreenEstimateCostResponse: …`

  Estimate response with monetary values encoded as decimal strings to preserve precision.

  - `breakdown: Breakdown`

    Cost breakdown for the billed application.

    - `application: Literal["structure_and_binding", "small_molecule_design", "small_molecule_library_screen", 3 more]`

      - `"structure_and_binding"`

      - `"small_molecule_design"`

      - `"small_molecule_library_screen"`

      - `"protein_design"`

      - `"protein_library_screen"`

      - `"adme"`

    - `cost_per_unit_usd: str`

      Estimated cost per displayed unit as a decimal string, rounded up to 4 decimal places. This may include token-size multipliers or generation overhead; estimated_cost_usd is the authoritative total.

    - `num_units: int`

      Number of units shown for the estimate. For structure-and-binding, this is the requested number of samples. For protein and small-molecule design/screen endpoints, this is the requested number of proteins or molecules.

  - `disclaimer: str`

  - `estimated_cost_usd: str`

    Estimated total cost as a decimal string

### Example

```python
import os
from boltz_api import Boltz

client = Boltz(
    api_key=os.environ.get("BOLTZ_API_KEY"),  # This is the default and can be omitted
)
response = client.protein.library_screen.estimate_cost(
    proteins=[{
        "entities": [{
            "chain_ids": ["string"],
            "type": "protein",
            "value": "value",
        }]
    }],
    target={
        "chain_selection": {
            "A": {
                "chain_type": "polymer",
                "crop_residues": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12],
            }
        },
        "structure": {
            "type": "url",
            "url": "https://example.com",
        },
        "type": "structure_template",
    },
)
print(response.breakdown)
```
