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

# Resume a run

> Runs a finished run again from `from_phase`, reusing the output of the phases before
it; the run keeps its id. CliqHub sends the request to the run's daemon, which must be
online, and the reviewers chosen at start apply again. The daemon checks the rest (the run
is finished, the phase exists, earlier phases have stored output); if it refuses, the run
is not resumed and its history shows the request.

Daemons also call this without `from_phase` to report that a paused run continued.

Requires a realm operator (or higher) with the `teams.run` permission on the realm that owns the run given by `run_id`. A daemon's realm token (`cliq_dt_…`) from the same realm may also call it.



## OpenAPI

````yaml /openapi/hub-by-tag/hub-runs.yaml post /v1/runs/resume
openapi: 3.0.3
info:
  title: 'CliqHub API: Runs'
  version: 1.0.0
  description: >-
    Runs of a team on a daemon. People start runs (Start a run), follow them
    (Get a run, Stream

    run activity, Search run logs, Get run telemetry), and control them (Cancel
    a run, Resume a

    run, Supply run inputs). CliqHub hands each control to the run's daemon,
    which must be

    online: when it is not, the call fails with a `run/daemon_offline` or
    `run/daemon_stranded`

    conflict (cancel instead marks the run cancelled on CliqHub).


    Daemons report what happens during a run through the other endpoints here,
    with their realm

    token: Record a new run, Update run status, Complete a run, and three
    separate channels for

    run activity (the live timeline), run telemetry (token usage and traces) and
    run logs (text).
servers:
  - url: https://{host}
    variables:
      host:
        default: cliqhub.io
        description: CliqHub host
security: []
tags:
  - name: Runs
    description: >-
      Runs of a team on a daemon. People start runs (Start a run), follow them
      (Get a run, Stream

      run activity, Search run logs, Get run telemetry), and control them
      (Cancel a run, Resume a

      run, Supply run inputs). CliqHub hands each control to the run's daemon,
      which must be

      online: when it is not, the call fails with a `run/daemon_offline` or
      `run/daemon_stranded`

      conflict (cancel instead marks the run cancelled on CliqHub).


      Daemons report what happens during a run through the other endpoints here,
      with their realm

      token: Record a new run, Update run status, Complete a run, and three
      separate channels for

      run activity (the live timeline), run telemetry (token usage and traces)
      and run logs (text).
