Skip to content

Endpoint reference

Every path below is relative to your regional base URL. Find the row for your instance and put the path on the end.

Region Base URL
Australia https://api.elevaite365.com/v1/api/external
Europe https://eu-api.elevaite365.com/v1/api/external
United States https://us-api.elevaite365.com/v1/api/external
Singapore https://sg-api.elevaite365.com/v1/api/external

So /results-scenario/executions/ on the Australian host is:

https://api.elevaite365.com/v1/api/external/results-scenario/executions/

The /v1/api/external base path is part of every URL. Leaving it out reaches the host root rather than the API.

Your API host is not the host you sign in to, and a key issued in one region does not work in another. If you are not sure which region you are on, check the address you use for the product against the table in Setup your team.

Every endpoint on this page requires your API key

There are no anonymous endpoints. Send your key in the X-API-Key header on every request, including the GET ones:

X-API-Key: <your-api-key>

A missing, malformed or unrecognised key returns 401, and a key only ever sees the scenarios and executions belonging to its own team. To request a key, contact your elevaite365 representative.

Scenarios

Method Path Purpose
GET /scenarios/ List every scenario you can run
GET /scenarios/{scenario_id}/ Read one scenario and its ordered steps
POST /run-scenario/ Schedule a scenario to run

Executions and results

Method Path Purpose
GET /results-scenario/executions/ List executions, with filters
GET /results-scenario/{execution_id}/status/ Check execution status
GET /results-scenario/{execution_id}/junit/ Get JUnit result URLs
POST /results-scenario/artifacts/ Get the full artifact set
GET /results-scenario/{execution_id}/report/ Get per-step results for every test

List scenarios

GET /scenarios/
X-API-Key: <your-api-key>

Returns every scenario available to your organisation, sorted by name. Start here when you need a scenario_id and do not have one.

Response (200 OK)

{
  "scenarios": [
    {
      "id": "65f2a1b3c4d5e6f7g8h9i0j1",
      "name": "Order To Cash"
    }
  ]
}

name is an empty string when the scenario has no title set.

Get scenario detail

GET /scenarios/{scenario_id}/
X-API-Key: <your-api-key>

Returns a scenario's metadata and its ordered list of steps. No execution is involved, so you can call this before running anything.

Response (200 OK)

{
  "scenario_id": "65f2a1b3c4d5e6f7g8h9i0j1",
  "name": "Order To Cash",
  "created_at": "2025-03-01T09:00:00Z",
  "updated_at": "2025-03-20T14:22:00Z",
  "created_by": "Jane Doe",
  "continue_on_failure": false,
  "folder_id": "65f2a1b3c4d5e6f7g8h9i0j1",
  "folder_name": "Regression",
  "tests": [
    {
      "type": "test",
      "test_id": "65f2a1b3c4d5e6f7g8h9i0j1",
      "test_name": "Login flow",
      "application_name": "Finance",
      "created_by": "Jane Doe",
      "created_at": "2025-02-11T08:00:00Z",
      "updated_at": "2025-03-19T16:40:00Z"
    },
    {
      "type": "delay",
      "delay_minutes": 5
    }
  ]
}

Step entries

The tests array holds the scenario in run order, and each entry is one of two shapes.

type Fields Meaning
test test_id, test_name, application_name, created_by, created_at, updated_at A test from your library. The metadata fields are null when the test has been removed
delay delay_minutes A pause before the next step. No test metadata

continue_on_failure tells you whether the remaining steps run after one fails.

Run a scenario

POST /run-scenario/
X-API-Key: <your-api-key>
Content-Type: application/json

Schedules a scenario to run in the next minute. The response confirms scheduling and returns the execution ID you will use for all subsequent calls.

Request body

{
  "scenario_id": "65f2a1b3c4d5e6f7g8h9i0j1"
}

Response (201 Created)

