## Start

`$ boltz-api protein:library-screen start`

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

Screen a set of protein candidates against a target

### Parameters

- `--protein: array of object { entities, id }`

  List of protein entries to screen.

- `--target: object { chain_selection, structure, type }  or object { entities, type, bonds, 3 more }`

  Target specification (structure template or template-free)

- `--idempotency-key: optional string`

  Client-provided key to prevent duplicate submissions on retries

- `--workspace-id: optional string`

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

### Returns

- `ProteinLibraryScreenStartResponse: object { id, completed_at, created_at, 12 more }`

  A protein library screening engine run

  - `id: string`

    Unique ProteinLibraryScreen identifier

  - `completed_at: string`

  - `created_at: string`

  - `data_deleted_at: string`

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

  - `engine: "boltz-protein-screen"`

    Engine used for protein library screen

    - `"boltz-protein-screen"`

  - `engine_version: string`

    Engine version used for protein library screen

  - `error: object { code, message, details }`

    - `code: string`

      Machine-readable error code

    - `message: string`

      Human-readable error message

    - `details: optional unknown`

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

  - `input: object { proteins, target }`

    Pipeline input (null if data deleted)

    - `proteins: object { url, url_expires_at }`

      - `url: string`

        URL to download the file

      - `url_expires_at: string`

        When the presigned URL expires

    - `target: object { chain_selection, structure, type }  or object { entities, type, bonds, 3 more }`

      Target specification (structure template or template-free)

      - `StructureTemplateTargetResponse: object { chain_selection, structure, type }`

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

        - `chain_selection: map[object { chain_type, crop_residues, epitope_residues, flexible_residues }  or object { chain_type } ]`

          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.

          - `StructureTemplateTargetPolymerChainSpec: object { chain_type, crop_residues, epitope_residues, flexible_residues }`

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

            - `chain_type: "polymer"`

              - `"polymer"`

            - `crop_residues: array of number or "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.

              - `union_member_0: array of number`

                0-indexed residue indices to keep

              - `union_member_1: "all"`

                - `"all"`

            - `epitope_residues: optional array of number`

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

            - `flexible_residues: optional array of number`

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

          - `StructureTemplateTargetLigandChainSpec: object { chain_type }`

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

            - `chain_type: "ligand"`

              - `"ligand"`

        - `structure: object { url, url_expires_at }`

          - `url: string`

            URL to download the file

          - `url_expires_at: string`

            When the presigned URL expires

        - `type: "structure_template"`

          - `"structure_template"`

      - `NoTemplateTargetResponse: object { entities, type, bonds, 3 more }`

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

        - `entities: array of object { chain_ids, type, value, 2 more }  or object { chain_ids, type, value, 2 more }  or object { chain_ids, type, value, 2 more }  or 2 more`

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

          - `ProteinEntityResponse: object { chain_ids, type, value, 2 more }`

            - `chain_ids: array of string`

              Chain IDs for this entity

            - `type: "protein"`

              - `"protein"`

            - `value: string`

              Amino acid sequence (one-letter codes)

            - `cyclic: optional boolean`

              Whether the sequence is cyclic

            - `modifications: optional array of object { residue_index, type, value }  or object { residue_index, type, value }`

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

              - `CCDModificationResponse: object { residue_index, type, value }`

                - `residue_index: number`

                  0-based index of the residue to modify

                - `type: "ccd"`

                  - `"ccd"`

                - `value: string`

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

              - `SmilesModificationResponse: object { residue_index, type, value }`

                - `residue_index: number`

                  0-based index of the residue to modify

                - `type: "smiles"`

                  - `"smiles"`

                - `value: string`

                  SMILES string for the modification

          - `RNAEntityResponse: object { chain_ids, type, value, 2 more }`

            - `chain_ids: array of string`

              Chain IDs for this entity

            - `type: "rna"`

              - `"rna"`

            - `value: string`

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

            - `cyclic: optional boolean`

              Whether the sequence is cyclic

            - `modifications: optional array of object { residue_index, type, value }  or object { residue_index, type, value }`

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

              - `CCDModificationResponse: object { residue_index, type, value }`

                - `residue_index: number`

                  0-based index of the residue to modify

                - `type: "ccd"`

                  - `"ccd"`

                - `value: string`

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

              - `SmilesModificationResponse: object { residue_index, type, value }`

                - `residue_index: number`

                  0-based index of the residue to modify

                - `type: "smiles"`

                  - `"smiles"`

                - `value: string`

                  SMILES string for the modification

          - `DNAEntityResponse: object { chain_ids, type, value, 2 more }`

            - `chain_ids: array of string`

              Chain IDs for this entity

            - `type: "dna"`

              - `"dna"`

            - `value: string`

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

            - `cyclic: optional boolean`

              Whether the sequence is cyclic

            - `modifications: optional array of object { residue_index, type, value }  or object { residue_index, type, value }`

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

              - `CCDModificationResponse: object { residue_index, type, value }`

                - `residue_index: number`

                  0-based index of the residue to modify

                - `type: "ccd"`

                  - `"ccd"`

                - `value: string`

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

              - `SmilesModificationResponse: object { residue_index, type, value }`

                - `residue_index: number`

                  0-based index of the residue to modify

                - `type: "smiles"`

                  - `"smiles"`

                - `value: string`

                  SMILES string for the modification

          - `LigandCCDEntityResponse: object { chain_ids, type, value }`

            - `chain_ids: array of string`

              Chain IDs for this ligand

            - `type: "ligand_ccd"`

              - `"ligand_ccd"`

            - `value: string`

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

          - `LigandSmilesEntityResponse: object { chain_ids, type, value }`

            - `chain_ids: array of string`

              Chain IDs for this ligand

            - `type: "ligand_smiles"`

              - `"ligand_smiles"`

            - `value: string`

              SMILES string representing the ligand

        - `type: "no_template"`

          - `"no_template"`

        - `bonds: optional array of object { atom1, atom2 }`

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

          - `atom1: object { atom_name, chain_id, type }  or object { atom_name, chain_id, residue_index, type }`

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

            - `LigandAtomResponse: object { atom_name, chain_id, type }`

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

              - `atom_name: string`

                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: string`

                Chain ID containing the atom

              - `type: "ligand_atom"`

                - `"ligand_atom"`

            - `PolymerAtomResponse: object { atom_name, chain_id, residue_index, type }`

              - `atom_name: string`

                Standardized atom name (verifiable in CIF file on RCSB)

              - `chain_id: string`

                Chain ID containing the atom

              - `residue_index: number`

                0-based residue index

              - `type: "polymer_atom"`

                - `"polymer_atom"`

          - `atom2: object { atom_name, chain_id, type }  or object { atom_name, chain_id, residue_index, type }`

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

            - `LigandAtomResponse: object { atom_name, chain_id, type }`

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

              - `atom_name: string`

                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: string`

                Chain ID containing the atom

              - `type: "ligand_atom"`

                - `"ligand_atom"`

            - `PolymerAtomResponse: object { atom_name, chain_id, residue_index, type }`

              - `atom_name: string`

                Standardized atom name (verifiable in CIF file on RCSB)

              - `chain_id: string`

                Chain ID containing the atom

              - `residue_index: number`

                0-based residue index

              - `type: "polymer_atom"`

                - `"polymer_atom"`

        - `constraints: optional array of object { binder_chain_id, contact_residues, max_distance_angstrom, 2 more }  or object { max_distance_angstrom, token1, token2, 2 more }`

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

          - `PocketConstraintResponse: object { binder_chain_id, contact_residues, max_distance_angstrom, 2 more }`

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

            - `binder_chain_id: string`

              Chain ID of the binder molecule

            - `contact_residues: map[array of number]`

              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: number`

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

            - `type: "pocket"`

              - `"pocket"`

            - `force: optional boolean`

              Whether to force the constraint

          - `ContactConstraintResponse: object { max_distance_angstrom, token1, token2, 2 more }`

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

            - `max_distance_angstrom: number`

              Maximum distance in Angstroms

            - `token1: object { chain_id, residue_index, type }  or object { atom_name, chain_id, type }`

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

              - `PolymerContactTokenResponse: object { chain_id, residue_index, type }`

                - `chain_id: string`

                  Chain ID

                - `residue_index: number`

                  0-based residue index

                - `type: "polymer_contact"`

                  - `"polymer_contact"`

              - `LigandContactTokenResponse: object { atom_name, chain_id, type }`

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

                - `atom_name: string`

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

                - `chain_id: string`

                  Chain ID

                - `type: "ligand_contact"`

                  - `"ligand_contact"`

            - `token2: object { chain_id, residue_index, type }  or object { atom_name, chain_id, type }`

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

              - `PolymerContactTokenResponse: object { chain_id, residue_index, type }`

                - `chain_id: string`

                  Chain ID

                - `residue_index: number`

                  0-based residue index

                - `type: "polymer_contact"`

                  - `"polymer_contact"`

              - `LigandContactTokenResponse: object { atom_name, chain_id, type }`

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

                - `atom_name: string`

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

                - `chain_id: string`

                  Chain ID

                - `type: "ligand_contact"`

                  - `"ligand_contact"`

            - `type: "contact"`

              - `"contact"`

            - `force: optional boolean`

              Whether to force the constraint

        - `epitope_ligand_chains: optional array of string`

          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 map[array of number]`

          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: boolean`

    Whether this resource was created with a live API key.

  - `progress: object { num_proteins_failed, num_proteins_screened, total_proteins_to_screen, latest_result_id }`

    - `num_proteins_failed: number`

      Number of accepted proteins that reached terminal failure during screening.

    - `num_proteins_screened: number`

      Number of accepted proteins that produced usable screening results.

    - `total_proteins_to_screen: number`

      Total number of proteins accepted into the screening run.

    - `latest_result_id: optional string`

      ID of the latest result

  - `started_at: string`

  - `status: "pending" or "running" or "succeeded" or 2 more`

    - `"pending"`

    - `"running"`

    - `"succeeded"`

    - `"failed"`

    - `"stopped"`

  - `stopped_at: string`

  - `workspace_id: string`

    Workspace ID

  - `idempotency_key: optional string`

    Client-provided idempotency key

### Example

```cli
boltz-api protein:library-screen start \
  --protein '{entities: [{chain_ids: [string], type: protein, value: value, cyclic: true, modifications: [{residue_index: 0, type: ccd, value: value}]}], id: id}' \
  --target '{chain_selection: {A: {chain_type: polymer, crop_residues: [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12], epitope_residues: [10, 11, 12], flexible_residues: [5, 6, 7]}}, structure: {type: url, url: https://example.com}, type: structure_template}'
```
