REST API
Updated Jul 2026

Documentation › REST API Reference

REST API Reference

Reference  Programmatic access to cases, runs, suites, parameters and files.

Everything you do in the MaxTAF UI is backed by a REST API you can call yourself — to trigger a run from a pipeline, import a case, or pull results into a dashboard. Requests authenticate with an API key and a project id.

On this page

Base URL & path model

So a "run a case by name" call is POST https://mx1.maxtaf.com/api/maxtaf/cases/name/api/runs.

Scope of this reference

This documents the customer-facing endpoints. The same credential technically reaches administrative and engine-internal routes too, but those are not part of the supported public surface and may change — don't build against them.

Authentication

Send your API key and project id as headers on every request:

X-Maxtaf-Api-Key: mx-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
X-Project-Id: your_project_id
Accept: application/json

Triggering runs

Use the /api/runs variants (they take a lightweight run-details body). Runs can be synchronous (SYNC — the call blocks until the run finishes) or asynchronous (ASYNC — returns immediately; poll for the result).

Method & pathPurpose
POST /api/maxtaf/cases/name/api/runs?testName=<name>Run a case by name.
POST /api/maxtaf/cases/{caseId}/api/runsRun a case by id.
POST /api/maxtaf/suites/name/api/runs?suiteName=<name>Run a suite by name.
POST /api/maxtaf/suites/{suiteId}/api/runsRun a suite by id.
PUT /api/maxtaf/runs/{runResultId}/stopStop a run.

The request is multipart/form-data with a JSON runDetails part (and an optional dataDrivenFile). Fields:

FieldMeaningDefault
repeatRunHow many times to run.1
syncAsyncSYNC or ASYNC.ASYNC
parallelSerialMulti-run execution mode.SERIAL
dataDrivenParallelSerialData-driven row execution mode.SERIAL
runParamsExtra parameters for this run.""
runParamsTypeHow runParams merge: PRIORITY, etc.PRIORITY
parentRunIdLink this run under a parent.null

Example — run a case by name and wait for the result

curl "https://mx1.maxtaf.com/api/maxtaf/cases/name/api/runs?testName=Nightly_WO_Smoke" \
  -H "X-Maxtaf-Api-Key: mx-xxxx" \
  -H "X-Project-Id: acme_maximo_regression" \
  -H "X-User-TimeZone-Id: Europe/London" \
  -H "Accept: application/json" \
  -F 'runDetails={
        "repeatRun": "1",
        "syncAsync": "SYNC",
        "parallelSerial": "SERIAL",
        "runParams": "",
        "runParamsType": "PRIORITY",
        "parentRunId": null
      };type=application/json'

The response contains the run result (id, state, result). For a CI gate, run SYNC and check the result field, or run ASYNC and poll the run endpoint. See CI/CD Integration for a complete pipeline recipe.

Reading run results

Method & pathPurpose
GET /api/maxtaf/runsList runs (paged; filter by state, case, dates via query params).
GET /api/maxtaf/runs/{id}Get one run — its state, result, start/complete dates and duration.
GET /api/maxtaf/runs/summaryAggregate summary for a filter.
GET /api/maxtaf/runs/{parentId}/childrenChild runs of a suite run.
GET /api/maxtaf/runs/{id}/failuresFailure messages/stack traces for a run.
GET /api/maxtaf/runReport/{runResultId}The run's report.
DELETE /api/maxtaf/runs/{id}Delete a run result.

A run's result tells you pass/fail; its state tells you whether it's finished. See run states for the full list.

Cases

Method & pathPurpose
GET /api/maxtaf/casesList cases (paged; CaseFilter query params).
GET /api/maxtaf/cases/{caseId}Get one case.
GET /api/maxtaf/cases/name?caseName=<name>Get an active case by name.
POST /api/maxtaf/casesCreate a case (JSON CaseDTO body; optional ?templateName=).
PUT /api/maxtaf/cases/{caseId}Update a case.
PUT /api/maxtaf/cases/{caseId}/paramsUpdate a case's parameters.
POST /api/maxtaf/cases/{caseId}/duplicateDuplicate a case.
DELETE /api/maxtaf/cases/{caseId}Move a case to the Bin.
POST /api/maxtaf/import/cases?overwrite=false&compile=falseImport/create cases from a file (multipart importFile). This is the recorder's upload path.
GET /api/maxtaf/export/json/cases · …/xml/casesExport cases as JSON or XML.
POST /api/maxtaf/export/transfer/cases/{caseId}?projectIds[]=Copy a case into other projects.

Example — import a case file

curl -X POST "https://mx1.maxtaf.com/api/maxtaf/import/cases?overwrite=false&compile=false" \
  -H "X-Maxtaf-Api-Key: mx-xxxx" \
  -H "X-Project-Id: acme_maximo_regression" \
  -H "Accept: application/json" \
  -F "importFile=@testcase.json"
The CaseDTO shape

Key fields: name, caseType (e.g. MXML, JAVA, AI), testingFramework, platform, code, params, description, pageObject. Importing uses a versioned JSON file (version: "2" with a cases array).

Suites

Method & pathPurpose
GET /api/maxtaf/suites · …/suites/{suiteId} · …/suites/name?suiteName=List / get a suite.
POST /api/maxtaf/suites · PUT …/suites/{suiteId}Create / update a suite.
DELETE /api/maxtaf/suites/{suiteId}Move a suite to the Bin.
GET /api/maxtaf/suites/cases/{caseId}Which suites contain a case.
POST /api/maxtaf/import/suites · GET …/export/json/suitesImport / export suites (includes their cases).
POST /api/maxtaf/caseSuites/parent/{parentId}Add a case/suite to a suite.
PUT /api/maxtaf/caseSuites/{caseSuiteId}/changeSequenceReorder a suite member (controls parallelism).

Project parameters

Method & pathPurpose
GET /api/maxtaf/projectRunParams/listList all project parameters.
GET /api/maxtaf/projectRunParams/findOne?paramName=<name>Get one parameter.
PUT /api/maxtaf/projectRunParamsSet a parameter (JSON {name, value, …}).
PUT /api/maxtaf/projectRunParams/increment?paramName=<name>Increment a numeric parameter.
DELETE /api/maxtaf/projectRunParams?paramName=<name>Delete a parameter.
POST /api/maxtaf/import/projectParams · GET …/export/json/projectParamsImport / export parameters.
Reserved mx.* parameters

Parameters whose names start with mx. are reserved/standard and can't be freely created through this API — set your own values, and use custom names for your own variables. See the Parameter reference.

Files (project file system)

Under the /api/storage prefix:

Method & pathPurpose
GET /api/storage/files/name?directory=<dir>List file names in a directory.
GET /api/storage/files?pathWithName=<path>Read a file.
GET /api/storage/files/download?pathsWithNames=<…>Download files.
POST /api/storage/files?pathWithName=&contents=&overwrite=falseCreate a file.
PUT /api/storage/files?pathWithName=<path>Update a file (raw body).
POST /api/storage/files/uploadUpload a file (multipart importFile + uploadPath). Useful for data-driven CSVs.
POST /api/storage/files/zip · …/files/unzipZip / unzip.
DELETE /api/storage/files?pathWithName=<path>Delete a file.
POST /api/storage/folders?path=&folderName=&overwrite=falseCreate a folder.
Related

CI/CD Integration shows these endpoints in a full pipeline. For data handling and key hygiene, see Security & Compliance.