paths:
  /v1/runs/resume:
    post:
      tags:
        - Runs
      summary: Resume a run
      description: >-
        Runs a finished run again from `from_phase`, reusing the output of the
        phases before

        it; the run keeps its id. CliqHub sends the request to the run's daemon,
        which must be

        online, and the reviewers chosen at start apply again. The daemon checks
        the rest (the run

        is finished, the phase exists, earlier phases have stored output); if it
        refuses, the run

        is not resumed and its history shows the request.


        Daemons also call this without `from_phase` to report that a paused run
        continued.


        Requires a realm operator (or higher) with the `teams.run` permission on
        the realm that owns the run given by `run_id`. A daemon's realm token
        (`cliq_dt_…`) from the same realm may also call it.
      operationId: POST_v1_runs_resume
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                run_id:
                  type: string
                  minLength: 1
                  description: The run to resume.
                from_phase:
                  type: string
                  minLength: 1
                  description: >-
                    Phase to run again from. Without it, this is the daemon
                    reporting that a paused run continued.
              required:
                - run_id
            examples:
              default:
                value:
                  run_id: 0c8d7e6f-5a4b-4c3d-9e2f-1a0b9c8d7e6f
                  from_phase: fix
      responses:
        '200':
          description: >-
            `{ resumed, from_phase }` with `from_phase`; `true` for a daemon
            report.
          content:
            application/json:
              schema:
                type: object
                required:
                  - ok
                  - data
                properties:
                  ok:
                    type: boolean
                    enum:
                      - true
                    description: Always `true` on success.
                  data:
                    oneOf:
                      - $ref: '#/components/schemas/RunResumeData'
                      - type: boolean
              example:
                ok: true
                data:
                  resumed: true
                  from_phase: fix
        '401':
          description: >-
            `unauthorized`: No `Authorization` header, or the token is
            malformed, expired or revoked.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HubErr'
              examples:
                unauthorized:
                  summary: unauthorized
                  value:
                    ok: false
                    error:
                      code: unauthorized
                      message: Authentication required
        '403':
          description: >-
            `forbidden`: You can see the record but your role in its realm is
            too low or lacks the required permission.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HubErr'
              examples:
                forbidden:
                  summary: forbidden
                  value:
                    ok: false
                    error:
                      code: forbidden
                      message: You do not have access to do this
        '404':
          description: >-
            `not_found`: The run does not exist or is in a realm you cannot see
            (404 rather than 403, so its existence is not revealed).
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HubErr'
              examples:
                not_found:
                  summary: not_found
                  value:
                    ok: false
                    error:
                      code: not_found
                      message: Not found
        '409':
          description: >-
            `run/daemon_offline`: The run's daemon has not sent a heartbeat for
            over a minute. Wait for it to reconnect and try again.


            `run/daemon_stranded`: The run's daemon no longer exists or has been
            offline for over 24 hours, so the run's local state is gone. Start a
            new run.


            `run/stranded`: CliqHub cannot tell which daemon ran the run. Start
            a new run.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HubErr'
              examples:
                run/daemon_offline:
                  summary: run/daemon_offline
                  value:
                    ok: false
                    error: >-
                      Daemon 'build-01' is offline (last seen 12 minutes ago).
                      Wait for it to reconnect and try again, or start a new
                      run.
                    code: run/daemon_offline
                run/daemon_stranded:
                  summary: run/daemon_stranded
                  value:
                    ok: false
                    error: >-
                      Daemon 'build-01' has been offline for 3 days. Its local
                      state is not recoverable. Start a new run with the same
                      inputs.
                    code: run/daemon_stranded
                run/stranded:
                  summary: run/stranded
                  value:
                    ok: false
                    error: >-
                      Run '0c8d7e6f-5a4b-4c3d-9e2f-1a0b9c8d7e6f' has no daemon
                      assignment — its local state is not recoverable. Start a
                      new run with the same inputs.
                    code: run/stranded
        '422':
          description: >-
            `invalid_params`: The body fails the request schema: a required
            field is missing or a value has the wrong type or format. The
            message lists every issue as `field: problem`.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HubErr'
              examples:
                invalid_params:
                  summary: invalid_params
                  value:
                    ok: false
                    error: 'run_id: Required'
                    code: invalid_params
        '500':
          description: >-
            `internal_error`: An unexpected server fault. Retry later; if it
            persists, report it with the time of the request.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HubErr'
              examples:
                internal_error:
                  summary: internal_error
                  value:
                    ok: false
                    error: Internal server error
                    code: internal_error
      security:
        - BearerAuth: []
components:
  schemas:
    RunResumeData:
      type: object
      properties:
        resumed:
          type: boolean
          description: True when resume was queued
        from_phase:
          type: string
          description: Phase to resume from
      required:
        - resumed
        - from_phase
      additionalProperties: true
    HubErr:
      type: object
      required:
        - ok
        - error
      description: >-
        Every failure. Route-policy denials (401/403/404, and 400 when neither
        realm_id nor org_id was sent) answer `error` as `{ code, message }`;
        errors raised by the endpoint answer `error` as the message with the
        code beside it in `code`. Every error has a code. See
        [Errors](/hub-api/errors).
      properties:
        ok:
          type: boolean
          description: Always false on error
        error:
          description: The message, or `{ code, message }` for an access denial.
          oneOf:
            - type: string
            - type: object
              required:
                - code
                - message
              properties:
                code:
                  type: string
                message:
                  type: string
        code:
          type: string
          description: Stable error code of an endpoint error.
        details:
          type: object
          additionalProperties: true
          description: Structured detail, when there is some.
  securitySchemes:
    BearerAuth:
      type: http
      scheme: bearer
      bearerFormat: cliq_tok_* | cliq_dt_*
      description: >-
        User PAT (`cliq_tok_…`, including session-scoped) or realm token
        (`cliq_dt_…`).

````

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