{
  "execution_id": "65f2a1b3c4d5e6f7g8h9i0j1",
  "scenario_id": "65f2a1b3c4d5e6f7g8h9i0j1",
  "scenario_name": "Order To Cash",
  "message": "Scenario Order To Cash will be run at 2025-03-27T08:13:00Z"
}

Save the execution ID

execution_id is required for every follow-up operation. Store it as soon as you receive it.

List executions

GET /results-scenario/executions/
X-API-Key: <your-api-key>

Returns executions for your organisation, newest run first, with the progress and timing of the latest run of each. Use it to find an execution_id you did not keep, or to build a dashboard of recent activity.

Query parameters

Parameter Description
status Comma-separated: waiting, scheduled, running, completed
type Comma-separated: one-off, manual, recurring
scenario_id Only executions for this scenario
started_from Earliest start time of the latest run, inclusive, ISO 8601
started_to Latest start time of the latest run, inclusive, ISO 8601
limit Page size, 1 to 100, default 20
offset Skip this many results, default 0

Response (200 OK)

{
  "executions": [
    {
      "execution_id": "65f2a1b3c4d5e6f7g8h9i0j1",
      "scenario_id": "65f2a1b3c4d5e6f7g8h9i0j1",
      "scenario_name": "Order To Cash",
      "status": "completed",
      "type": "manual",
      "executed_by": "External API",
      "started_at": "2025-03-27T08:13:00Z",
      "completed_at": "2025-03-27T08:41:00Z"
    }
  ],
  "total": 42,
  "limit": 20,
  "offset": 0
}

Execution types

type How it was scheduled
manual Triggered by hand, or through this API
one-off Scheduled once for a specific time
recurring Repeats on a cadence

Recurring executions report their latest run

A recurring execution keeps the same execution_id across every occurrence. status, started_at and completed_at describe the most recent run only, and earlier occurrences are not listed here. See the execution model.

started_at is empty while an execution is still waiting, and completed_at is empty until the latest run finishes.

Check execution status

GET /results-scenario/{execution_id}/status/
X-API-Key: <your-api-key>

Returns the current status of an execution. Poll this endpoint until the status reaches completed, then retrieve your results.

Response (200 OK)

{
  "status": "running",
  "message": "Scenario is currently executing"
}

Status values

Status Meaning
waiting Execution has been received but has not started
scheduled Execution has been queued to run
running Execution is currently in progress
completed Execution has finished, results are available

For a recurring execution this describes the latest run, so the status can move back from completed to scheduled when the next occurrence comes around.

Get JUnit results

GET /results-scenario/{execution_id}/junit/
X-API-Key: <your-api-key>

Returns JUnit XML result URLs for every test in the execution. This is the lightweight, machine-readable option, ideal for CI/CD pipelines, automated validation gates, and integration with test reporting tools.

Response (200 OK)

{
  "junit_results": [
    {
      "test_id": "65f2a1b3c4d5e6f7g8h9i0j1",
      "delay": 0,
      "status": "completed",
      "junit_url": "https://.../result.xml"
    }
  ]
}

junit_url is null when a test has not produced a JUnit file yet. delay is the wait in minutes before that test starts.

Per-test status values

Status Meaning
scheduled Test is scheduled to run
running Test is currently executing
completed Test has finished, JUnit result is available
skip Test was skipped in this execution

Get scenario artifacts

POST /results-scenario/artifacts/
X-API-Key: <your-api-key>
Content-Type: application/json

Returns the complete set of artifacts for every test in the execution, the richest view of your results. This is the recommended endpoint for most integrations, supporting both technical and business stakeholders.

Request body

{
  "execution_id": "65f2a1b3c4d5e6f7g8h9i0j1"
}

Response (200 OK)

