# Share and export results

Source: https://docs.qualflare.com/docs/runs/share-results · Last updated: 2026-10-27

Share Qualflare test results with a public report, Slack or webhooks, and get launches out as JSON or CTRF with the REST API, the qf CLI or MCP.

To share test results from Qualflare, publish a public report (Open Source plan; the Editor role or higher in the workspace), post launches to Slack or a webhook, or read them as JSON or CTRF with the REST API, `qf` or MCP.

## Before you begin

* **Public report:** a workspace on the [Open Source plan](https://docs.qualflare.com/docs/open-source) and (requires the Editor role or higher in the workspace). In the web app today, you also need the Editor role or higher in this project.
* **API:** a project [access token](https://docs.qualflare.com/docs/api/access-tokens). Reading results does not need **Allow writes**.

## Publish a public report

Publish a public report to share launch results with people outside your workspace.

> **Warning:** A public report shows only launches uploaded while it is published, for example with `qf <identifier> collect`. Launches from before you published don't appear, and neither do launches you start in the app. Unpublishing hides every run on the report for good: if you publish again, the report starts empty and shows only new uploads. Anyone can open it without signing in, and search engines can index its launch list.

### Step 1: Open the project settings

In your project, open **Settings**.

### Step 2: Turn on Public report

On the **General** page, find **Public report** and turn on its switch.

### Step 3: Confirm and publish

Type the project identifier to confirm, then click **Publish Report**.

You should see the report link, `https://reports.qualflare.com/p/<project-identifier>/launches`, under **Public report**. Share that link.

After you publish, the same section shows a badge and a banner you can embed in a README. See [Publishing a report](https://docs.qualflare.com/docs/open-source/publishing).

To take the report offline, turn the switch off. If the workspace has left the Open Source plan, the section shows an **Unpublish** button instead, so you can always unpublish. Publishing and unpublishing need a workspace role of Editor or higher. In the web app today, you also need the Editor role or higher in this project. See [Public report](https://docs.qualflare.com/docs/administration/project-settings#public-report).

## Post results to Slack or a webhook

To post results to a team channel, connect an integration such as [Slack](https://docs.qualflare.com/docs/integrations/slack). People who work in Qualflare can open the launch directly. Each upload can post to Slack and send the `launch.completed` [webhook](https://docs.qualflare.com/docs/integrations/webhooks); a manual launch sends neither.

## Get launches as JSON or CTRF

The app has no CSV, JSON or PDF export for launches. To get launches as JSON or CTRF, or to analyze results in other tools, use one of these options:

| Option               | What you get                                                                                                                                                                                   |
| -------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| **REST API**         | The API returns a launch as JSON or as a CTRF report. Authenticate with a project access token. See [Call the REST API](https://docs.qualflare.com/docs/runs/share-results#api-access). |
| **CLI**              | `qf myapp launches list` and `qf myapp launch get <seq>` print launches as JSON. See [Launches commands](https://docs.qualflare.com/docs/cli/read-commands#launches).                          |
| **MCP**              | AI assistants can read launches with the `list_launches` and `get_launch` tools. See [MCP](https://docs.qualflare.com/docs/api/mcp).                                                           |
| **Failure Clusters** | **Export CSV** on the **Failure Clusters** page downloads your clusters as a CSV file. See [Failure Clusters](https://docs.qualflare.com/docs/ai/failure-clusters).                            |
| **Public report**    | Open-source projects can share read-only launch history. See [Publish a public report](https://docs.qualflare.com/docs/runs/share-results#publish-a-public-report).                     |

### Call the REST API

For programmatic access to test results, use the Qualflare REST API. Requests use a project access token, and the token decides which project you read from:

```javascript
// Fetch launch #123 of the token's project
const response = await fetch('https://api.qualflare.com/api/v1/launch/123', {
  headers: {
    'Authorization': `Bearer ${process.env.QF_TOKEN}`
  }
});
const launch = await response.json();
```

For the same launch as a CTRF JSON report, request:

```text
https://api.qualflare.com/api/v1/launch/123/ctrf
```

From a terminal, `qf myapp launch get 123` prints the launch as JSON.

Create an access token in your project under **Settings** > **Access Tokens**. Reading results does not need **Allow writes**. See [Access Tokens](https://docs.qualflare.com/docs/api/access-tokens).

For scripts and other tools:

* Use `qf myapp launches list --environment staging` in scripts to pull recent launches for one environment
* Use the CTRF endpoint to feed results into tools that read CTRF

## Report to stakeholders

Report to stakeholders with the view each audience needs:

* **Release readiness**: lead with the Success Rate and the open failures of the release's launches
* **Developers**: send a direct link to the launch in Qualflare
* **Product managers**: share the [Overview](https://docs.qualflare.com/docs/analytics) page with the time range and environment that matter to them
* **Flaky tests**: call them out explicitly, and say what is being done about them
* **Be transparent**: share both good and bad results, and explain why quality is improving or regressing

## Troubleshoot

* **The public report is empty**: it shows only launches uploaded while it is published. Launches from before you published, and launches you start in the app, never appear. If the report was unpublished and published again, it starts empty and shows only new uploads.
* **A manual run didn't post to Slack**: only uploads send Slack messages and webhooks.

## Next steps

* [Analyze launch results](https://docs.qualflare.com/docs/runs/analyze-results): read a launch before you share it.
* [Launches](https://docs.qualflare.com/docs/runs/launches): every status, field and tab of a launch.
* [MCP server reference](https://docs.qualflare.com/docs/api/mcp-reference): the launch tools AI assistants can call.
