> ## Documentation Index
> Fetch the complete documentation index at: https://docs.revilico.bio/llms.txt
> Use this file to discover all available pages before exploring further.

# Start a RevMD-Bind run

> Simulates a protein with a drug-like molecule bound to it, in salt water, to see whether the molecule stays in place, which residues hold it, and optionally how strongly it binds. Each complex is simulated separately, as a child of the run; progress stays at 0 until every child has finished, so follow the child counts.

Starts a run and returns it with status `queued`; poll GET /v1/runs/{runId} until it finishes. Runs spend credits.

**Limits:** `maxComplexes`: 10.

How the engine works and how to read its results: [RevMD-Bind documentation](/docs/revmd-bind).

**Scope:** `runs:write`.



## OpenAPI

````yaml /api-reference/openapi.json post /v1/engines/revmd-bind/runs
openapi: 3.1.0
info:
  title: Revilico API
  version: 1.0.0
  description: >-
    Run Revilico's computational chemistry and biology engines from your own
    code: upload input files, start runs, follow them and read their results.
servers:
  - url: https://public-api.revilico.bio
security:
  - bearerAuth: []
tags:
  - name: Account
    description: Who you are, your credits and what your runs have used.
  - name: Engines
    description: The engines you can run, their parameter schemas and examples.
  - name: Files
    description: 'Upload input files: create an upload, then PUT the bytes.'
  - name: Runs
    description: Start, follow and cancel engine runs.
  - name: Results and outputs
    description: 'Read what a run produced: results, files and outputs.'
  - name: Projects
    description: Group runs into the projects you see in the web app.
  - name: Sharing
    description: >-
      Share runs with people in your organization, as in the web app's Pipeline
      sharing.
  - name: Notes
    description: >-
      RevNotes: read, write and share the rich-text notes and note folders of
      the web app's RevNotes panel, in markdown or HTML.
  - name: Drive
    description: >-
      Your RevDrive files and shared drives, as in the web app: browse, read,
      use files as run inputs, save outputs, and organize. Ids: `dfile_…` and
      `dfld_…` in a personal Drive, `drive_…` for a shared drive, `sdfile_…` and
      `sdfld_…` in one.
  - name: Engine runs
    description: >-
      Start a run of one engine, with that engine's parameters and input files.
      Same endpoint as **Start a run**.
  - name: Health
    description: Service status. Needs no API key.
