List live exports (internal)

Add MCP server to your AI tool

Allow AI tools and LLMs to interact with the API documentation portal through MCP.

MCP server URL

https://docs.usehearsay.com/mcp

Standard setup for AI tools providing an mcp.json file

mcp.json
{
  "integrations MCP server": {
    "url": "https://docs.usehearsay.com/mcp"
  }
}

Close
GET /admin/exports/live

Lists exports for diagnosing stalls, earliest started first, with progress counters, time since the last progress and live queue state. By default it shows running exports, cancellations from the last 15 minutes and, while queue operations are on, exports whose queue job an admin removed in the last hour; status, startedBefore, caseId and organizationId narrow it, and limit (default 25, at most 100) and skip page it. Queue state or case names that cannot be loaded come back as null instead of failing the request. Super admin only.

Query parameters

  • status array[string]

    One status or several. Defaults to in-progress AND cancelled (the "live" view, which keeps a just-cancelled export visible) when omitted — see ExportAdminService.

    Values are not-started, inprogress, completed, failed, or cancelled.

  • startedBefore string(date-time)

    Only exports started before this instant (ISO 8601).

  • caseId string

    Id of the case

  • organizationId string

    Id of the organization

  • skip number

    Maximum value is 10000. Default value is 0.

  • limit number

    Maximum value is 100. Default value is 25.

Responses

  • 200 application/json
    Hide response attributes Show response attributes object
    • data object Required
      Hide data attributes Show data attributes object
      • rows array[object] Required
        Hide rows attributes Show rows attributes object
        • exportId string Required
        • caseId string | null Required
        • caseName string | null Required
        • organizationId string | null Required
        • requestedBy string | null Required
        • status string Required
        • type string Required
        • source string Required
        • exportStartedAt string(date-time) | null Required
        • lastProgressAt string(date-time) | null Required
        • heartbeatAgeMs number | null Required

          Milliseconds since lastProgressAt, or null if never set.

        • conversationsProcessed number Required
        • totalConversations number Required
        • messagesProcessed number Required
        • totalMessages number Required
        • progressUnreliable boolean Required

          True when a stored progress counter exceeds its own total — a known corruption in rows pre-dating the Phase 1 counter reset. The raw counters are still reported as-is; this only flags them.

        • errorMessage string | null Required
        • jobId string | null Required

          The chain id shared by every chunk of a multi-job export (uuidV4). NOT a Bull job id — see queue.bullJobId for that. null on an export that was never chunked.

        • jobIndex number | null Required

          0-based position of this row within its jobId chain.

        • totalJobs number Required

          Total chunks in this row's jobId chain; 1 when unchunked.

        • queue object Required
          Hide queue attributes Show queue attributes object
          • bullJobId string Required
          • state string Required

            Values are waiting, active, delayed, or paused.

          • attemptsMade number Required
        • dequeuedAt string(date-time) | null Required

          When an admin's queue operation MAY have left this export with no queue job — DELETE /admin/exports/:id/job, or a POST /admin/exports/:id/priority that did not end with the job back in the queue. Written before the queue is touched, so an operation interrupted midway still leaves a row this view can explain, and dropped again once the job provably survived. A record of what was done, not of what is true now — read awaitingRequeue for that.

        • awaitingRequeue boolean Required

          True when an admin's queue operation removed this export's queue job and nothing has put one back: it will not run until it is re-run or resumed. Requires ALL THREE of the dequeue stamp, no live queue job, and a not-started status — so an export caught mid-reprioritise (a remove + re-add, briefly jobless) is not reported as waiting for an operator, nor is one that has since been cancelled or picked up, while one whose re-add failed outright is.

      • total number Required

        Total rows matching the filter, pre-page.

    • statusCode number Required
    • timestamp string(date-time) Required
GET /admin/exports/live
curl \
 --request GET 'http://api.example.com/admin/exports/live' \
 --header "Authorization: Bearer $ACCESS_TOKEN"
Response examples (200)
{
  "data": {
    "rows": [
      {
        "exportId": "65a1b2c3d4e5f6a7b8c9d0f1",
        "caseId": "65a1b2c3d4e5f6a7b8c9d0e2",
        "caseName": "Doe v. Roe",
        "organizationId": "65a1b2c3d4e5f6a7b8c9d0e3",
        "requestedBy": "65a1b2c3d4e5f6a7b8c9d0e4",
        "status": "inprogress",
        "type": "pdf",
        "source": "conversation",
        "exportStartedAt": "2026-01-15T10:15:00.000Z",
        "lastProgressAt": "2026-01-15T10:20:00.000Z",
        "heartbeatAgeMs": 45000,
        "conversationsProcessed": 12,
        "totalConversations": 40,
        "messagesProcessed": 3100,
        "totalMessages": 9800,
        "progressUnreliable": false,
        "errorMessage": "string",
        "jobId": "string",
        "jobIndex": 42.0,
        "totalJobs": 1,
        "queue": {
          "bullJobId": "1842",
          "state": "active",
          "attemptsMade": 0
        },
        "dequeuedAt": "2026-05-04T09:42:00Z",
        "awaitingRequeue": false
      }
    ],
    "total": 1
  },
  "statusCode": 200,
  "timestamp": "2026-01-15T10:15:00.000Z"
}