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:
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:
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¶
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)
name is an empty string when the scenario has no title set.
Get scenario detail¶
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¶
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
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¶
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¶
Returns the current status of an execution. Poll this endpoint until the status reaches completed, then retrieve your results.
Response (200 OK)
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¶
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¶
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
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 |
| 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¶
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