## Resume a stopped protein library screen

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

Resume a stopped protein library screen from its last checkpoint

### Path Parameters

- `id: string`

### Returns

- `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: "boltzprot"`

  Deprecated. Use pipeline instead.

  - `"boltzprot"`

- `engine_version: "1.0"`

  Deprecated. Use pipeline_version instead.

  - `"1.0"`

- `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, 4 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, 2 more }  or object { chain_type } ]`

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

        - `StructureTemplateTargetPolymerChainSpec object { chain_type, crop_residues, epitope_residues, 2 more }`

          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 pipeline run.

            - `array of number`

              0-indexed residue indices to keep

            - `"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 and must not overlap non_binding_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.

          - `non_binding_residues: optional array of number`

            0-indexed residue indices where binder contact should be discouraged. All indices must be present in crop_residues and must not overlap epitope_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, 4 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 }`

            CCD post-translational modifications. Optional; defaults to an empty list when omitted. SMILES modifications are not supported.

            - `residue_index: number`

              0-based index of the residue to modify

            - `type: "ccd"`

              Modification format. Only CCD polymer modifications are supported.

              - `"ccd"`

            - `value: string`

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

        - `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 }`

            CCD chemical modifications. Optional; defaults to an empty list when omitted. SMILES modifications are not supported.

            - `residue_index: number`

              0-based index of the residue to modify

            - `type: "ccd"`

              Modification format. Only CCD polymer modifications are supported.

              - `"ccd"`

            - `value: string`

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

        - `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 }`

            CCD chemical modifications. Optional; defaults to an empty list when omitted. SMILES modifications are not supported.

            - `residue_index: number`

              0-based index of the residue to modify

            - `type: "ccd"`

              Modification format. Only CCD polymer modifications are supported.

              - `"ccd"`

            - `value: string`

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

        - `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. Ligand atom references support CCD atom names and explicitly atom-mapped SMILES atoms.

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

          Ligand atom reference for a CCD atom or an explicitly atom-mapped SMILES atom.

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

            Ligand atom reference for a CCD atom or an explicitly atom-mapped SMILES atom.

            - `atom_name: string`

              Atom name. For ligand_ccd, use the standardized CIF atom name. For ligand_smiles, explicitly label the atom with numeric atom-map notation: [C:1] is referenced as C1 and [O:2] as O2. The resulting name must be unique within the molecule and at most four characters.

            - `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 for a CCD atom or an explicitly atom-mapped SMILES atom.

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

            Ligand atom reference for a CCD atom or an explicitly atom-mapped SMILES atom.

            - `atom_name: string`

              Atom name. For ligand_ccd, use the standardized CIF atom name. For ligand_smiles, explicitly label the atom with numeric atom-map notation: [C:1] is referenced as C1 and [O:2] as O2. The resulting name must be unique within the molecule and at most four characters.

            - `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). Ligand atom references support CCD atom names and explicitly atom-mapped SMILES atoms.

        - `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 }`

          Maximum-distance contact constraint between two polymer residues or ligand atoms.

          - `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 for a CCD atom or an explicitly atom-mapped SMILES atom.

            - `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 for a CCD atom or an explicitly atom-mapped SMILES atom.

              - `atom_name: string`

                Atom name. For ligand_ccd, use the standardized CIF atom name. For ligand_smiles, explicitly label the atom with numeric atom-map notation: [C:1] is referenced as C1 and [O:2] as O2. The resulting name must be unique within the molecule and at most four characters.

              - `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 for a CCD atom or an explicitly atom-mapped SMILES atom.

            - `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 for a CCD atom or an explicitly atom-mapped SMILES atom.

              - `atom_name: string`

                Atom name. For ligand_ccd, use the standardized CIF atom name. For ligand_smiles, explicitly label the atom with numeric atom-map notation: [C:1] is referenced as C1 and [O:2] as O2. The resulting name must be unique within the molecule and at most four characters.

              - `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. Residues must not overlap non_binding_residues on the same chain.

      - `non_binding_residues: optional map[array of number]`

        Polymer chain residues where binder contact should be discouraged. Each key is a chain ID of a polymer entity, each value is an array of 0-indexed residue indices. Residues must not overlap epitope_residues on the same chain.

- `livemode: boolean`

  Whether this resource was created with a live API key.

- `pipeline: "boltzprot"`

  Pipeline used for protein library screen

  - `"boltzprot"`

- `pipeline_version: "1.0"`

  Pipeline version used for protein library screen

  - `"1.0"`

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

```http
curl https://api.boltz.bio/compute/v1/protein/library-screen/$ID/resume \
    -X POST \
    -H "x-api-key: $BOLTZ_API_KEY"
```

#### Response

```json
{
  "id": "id",
  "completed_at": "2019-12-27T18:11:19.117Z",
  "created_at": "2019-12-27T18:11:19.117Z",
  "data_deleted_at": "2019-12-27T18:11:19.117Z",
  "engine": "boltzprot",
  "engine_version": "1.0",
  "error": {
    "code": "code",
    "message": "message",
    "details": {}
  },
  "input": {
    "proteins": {
      "url": "https://example.com",
      "url_expires_at": "2019-12-27T18:11:19.117Z"
    },
    "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
          ],
          "non_binding_residues": [
            0,
            1,
            2
          ]
        }
      },
      "structure": {
        "url": "https://example.com",
        "url_expires_at": "2019-12-27T18:11:19.117Z"
      },
      "type": "structure_template"
    }
  },
  "livemode": true,
  "pipeline": "boltzprot",
  "pipeline_version": "1.0",
  "progress": {
    "num_proteins_failed": 0,
    "num_proteins_screened": 0,
    "total_proteins_to_screen": 1,
    "latest_result_id": "latest_result_id"
  },
  "started_at": "2019-12-27T18:11:19.117Z",
  "status": "pending",
  "stopped_at": "2019-12-27T18:11:19.117Z",
  "workspace_id": "workspace_id",
  "idempotency_key": "idempotency_key"
}
```
