Modify Data
POST /api/startTest
Start a new test run on the selected API collections or endpoints.
POST /api/stopTest
Stop an ongoing test run before it completes.
POST /api/importInBurp
Paginate through sample data for a collection and return Burp Suite-compatible HTTP request/response strings.
POST /api/uploadRecordedFlow
Upload and optionally execute a recorded login flow to extract an authentication token.
You can get this from Settings > Integrations > Akto APls > Generate token
API_KEY68b841d0828b657eb835f30cdescription
POST /api/stopTest HTTP/1.1
Host: app.akto.io
x-api-key: API_KEY
Content-Type: application/json
Accept: */*
Content-Length: 46
{
"testingRunHexId": "68b841d0828b657eb835f30c"
}description
{
"metadata": "null",
"continuousTesting": false,
"allTestsCountMap": "{}",
"sendMsTeamsAlert": false,
"testRunByTestEditor": false,
"source": "null",
"testRunIds": "null",
"selectedTestRunResultHexIds": "null",
"issueSummaryInfo": "SUCCESS",
"testingRunResult": "null",
"testCountMap": "null",
"limit": 0,
"testingRunHexId": "68b841d0828b657eb835f30c",
"testRoleId": "null",
"testName": "null",
"testingRunResultSummaryHexId": "null",
"selectedSlackWebhook": 0,
"maxConcurrentRequests": 0,
"testingRuns": "null",
"metadataFilters": "null",
"latestTestingRunResultSummaries": "null",
"sortKey": "null",
"sortOrder": 0,
"endTimestamp": 0,
"issuesDescriptionMap": "null",
"currentTestStateStatus": "SUCCESS",
"testingRunResults": "null",
"testingRunResultSummaries": "null",
"runIssues": "null",
"skip": 0,
"issuesSummaryInfoMap": {
"REPLACE_CSRF_CUSTOM_1715683047": 1,
"SERVER_VERSION_EXPOSED_VIA_RESPONSE_HEADER": 21,
"SENSITIVE_DATA_EXPOSURE_EMAIL": 11,
"DESCRIPTIVE_ERROR_MESSAGE_INVALID_PAYLOAD": 6,
"REMOVE_TOKENS": 5,
"REPLACE_CSRF_CUSTOM_1715683043": 1,
"FILE_INCLUSION_NEW_PARAM": 1,
"TIME_BASED_NOSQLI_JSON_BODY_REPLACE": 1,
"PORT_SCANNING": 4,
"KUBERNETES_EXPOSED": 9,
"REPLACE_CSRF_CUSTOM_1715683090": 1,
"BYPASS_INPUT_VALIDATION_WITH_NULL_VALUES": 1,
"PAGINATION_MISCONFIGURATION": 1,
"PAYLOAD_ALL_KEYS_INVALID_VALUES": 4,
"BOOLEAN_BASED_SQLI": 1,
"LFI_IN_HEADERS_LINUX": 2,
"SENSITIVE_DATA_EXPOSURE_IP_ADDRESS": 4,
"CHECK_GENERAL_GROUP_CHANGES_OTHER_USERS": 3,
"USER_ENUM_RESPONSE_CONTENT": 1,
"REPLACE_CSRF": 10,
"BYPASS_OTP_RATE_LIMIT": 1,
"CHECK_FL_BOLA": 25,
"MISCONFIGURED_X_FRAME_OPTIONS_HEADER": 2,
"NOSQLI_ERROR_BASED_PARAM_MONGO_SPECIAL_CHARACTERS": 6,
"CUSTOM_GFB": 13,
"DOS_ATTACH_FILE_IN_BODY": 2,
"USER_ENUM_REDIRECT_PAGE": 1,
"UNWANTED_RESPONSE_HEADERS": 2,
"SERVER_VERSION_EXPOSED_IN_AN_INVALID_REQUEST": 2,
"PAYLOAD_KEYS_INVALID_VALUES": 1,
"HEADER_ALL_KEYS_INVALID_VALUES": 5,
"HTTP_RESPONSE_SPLITTING": 1,
"NOSQLI_ERROR_BASED_REPLACE_BODY_MONGO_CUSTOM": 1,
"JWT_INVALID_SIGNATURE": 1,
"FETCH_SENSITIVE_FILES": 2,
"DEFAULT_LOGIN_CREDENTIALS": 2,
"OVERWRITING_EXISTING_RESOURCES_BY_MANIPULATING_IDENTIFIERS": 3,
"AUTH_BYPASS_MULTI_CREDENTIAL_SINGLE_PARAM": 1,
"MANIPULATE_NUMBER_DATA_TYPE": 3,
"UNION_DATA_TYPE_BASED_SQLI_GET": 1,
"CHECK_GENERAL_GROUP_CHANGES": 1,
"SWAGGER_API_EXPOSURE": 3,
"STANDARD_SSRF": 2,
"REPLACE_AUTH_TOKEN_CACHING": 7,
"REMOVE_CSRF": 11,
"REMOVE_TOKENS_NEW": 3,
"AUTH_BYPASS_SQL_INJECTION": 1,
"REPLACE_AUTH_TOKEN": 3,
"MUST_CONTAIN_RESPONSE_HEADERS": 5,
"JWT_NONE_ALGO": 16,
"SENSITIVE_DATA_EXPOSURE_JWT": 2
},
"testingRunsCount": 0,
"cleanUpTestingResources": false,
"jiraIssuesMapForResults": "null",
"cicdTests": [
{
"date": "2024-05-12T13:40:11",
"timestamp": 1715521211
}
],
"authMechanism": "null",
"testRunsByUser": false,
"currentTestsStatus": {
"totalTestsCompleted": 0,
"testRunsScheduled": 0,
"testRunsQueued": 0
},
"latestSummaryIds": "null",
"miniTestingServiceNames": "null",
"usageTestRuns": "SUCCESS",
"allTestsCountsRanges": "null",
"sampleDataVsCurlMap": "null",
"selectedTests": "null",
"filters": "null",
"testingRunType": "null",
"recurringDaily": false,
"overriddenTestAppUrl": "null",
"workflowTest": "null",
"testingRun": "null",
"misConfiguredTestsCount": 0,
"testRunTime": 0,
"startTimestamp": 0,
"errorEnums": "{}",
"triggeredBy": "null"
}You can get this from Settings > Integrations > Akto APls > Generate token
API_KEYnullfalsefalseID_WRAP_ARRAY_OF_PARAMS_JSON_BODY_INTEGER_VALTESTING_UI-1CUSTOMfalsefalsefalsefalse-11756905566falsejuice_shop_demo_BFLA_BOLA_NO_AUTHdescription
POST /api/startTest HTTP/1.1
Host: app.akto.io
x-api-key: API_KEY
Content-Type: application/json
Accept: */*
Content-Length: 596
{
"autoTicketingDetails": "null",
"continuousTesting": false,
"sendMsTeamsAlert": false,
"selectedTests": [
"ID_WRAP_ARRAY_OF_PARAMS_JSON_BODY_INTEGER_VAL"
],
"apiInfoKeyList": [
{
"method": "POST",
"apiCollectionId": 1712830390,
"url": "https://juiceshop.akto.io/rest/products/reviews"
}
],
"source": "TESTING_UI",
"maxConcurrentRequests": -1,
"type": "CUSTOM",
"cleanUpTestingResources": false,
"recurringDaily": false,
"overriddenTestAppUrl": "",
"sendSlackAlert": false,
"recurringWeekly": false,
"testRunTime": -1,
"startTimestamp": 1756905566,
"recurringMonthly": false,
"testRoleId": "",
"testName": "juice_shop_demo_BFLA_BOLA_NO_AUTH"
}description
{
"metadata": "null",
"continuousTesting": false,
"sendMsTeamsAlert": false,
"allTestsCountMap": "{}",
"testRunByTestEditor": false,
"source": "TESTING_UI",
"testRunIds": "null",
"selectedTestRunResultHexIds": "null",
"issueSummaryInfo": "SUCCESS",
"testingRunResult": "null",
"testCountMap": "null",
"limit": 0,
"testingRunHexId": "68b840be828b657eb835e928",
"testRoleId": "",
"testName": "juice_shop_demo_BFLA_BOLA_NO_AUTH",
"testingRunResultSummaryHexId": "null",
"selectedSlackWebhook": 0,
"maxConcurrentRequests": -1,
"latestTestingRunResultSummaries": "{}",
"metadataFilters": "null",
"sortKey": "scheduleTimestamp",
"sortOrder": 0,
"endTimestamp": 0,
"issuesDescriptionMap": "null",
"currentTestStateStatus": "SUCCESS",
"testingRunResults": "null",
"testingRunResultSummaries": "null",
"runIssues": "null",
"skip": 0,
"issuesSummaryInfoMap": {
"LLM_GLITCH_4": 1,
"LLM_GLITCH_5": 1,
"LLM_GLITCH_6": 1,
"LLM_MALWARE_EVADE_SWIFT": 1,
"AUTH_BYPASS_LOCKED_ACCOUNT_TOKEN_ROLE": 1,
"LLM_GLITCH_1": 1,
"REPLACE_TOKENS_CUSTOM_1712573847": 7,
"LLM_GLITCH_2": 1,
"DESCRIPTIVE_ERROR_MESSAGE_INVALID_PAYLOAD": 3,
"PROMPT_LEAK_INJECTION": 1,
"REMOVE_TOKENS": 5,
"LLM_MALWARE_PAYLOAD_SWIFT": 1,
"OPEN_REDIRECT_SUBDOMAIN_WHITELIST": 1,
"OPEN_REDIRECT": 1,
"LLM_MISLEADING": 1,
"WORKSPACE_DATA_VULN": 11,
"JWT_APPEND_SQL_INJECTION_MYSQL_CUSTOM_1723798796": 1,
"NOSQLI_BOOLEAN_BASED_QUERY_PARAM": 1,
"REMOVE_TOKENS_CUSTOM_1725722607": 9,
"LLM_MALWARE_SUBFUNCTION_SWIFT": 1,
"JWT_NONE_ALGO": 1,
"LLM_MALWARE_COMPLETE_SWIFT": 1
},
"testingRunsCount": 0,
"jiraIssuesMapForResults": "null",
"cleanUpTestingResources": false,
"authMechanism": {
"authParams": [
{
"showHeader": true,
"where": "HEADER",
"value": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VySWQiOiI2ODhiMzc3Mjc4ZTQ1ZjQ2ZGMxMjEwNDEiLCJ1c2VybmFtZSI6ImFiY2QiLCJpc0FkbWluIjoiZmFsc2UiLCJpYXQiOjE3NTM5NTQxNjZ9.0m7COPCfDhagJNpNu9_Ti0cy1ehf0oKbGJzP53IoJ5Q",
"key": "authorization"
}
],
"apiCollectionIds": "null",
"cacheExpired": true,
"id": "null",
"type": "HardCoded",
"requestData": "null",
"recordedLoginFlowInput": "null",
"uuid": "17702181-967a-414b-ab7b-f774798f3b3e"
},
"miniTestingServiceNames": "null",
"currentTestsStatus": {
"totalTestsCompleted": 0,
"testRunsScheduled": 0,
"testRunsQueued": 1
},
"latestSummaryIds": "null",
"testRunsByUser": false,
"usageTestRuns": "SUCCESS",
"allTestsCountsRanges": "null",
"sampleDataVsCurlMap": "null",
"selectedTests": [
"ID_WRAP_ARRAY_OF_PARAMS_JSON_BODY_INTEGER_VAL"
],
"filters": "null",
"testingRunType": "null",
"recurringDaily": false,
"overriddenTestAppUrl": "",
"workflowTest": "null",
"testingRun": "null",
"testRunTime": -1,
"misConfiguredTestsCount": 0,
"startTimestamp": 0,
"errorEnums": "{}",
"triggeredBy": "null"
}Paginates through the sample data of the named collection and returns Burp Suite-compatible raw HTTP request + response strings for each endpoint. Pagination is cursor-based: pass lastUrlFetched and lastMethodFetched from the previous response to fetch the next page. Maximum 500 endpoints per page.
Source: ExportSampleDataAction.importInBurp()
Name of the API collection to paginate.
My API CollectionPagination cursor: URL returned at the end of the previous page. Omit on the first request.
Pagination cursor: HTTP method returned at the end of the previous page. Omit on the first request.
Number of endpoints per page. Values ≤ 0 or > 500 are clamped to 500.
100Paginated Burp request/response entries.
Pass this value as lastUrlFetched in the next request to get the next page. null when there is no more data.
/api/usersPass this value as lastMethodFetched in the next request.
GETcollectionName does not match any existing collection.
POST /api/importInBurp HTTP/1.1
Content-Type: application/json
Accept: */*
Content-Length: 50
{
"collectionName": "My API Collection",
"limit": 100
}{
"importInBurpResult": [
{
"url": "https://api.example.com/api/users",
"req": "GET https://api.example.com/api/users HTTP/1.1\nHost: api.example.com\nAuthorization: Bearer [REDACTED_JWT]\n\n",
"res": "HTTP/1.1 200 \nContent-Type: application/json\n\n{\"users\":[]}"
}
],
"lastUrlFetched": "/api/users",
"lastMethodFetched": "GET",
"actionErrors": [
"text"
]
}Stores a recorded login flow and optionally executes it to extract an auth token. Two modes are supported:
Standard mode (default):
miniTestingServiceNameis null orhybridTestingEnabledis false for the account. The flow is triggered asynchronously.testingRunPlaygroundIdis null in the response.Hybrid mode:
miniTestingServiceNameis set AND the account hashybridTestingEnabled. ATestingRunPlaygrounddocument is created and its ID is returned. PollfetchRecordedFlowOutputwith this ID to retrieve the token.
Source: LoginRecorderAction.uploadRecordedFlow()
JSON string representing the recorded login flow steps.
[{"action":"navigate","url":"https://app.example.com/login"},{"action":"type","selector":"#username","value":"admin"},{"action":"click","selector":"#login-btn"}]JavaScript expression or command executed after the login flow to extract the auth token (e.g. document.cookie).
document.cookieName of the test role to associate with this login flow.
adminIf set and the account has hybridTestingEnabled, activates hybrid mode and a TestingRunPlayground ID is returned for polling.
Flow uploaded. testingRunPlaygroundId is non-null only in hybrid mode.
ObjectId hex of the TestingRunPlayground document. null in standard mode.
POST /api/uploadRecordedFlow HTTP/1.1
Content-Type: application/json
Accept: */*
Content-Length: 260
{
"content": "[{\"action\":\"navigate\",\"url\":\"https://app.example.com/login\"},{\"action\":\"type\",\"selector\":\"#username\",\"value\":\"admin\"},{\"action\":\"click\",\"selector\":\"#login-btn\"}]",
"tokenFetchCommand": "document.cookie",
"roleName": "admin"
}Flow uploaded. testingRunPlaygroundId is non-null only in hybrid mode.
{
"testingRunPlaygroundId": null,
"actionErrors": [
"text"
]
}Last updated