List stored artifact and document metadata
List metadata for existing artifacts and documents in a project. These reads
do not return file bytes or upload/download URLs, and do not change stored files.
1. Set up authentication and project context
Use your tenant host, https://<tenant>.katalon.io, without a trailing slash.
Authenticate with HTTP Basic: leave the username empty and use your Katalon API
key as the password. See the
authentication reference.
Your key's user must have access to the account and project. These listing
operations do not require an additional storage-specific permission.
Send x-account-id (account UUID) and x-project-id (numeric project ID) on every
request below. If you also send x-organization-id, it must match the project's
organization. An asset id returned in the list is not a project or test-case ID.
Set KATALON_API_HOST, KATALON_API_KEY, KATALON_ACCOUNT_ID, and
KATALON_PROJECT_ID in your environment. Keep the API key in a secret store and
do not enable shell tracing (set -x). This Bash helper passes the key through
standard input rather than process arguments. Escape " and \ as \" and
\\ if they occur in a key, for curl's configuration format.
katalon_storage_request() {
: "${KATALON_API_KEY:?Missing API key}"
printf 'user = ":%s"\n' "${KATALON_API_KEY}" |
curl --config - --silent --show-error --fail-with-body \
--header "Accept: application/json" \
--header "x-account-id: ${KATALON_ACCOUNT_ID:?Missing account UUID}" \
--header "x-project-id: ${KATALON_PROJECT_ID:?Missing project ID}" \
"$@"
}2. List artifact or document metadata
List stored artifact metadata:
katalon_storage_request \
"${KATALON_API_HOST:?Missing tenant host}/v2/storage/artifacts?page=0&size=50"List stored document metadata:
katalon_storage_request \
"${KATALON_API_HOST:?Missing tenant host}/v2/storage/documents?page=0&size=50"Both return a JSON page with totalItems, nextPageToken, items, and size.
The page keys are camelCase; item keys such as account_id, project_id,
mime_type, is_public, created_at, and created_by use snake_case.
Items include id, kind, filename, size, status, and optional arbitrary
metadata. Creator, metadata, MIME type, size, and project fields can be null
where no value is stored. Creation timestamps are expressed in UTC (zero offset).
Records are ordered newest first by creation time and exclude archived records.
PENDING and FAILED records can appear alongside COMPLETED records. Do not
use size or the public flag as an indication that bytes are ready or accessible.
3. Filter and read subsequent pages
Use an optional RSQL query to narrow results. For example, request only
completed documents, URL-encoding the query once:
katalon_storage_request --get \
--data-urlencode 'query=status==COMPLETED' \
--data-urlencode 'page=0' --data-urlencode 'size=50' \
"${KATALON_API_HOST:?Missing tenant host}/v2/storage/documents"Other supported filters include MIME type (mime_type==application/pdf),
filename, creation-time ranges, and creator. Snake-case selectors are converted
to the corresponding entity field, for example mime_type to mimeType.
Filters do not expand the account,
project, or file kind selected by the request. A blank query adds no filter.
page defaults to zero; negative values are treated as zero. size defaults to
50 and must be positive; larger requested sizes are reduced to 50. There is no
caller-selected sort parameter.
To continue, convert nextPageToken to an integer and send it as page with the
same filters and size. The token is returned even on the last or an empty
page. Stop when items is empty, or when the current page index multiplied by
the effective size, plus the returned item count, reaches totalItems.
Records may change between requests; this is not a frozen snapshot.
Troubleshooting
- Check account and project context if access is denied. Document listing
requires project context, and all requests in this guide send it explicitly. - Check the response status and message on invalid filters or parameters; do
not assume authentication failures and storage errors have identical bodies. - An empty page is a successful result, not a missing file error. This guide
lists metadata only; it is not an upload, file transfer, or download workflow.
Updated about 8 hours ago