paths:
  /v1/engines/revmd-bind/runs:
    post:
      tags:
        - Engine runs
      summary: Start a RevMD-Bind run
      description: >-
        Simulates a protein with a drug-like molecule bound to it, in salt
        water, to see whether the molecule stays in place, which residues hold
        it, and optionally how strongly it binds. Each complex is simulated
        separately, as a child of the run; progress stays at 0 until every child
        has finished, so follow the child counts.


        Starts a run and returns it with status `queued`; poll GET
        /v1/runs/{runId} until it finishes. Runs spend credits.


        **Limits:** `maxComplexes`: 10.


        How the engine works and how to read its results: [RevMD-Bind
        documentation](/docs/revmd-bind).


        **Scope:** `runs:write`.
      operationId: engineRuns.revmd-bind
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                name:
                  description: A name for the run, shown in the web app.
                  type: string
                  maxLength: 200
                parameters:
                  type: object
                  properties:
                    simulation_time_ns:
                      default: 1
                      description: >-
                        Length of the simulation, in ns. Run time and cost grow
                        with it: 1 ns of a 480-residue protein took about 40
                        minutes, and its binding energy about 10 more, mostly
                        waiting for a machine.
                      type: number
                      minimum: 0.1
                      maximum: 100
                    force_field:
                      default: amber99sb-ildn
                      description: The set of physics parameters used for the protein.
                      type: string
                      enum:
                        - amber99sb-ildn
                        - amber99sb
                        - amber03
                        - amber94
                        - amber96
                        - amber99
                        - charmm36-feb2026
                    water_model:
                      default: tip3p
                      description: >-
                        How water molecules are represented. Must be one the
                        force field ships; tip5p is CHARMM only.
                      type: string
                      enum:
                        - tip3p
                        - tip4p
                        - tip4pew
                        - tip5p
                        - spc
                        - spce
                    box:
                      default:
                        type: cubic
                        edge_distance_nm: 1
                      type: object
                      properties:
                        type:
                          default: cubic
                          description: >-
                            Shape of the water box. Dodecahedron needs about 30%
                            less water than cubic.
                          type: string
                          enum:
                            - cubic
                            - dodecahedron
                            - octahedral
                            - triclinic
                        edge_distance_nm:
                          default: 1
                          description: >-
                            Smallest gap, in nm, between the complex and the box
                            edge.
                          type: number
                          minimum: 0.5
                          maximum: 3
                      additionalProperties: false
                    salt:
                      default:
                        type: NaCl
                        concentration_m: 0.15
                      description: >-
                        Salt added to the water. null adds only the sodium or
                        chloride ions needed to cancel the charge.
                      anyOf:
                        - type: object
                          properties:
                            type:
                              default: NaCl
                              type: string
                              enum:
                                - NaCl
                                - KCl
                                - MgCl2
                                - CaCl2
                                - LiCl
                                - RbCl
                                - CsCl
                                - ZnCl2
                            concentration_m:
                              default: 0.15
                              description: Salt added, in mol/L. 0.15 is about body fluid.
                              type: number
                              minimum: 0
                              maximum: 1
                          additionalProperties: false
                        - type: 'null'
                    temperature_k:
                      default: 300
                      description: Temperature, in K (300 K is 27 °C).
                      type: number
                      minimum: 250
                      maximum: 400
                    pressure_bar:
                      default: 1
                      description: Pressure, in bar.
                      type: number
                      exclusiveMinimum: 0
                      maximum: 1000
                    binding_energy:
                      default: null
                      description: >-
                        Estimate how strongly the molecule binds, in kcal/mol
                        (MM/PBSA, a fast physics-based approximation), from the
                        saved frames after the simulation. More negative is
                        tighter. null skips it. Not available with CHARMM.
                      anyOf:
                        - type: object
                          properties:
                            methods:
                              default:
                                - gb
                              description: >-
                                How the water around the complex is
                                approximated: gb is faster; pb solves it more
                                exactly and takes longer. Both gives one
                                estimate each.
                              minItems: 1
                              maxItems: 2
                              type: array
                              items:
                                type: string
                                enum:
                                  - gb
                                  - pb
                            per_residue:
                              default: false
                              description: >-
                                Also split the binding energy by protein residue
                                (output binding_energy_by_residue).
                              type: boolean
                          additionalProperties: false
                        - type: 'null'
                    pca:
                      default: false
                      description: >-
                        Also find the complex’s main collective motions
                        (principal component analysis), added as plots.
                      type: boolean
                    advanced:
                      default:
                        vdw_cutoff_nm: 1.2
                        coulomb_cutoff_nm: 1.2
                        time_step_ps: 0.002
                        output_interval_steps: 50000
                      type: object
                      properties:
                        vdw_cutoff_nm:
                          default: 1.2
                          description: >-
                            Distance, in nm, beyond which van der Waals forces
                            are ignored.
                          type: number
                          minimum: 0.8
                          maximum: 2
                        coulomb_cutoff_nm:
                          default: 1.2
                          description: >-
                            Distance, in nm, beyond which charges are handled by
                            the long-range method.
                          type: number
                          minimum: 0.8
                          maximum: 2
                        time_step_ps:
                          default: 0.002
                          description: Length of one simulation step, in ps.
                          type: number
                          minimum: 0.001
                          maximum: 0.004
                        output_interval_steps:
                          default: 50000
                          description: >-
                            Steps between saved frames. Lower gives more frames
                            for the analyses and the binding energy, and larger
                            files.
                          type: integer
                          minimum: 1000
                          maximum: 100000
                      additionalProperties: false
                  additionalProperties: false
                inputs:
                  type: object
                  properties:
                    complexes:
                      type: string
                      description: >-
                        1 to 10 protein–molecule complexes (the molecule already
                        placed in its pocket, e.g. a docking pose), in PDB or
                        mmCIF format; each is simulated on its own. A file id:
                        an upload (`file_…`) or a Drive file (`dfile_…`,
                        `sdfile_…`). Formats: pdb, cif; up to 50 MB.
                  required:
                    - complexes
                  additionalProperties: false
                budget:
                  description: Most credits the run may spend; it is stopped beyond that.
                  type: number
                  exclusiveMinimum: 0
                projectId:
                  description: >-
                    Add the run to this project (`proj_…`); needs editor or
                    owner on it.
                  type: string
              required:
                - inputs
              additionalProperties: false
            examples:
              pose-stability:
                summary: >-
                  Simulate one docked protein–molecule complex for 1 ns and see
                  which residues hold the molecule.
                value:
                  name: HSP90 lead pose, 1 ns
                  parameters: {}
                  inputs:
                    complexes:
                      - file_…
              rank-poses-by-binding-energy:
                summary: >-
                  Simulate three poses for 5 ns each and estimate each one’s
                  binding energy; compare the children’s totals.
                value:
                  name: HSP90 top 3 poses, 5 ns + binding energy
                  parameters:
                    simulation_time_ns: 5
                    binding_energy:
                      methods:
                        - gb
                  inputs:
                    complexes:
                      - file_…
                      - file_…
                      - file_…
      responses:
        '202':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Run'
        '400':
          $ref: '#/components/responses/400'
        '401':
          $ref: '#/components/responses/401'
        '402':
          $ref: '#/components/responses/402'
        '403':
          $ref: '#/components/responses/403'
        '404':
          $ref: '#/components/responses/404'
        '422':
          $ref: '#/components/responses/422'
        '500':
          $ref: '#/components/responses/500'
        '502':
          $ref: '#/components/responses/502'
