---
title: "Get flow metadata"
method: GET
path: "/flows/{id}/metadata"
tags: ["Flow"]
---

# Get flow metadata

`GET /flows/{id}/metadata`

Get the unversioned metadata of an existing flow

## Path parameters

- `id` string, required

## Response `200`

The flow metadata

- FlowMetadata
  - `id` string — Unique identifier
  - `created_by_id` string — The ID of the user who created this test
  - `last_updated_time` integer — Time the test was last updated in epoch milliseconds
  - `last_updated_by_id` string — The ID of the user who last updated this test
  - `created_time` integer — Time the test was created in epoch milliseconds
  - `revision_history` string — Serialized graph describing the test's version history. Managed by mabl API only.
  - `version_tags` object — Mapping of version tags to version numbers that the tag is currently applied to
  - `latest_version` integer — The latest numeric version of this test
  - `organization_id` string — (deprecated) The ID of the organization that this journey belongs to
  - `workspace_id` string — Workspace Id
  - `flow_type` 'validate_page' | 'login' | 'verify_url' | 'mablscript' | 'check_links' | 'visual_page_validation' | 'api' | 'mobile' — the type of flow
  - `reusable` boolean — Indicates whether this can be used by multiple tests
  - `name` string — The display name of the flow. Required (non-blank) for reusable flows. When absent on older reusable data, the API serves the description value here; non-reusable flows are never given a name they did not have.
  - `description` string — Usage notes and considerations for the flow. Historically this field held the flow's display name; that role has moved to `name`. To rename a flow, write `name` — writing this field edits the description only. When a flow has no description, the API serves the flow's name here for backwards compatibility.
  - `labels` Label[] — User provided labels
    - `name` string, required — name
    - `color` string — color
  - `source_control_tags` object — mapping of tags to version numbers the tag is currently applied to
  - `import_source_id` 'postman' | 'selenium_node_proxy' | 'selenium_java_agent'
  - `import_source_version` string — Version of the import tool used to import this flow
  - `mobile_platform` 'android' | 'ios' — The mobile platform associated with this object
  - `minimize_execution_overhead` boolean — When enabled, mabl will not capture screenshots, network logs, DOM snapshots, or other test artifacts in order to report the most accurate flow execution time
  - `reuse_browser_state_in_plan_run` boolean — Shares the browser state this flow produces with the rest of a cloud plan run. Tests that reach the flow before any state has been stored each run it and store their own result. The tests in a plan stage start together, so that is the common case; a test that starts once state already exists for the same application and credentials begins from that stored state instead. To sign in once per plan run, put a test that runs this flow in an earlier plan stage, against the same application URL and with the same credentials. Stages run in order, so the tests of later stages all start from the state that test stored. A marked flow still runs every time. It is not skipped, so it must decide for itself whether there is anything left to do — a login flow, for example, should wrap its sign-in steps in a condition that only holds when the login page is actually showing. A marked flow that unconditionally repeats its work will do so on a browser that already carries the session. The stored state lasts only for the plan run. Has no effect on local CLI runs.

## Other responses

- `400` — Invalid or missing parameter
- `401` — User not authenticated
- `403` — User not authorized
- `404` — Entity not found
- `default` — Unknown error

## Changes

- **2026-08-29** `213a66c2bc25` — 1 info
  - added the optional property `allOf[subschema #2]/reuse_browser_state_in_plan_run` to the response with the `200` status
- **2026-08-26** `449a100bcd1b` — 1 info
  - added the optional property `allOf[subschema #2]/name` to the response with the `200` status

[Change history](https://skmtc.dev/mabl/apis/mabl-api/changes/flows/:id/metadata/get.md)

---

[API](https://skmtc.dev/mabl/apis/mabl-api.md) · [All operations](https://skmtc.dev/mabl/apis/mabl-api/llms.txt) · [OpenAPI document](https://skmtc-service-production.skmtc.workers.dev/v1/apis/mabl/mabl-api/revisions/213a66c2bc25/schema)
