api-referenceGET
GEThttps://analytics.flowsery.com/analytics/api/v1/issues

List the issues Flowsery's AI detected while analyzing session recordings, deduplicated across sessions and ranked by severity.

Bearer Token (workspace token or website API key)

Workspace Tokens Need a Website Selector

Workspace API tokens can access every website in the workspace. Pass either <code>websiteId</code> or <code>domain</code> so Flowsery knows which website to query or mutate. Website API keys are already scoped to one website, so the selector can be omitted.

Website Selector

ParameterTypeDescription
websiteIdstringWebsite ID to use with a workspace API token. Omit when authenticating with a website API key.
domainstringWebsite domain to use with a workspace API token when websiteId is not provided. Omit when authenticating with a website API key.

Suspended Issues Are Hidden by Default

The list excludes suspended issues unless you request them explicitly with <code>status=suspended</code>.

Optional Parameters

ParameterTypeDescription
statusstringFilter by workflow status: open, in_progress, resolved, or suspended. Omit to receive every status except suspended.
severitystringFilter by severity: low, medium, high, or critical.
searchstringText search matched against issue titles and descriptions. Max 200 characters.
sortstringseverity (default) orders the most severe issues first; recency orders by lastSeenAt, newest first.
limitnumberMaximum issues to return (default: 100, max: 1000).
offsetnumberRows to skip for pagination (min 0, default: 0).

Response Fields

ParameterTypeDescription
idstringUnique issue identifier. Pass it as issueId to the detail and update endpoints.
websiteIdstringWebsite the issue belongs to.
titlestringShort AI-generated summary of the problem.
descriptionstringAI-generated explanation of what goes wrong and how it affects visitors.
severitystringAI-assigned impact rating: low, medium, high, or critical.
statusstringWorkflow status: open, in_progress, resolved, or suspended.
sessionsCountnumberHow many analyzed sessions hit this issue.
firstSeenAtstringWhen the issue was first detected in a recording.
lastSeenAtstringMost recent recording in which the issue appeared.
stepsToReplicatearrayOrdered reproduction steps derived from the recordings where the issue occurred.
sampleRecordingIdstringRecording that best demonstrates the issue.
externalTicketProvider / externalTicketKey / externalTicketUrlstring | nullLinked ticket in an external tracker, or null when no ticket is linked.
countsobjectIssue totals per status (open, inProgress, resolved) for the selected website, independent of the pagination window.
List all issues
curl --request GET \
  --url https://analytics.flowsery.com/analytics/api/v1/issues \
  --header 'Authorization: Bearer <api-key>'
Filter open critical issues
curl --request GET \
  --url "https://analytics.flowsery.com/analytics/api/v1/issues?status=open&severity=critical&search=checkout&sort=recency" \
  --header 'Authorization: Bearer <api-key>'
200
{
  "status": "success",
  "data": [
    {
      "id": "iss_64f1c2a9e8b4d90012ab34cd",
      "websiteId": "flid_abc123",
      "title": "Checkout button unresponsive on mobile Safari",
      "description": "Tapping the checkout button produces no navigation or feedback. Visitors tap repeatedly and abandon the cart.",
      "severity": "critical",
      "status": "open",
      "sessionsCount": 14,
      "firstSeenAt": "2026-08-02T09:14:31.000Z",
      "lastSeenAt": "2026-08-27T18:40:05.000Z",
      "stepsToReplicate": [
        "Open the store on an iPhone in Safari",
        "Add any product to the cart",
        "Tap the checkout button on the cart page"
      ],
      "sampleRecordingId": "rec_9f8e7d6c5b4a",
      "externalTicketProvider": "linear",
      "externalTicketKey": "SHOP-142",
      "externalTicketUrl": "https://linear.app/acme/issue/SHOP-142"
    },
    {
      "id": "iss_64f1c2a9e8b4d90012ab34ce",
      "websiteId": "flid_abc123",
      "title": "Pricing table overflows on narrow viewports",
      "description": "The pricing table renders outside the viewport below 375px, hiding the yearly plan column.",
      "severity": "medium",
      "status": "in_progress",
      "sessionsCount": 6,
      "firstSeenAt": "2026-08-10T12:03:12.000Z",
      "lastSeenAt": "2026-08-25T07:55:48.000Z",
      "stepsToReplicate": [
        "Open /pricing on a viewport narrower than 375px",
        "Scroll horizontally inside the pricing table"
      ],
      "sampleRecordingId": "rec_1a2b3c4d5e6f",
      "externalTicketProvider": null,
      "externalTicketKey": null,
      "externalTicketUrl": null
    }
  ],
  "counts": {
    "open": 5,
    "inProgress": 2,
    "resolved": 11
  },
  "pagination": {
    "limit": 100,
    "offset": 0,
    "total": 7
  }
}