components:
  schemas:
    Run:
      type: object
      properties:
        id:
          type: string
          description: Run id, `run_…`.
        engine:
          type: string
          description: Engine slug, e.g. `revredox`.
        name:
          type:
            - string
            - 'null'
        access:
          type: string
          enum:
            - owner
            - shared
            - project
          description: >-
            Why you can see the run: you started it, it was shared with you, or
            it is in a project you belong to. Only the owner can cancel it or
            read its inputs.
        owner:
          type: object
          properties:
            name:
              type:
                - string
                - 'null'
            email:
              type: string
          required:
            - name
            - email
          description: Who started the run.
        status:
          type: string
          enum:
            - queued
            - running
            - succeeded
            - failed
            - cancelled
          description: >-
            queued until the engine picks the run up; succeeded, failed and
            cancelled are final.
        statusReason:
          description: >-
            Why a cancelled run stopped: `user`, `insufficient_credits` or
            `budget_exceeded`. Null otherwise.
          type:
            - string
            - 'null'
        progress:
          type: number
          description: Progress the engine reports; 0 until it reports any.
        createdAt:
          type: string
          format: date-time
        startedAt:
          anyOf:
            - type: string
              format: date-time
            - type: 'null'
        endedAt:
          anyOf:
            - type: string
              format: date-time
            - type: 'null'
        budget:
          description: Most credits the run may spend, if one was set.
          type:
            - number
            - 'null'
        creditsUsed:
          type: number
          description: Credits charged to the run so far.
        error:
          anyOf:
            - type: object
              properties:
                message:
                  type: string
              required:
                - message
            - type: 'null'
          description: Set when status is failed.
        children:
          type: object
          properties:
            total:
              type: number
            queued:
              type: number
            running:
              type: number
            succeeded:
              type: number
            failed:
              type: number
            cancelled:
              type: number
          required:
            - total
            - queued
            - running
            - succeeded
            - failed
            - cancelled
          description: >-
            For engines that run each input as its own job: how many children
            are in each status. GET /v1/runs/{runId}/children lists them.
        links:
          type: object
          propertyNames:
            type: string
          additionalProperties:
            type: string
          description: >-
            Related endpoints: self, inputs (owner only), results, outputs,
            files.
        warnings:
          description: >-
            Set when the run was created but a follow-up step, such as adding it
            to a project, failed.
          type: array
          items:
            type: string
      required:
        - id
        - engine
        - name
        - access
        - owner
        - status
        - statusReason
        - progress
        - createdAt
        - startedAt
        - endedAt
        - budget
        - creditsUsed
        - error
        - links
    Error:
      type: object
      properties:
        error:
          type: object
          properties:
            code:
              type: string
              enum:
                - VALIDATION_FAILED
                - INVALID_ID
                - INVALID_PARAMETERS
                - INPUT_LIMIT_EXCEEDED
                - NOT_FOUND
                - FORBIDDEN
                - METHOD_NOT_ALLOWED
                - CONFLICT
                - PAYLOAD_TOO_LARGE
                - MISSING_CREDENTIALS
                - INVALID_CREDENTIALS
                - WRONG_ENVIRONMENT
                - CREDENTIALS_EXPIRED
                - CREDENTIALS_REVOKED
                - ACCOUNT_INACTIVE
                - API_ACCESS_NOT_ENABLED
                - INSUFFICIENT_SCOPE
                - SESSION_REQUIRED
                - TOO_MANY_AUTH_FAILURES
                - API_KEY_LIMIT_REACHED
                - ENGINE_NOT_ENABLED
                - DOCS_NOT_AVAILABLE
                - INSUFFICIENT_CREDITS
                - RUN_NOT_COMPLETE
                - ENGINE_SUBMIT_FAILED
                - RATE_LIMITED
                - SERVICE_UNAVAILABLE
                - INTERNAL_ERROR
              description: Stable within /v1; branch on this, not on the message.
            message:
              type: string
              description: Readable explanation, for people.
            details:
              description: >-
                Extra context, e.g. `issues` ({ path, message }[]) for
                validation errors.
              type: object
              propertyNames:
                type: string
              additionalProperties: {}
          required:
            - code
            - message
      required:
        - error
  responses:
    '400':
      description: >-
        The request is malformed. `error.code` is one of `VALIDATION_FAILED`,
        `INVALID_ID`.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
          example:
            error:
              code: VALIDATION_FAILED
              message: The request is malformed.
    '401':
      description: >-
        The API key is missing or not valid. `error.code` is one of
        `MISSING_CREDENTIALS`, `INVALID_CREDENTIALS`, `WRONG_ENVIRONMENT`,
        `CREDENTIALS_EXPIRED`, `CREDENTIALS_REVOKED`.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
          example:
            error:
              code: MISSING_CREDENTIALS
              message: The API key is missing or not valid.
    '402':
      description: >-
        Your organization doesn't have enough credits. `error.code` is one of
        `INSUFFICIENT_CREDITS`.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
          example:
            error:
              code: INSUFFICIENT_CREDITS
              message: Your organization doesn't have enough credits.
    '403':
      description: >-
        The key may not do this. `error.code` is one of `INSUFFICIENT_SCOPE`,
        `API_ACCESS_NOT_ENABLED`, `ENGINE_NOT_ENABLED`, `ACCOUNT_INACTIVE`,
        `FORBIDDEN`.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
          example:
            error:
              code: INSUFFICIENT_SCOPE
              message: The key may not do this.
    '404':
      description: Not found, or not visible to you. `error.code` is one of `NOT_FOUND`.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
          example:
            error:
              code: NOT_FOUND
              message: Not found, or not visible to you.
    '422':
      description: >-
        The parameters or input files don't fit the engine. `error.code` is one
        of `INVALID_PARAMETERS`, `INPUT_LIMIT_EXCEEDED`.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
          example:
            error:
              code: INVALID_PARAMETERS
              message: The parameters or input files don't fit the engine.
    '500':
      description: >-
        Something went wrong on our side. `error.code` is one of
        `INTERNAL_ERROR`.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
          example:
            error:
              code: INTERNAL_ERROR
              message: Something went wrong on our side.
    '502':
      description: >-
        The engine service rejected or failed the request. `error.code` is one
        of `ENGINE_SUBMIT_FAILED`.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
          example:
            error:
              code: ENGINE_SUBMIT_FAILED
              message: The engine service rejected or failed the request.
  securitySchemes:
    bearerAuth:
      type: http
      scheme: bearer
      description: >-
        An API key from the web app (**Settings → Developer**), sent as
        `Authorization: Bearer rvl_live_…`.

````

This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.