Read manual execution evidence

Find an existing manual run, inspect its saved test cases, and read its activity
evidence. These four GET operations do not create runs, submit results, or
control sessions. Reading saved content can queue its background preparation
when it is not ready yet.

1. Authenticate in a project

Use https://<tenant>.katalon.io with no trailing slash. Authenticate using HTTP
Basic with an empty username and a Katalon API key as the password. Your key's
user needs project access and TestRun:Read. Send x-project-id on every request.
An optional x-account-id is an account UUID, not a numeric account ID; it
must match the project's owning account. An optional x-organization-id must
also match the project's parent organization.

Set KATALON_API_HOST, KATALON_PROJECT_ID, and KATALON_API_KEY from your
environment or secret store. Do not enable shell tracing. This Bash helper
passes credentials on standard input rather than curl's process arguments.
If a key contains " or \, escape those characters as \" and \\ for curl's
configuration format.

katalon_request() {
  : "${KATALON_API_KEY:?Missing API key}"
  printf 'user = ":%s"\n' "${KATALON_API_KEY}" |
  curl --config - --silent --show-error --fail-with-body \
    --header "x-project-id: ${KATALON_PROJECT_ID:?Missing project ID}" \
    "$@"
}

2. Find an existing manual run

Find manual executions
by the run's displayed order in this project. Replace 1 with that order:

katalon_request --get "${KATALON_API_HOST}/v2/manual-test/executions" \
  --data-urlencode 'query=order==1' \
  --data-urlencode 'pageToken=0' --data-urlencode 'size=10'

The response has items, totalItems, size, and nextPageToken, without a
data wrapper. In each item, id and executionId are the manual execution
ID
. Save that value as MANUAL_EXECUTION_ID. The separate
externalExecutionId is the TestOps run ID: retain it for run-level activity
filtering, but do not use it in the execution-local paths below.

Page tokens are zero-based page indexes written as strings. The default size
is 10; the maximum effective size is 50. nextPageToken is returned even on the
last page, so stop based on the item count and totalItems, not token presence.
No default sort order is guaranteed. You can request comma-separated entity
fields with sort, prefixing a field with - for descending order.

3. Read saved case occurrences and content

List execution-local test cases:

katalon_request "${KATALON_API_HOST}/v2/manual-test/executions/${MANUAL_EXECUTION_ID:?Missing manual execution ID}/test-cases"

This response is an array, not a page. It contains suite-linked occurrences;
suite-less occurrences are not included. Choose the top-level item's id as
EXECUTION_TEST_CASE_ID. Its nested testCase.id is the Test Management case ID,
not the occurrence ID. Nested testSuite.id is the Test Management suite ID.

Read saved content:

katalon_request "${KATALON_API_HOST}/v2/manual-test/executions/${MANUAL_EXECUTION_ID:?Missing manual execution ID}/test-cases/${EXECUTION_TEST_CASE_ID:?Missing occurrence ID}/content"

testCaseDetails describes the case version used in the run, and testCaseFlow
contains its saved steps when available. This is not the latest editable case.
testCaseDetails.testProject.id identifies the repository, not the project
header. A 409 with MANUAL_CONTENT_NOT_READY means the content is still being
prepared; use bounded retries with a delay. Do not retry unavailable content
indefinitely or substitute the latest editable case. When content is missing
but can be prepared, the GET can queue background preparation before returning
409.

4. Read run-level comments

Find activity evidence.
For a run-level comment, use source type EXECUTION and the external TestOps
run ID from step 2, saved as TESTOPS_EXECUTION_ID:

katalon_request --get "${KATALON_API_HOST}/v2/manual-test/activities" \
  --data-urlencode "query=sourceType==EXECUTION;sourceId==${TESTOPS_EXECUTION_ID:?Missing external TestOps run ID};activityType==COMMENT" \
  --data-urlencode 'pageToken=0' --data-urlencode 'size=10'

For a manual result whose ID you already have, use sourceType==TEST_CASE_RESULT
and that result's mtResultId as sourceId; do not substitute the test-case ID.
For version audit of a case occurrence, the source type is EXECUTION_TEST_CASE
and sourceId is the occurrence ID. Always filter source type and ID together.
The returned activity does not include sourceType, so retain that context.

Activity data varies by activityType: comments can include attachment metadata,
step activity can include testStepId, and status activity can include
fromData and toData. Responses may contain additional fields. Handle comments,
names, screenshots, and other evidence as sensitive project information. This
reference does not offer attachment downloads or activity writes.


Did this page help you?