{
  "execution_id": "65f2a1b3c4d5e6f7g8h9i0j1",
  "scenario_id": "65f2a1b3c4d5e6f7g8h9i0j1",
  "scenario_name": "Order To Cash",
  "results": [
    {
      "result_id": "65f2a1b3c4d5e6f7g8h9i0j1",
      "test_id": "65f2a1b3c4d5e6f7g8h9i0j1",
      "test_name": "Login test",
      "status": "completed",
      "junit_url": "https://.../result.xml",
      "video_url": "https://.../video.mp4",
      "pdf_url": "https://.../report.pdf",
      "excel_url": "https://.../report.xlsx"
    }
  ]
}

Available artifacts

Artifact Description Best for
JUnit XML Machine-readable test results CI/CD and automated validation
Video Full recording of the test execution Debugging failures, evidence
PDF Human-readable test report Business reporting, audit and compliance
Excel Structured data export Dashboards and downstream analysis

Artifact links expire

Every URL in the response is a signed, time-limited link. Download what you need soon after the call, and request fresh links rather than storing the URLs. Any of them can be null when that artifact was not produced.

Get a step-level report

GET /results-scenario/{execution_id}/report/
X-API-Key: <your-api-key>

Returns the same per-test artifact links as the artifacts endpoint, and adds what happened inside each test: every step with its outcome, which step failed first, the error it logged, and how long the test took.

Use it when you need to show why a test failed rather than just that it failed. If you only need download links, stay on /artifacts/, which is cheaper.

Query parameters

Parameter Description
limit Page size, 1 to 500, default 100
offset Skip this many results, default 0

Response (200 OK)

{
  "execution_id": "65f2a1b3c4d5e6f7g8h9i0j1",
  "scenario_id": "65f2a1b3c4d5e6f7g8h9i0j1",
  "scenario_name": "Order To Cash",
  "status": "completed",
  "started_at": "2025-03-27T08:13:00Z",
  "completed_at": "2025-03-27T08:41:00Z",
  "results": [
    {
      "result_id": "65f2a1b3c4d5e6f7g8h9i0j1",
      "test_id": "65f2a1b3c4d5e6f7g8h9i0j1",
      "test_name": "Create sales order",
      "status": "failed",
      "duration_ms": 48200,
      "started_at": "2025-03-27T08:13:04Z",
      "completed_at": "2025-03-27T08:13:52Z",
      "steps": [
        {
          "index": 0,
          "action": "click",
          "target": "Submit button",
          "status": "passed",
          "error": null,
          "screenshot_url": "https://.../step1.png"
        }
      ],
      "failed_step_index": 4,
      "error_message": "Element not found",
      "error_stack": null,
      "video_url": "https://.../video.mp4",
      "video_size_bytes": null,
      "junit_url": "https://.../result.xml",
      "pdf_url": "https://.../report.pdf"
    }
  ],
  "pagination": {
    "limit": 100,
    "offset": 0,
    "total": 235,
    "has_more": true
  }
}

Finding the failure

Field Meaning
failed_step_index Zero-based index into steps of the first step that failed. Null when the test passed
error_message Last log entry from that step, which is usually the most useful line to surface
duration_ms How long the test took. Null when it did not finish

Step fields

Field Meaning
index Zero-based position of the step within the test
action What the step did, for example click, fill or navigate. Empty when unknown
target The element or label the step acted on. Empty when unknown
status passed, failed, skipped, or not-run when the underlying status was not recognised
error Last log entry for the step. Null when it logged nothing
screenshot_url Signed link to the screenshot taken after the step

Per-test status values

Results on this endpoint report the outcome of a finished test, so the values differ from the lifecycle statuses used elsewhere on this page.

Status Meaning
passed Every step succeeded
failed At least one step failed. See failed_step_index
skip The test was skipped in this execution

Fields that are always null

error_stack and video_size_bytes are reserved and always come back null. screenshot_url is null on a failed step, and on any step where no screenshot was captured, so a failed test shows you the state before the failure rather than after it.

Paging

pagination.has_more tells you whether another page exists. Increase offset by limit until it is false. Large scenarios can exceed the 500 maximum, so do not assume one call returns everything.


Next: Integration flow