Skip to main content

RandomRoute API Workbench REST API

Version 1.0. Create a token with a free account, then call the API from scripts or CI.

Download openapi.json

Read your workspace's collections, environments, inbound endpoints and history, start collection runs from CI, and execute saved requests.

Authentication. Create a token under Test Tokens with an api:* scope and send it as Authorization: Bearer awk_…. A token belongs to one workspace; every call is scoped to it, and ids from other workspaces answer 404.

Scopes. api:read for every GET; api:run to start runs and execute requests (and to poll runs). RandomRoute AEP Lab (/adobe/*): adobe:read for every GET; adobe:run to verify connections and start suite and loop-test runs (and to poll them).

RandomRoute AEP Lab completion webhook. When a workspace has a RandomRoute AEP Lab webhook, every finished suite run and loop-test run is POSTed to it as JSON: {"event": "adobe.suite_run.finished" or "adobe.loop_run.finished", "workspace": {...}, "run": {...}}, where run has the same shape as GET /adobe/suite-runs/{id} or GET /adobe/loop-test-runs/{id}. The request is signed with the workspace's HMAC credential from the vault. With the credential's defaults that is X-Timestamp: <unix seconds> and X-Signature: hex(HMAC-SHA256(secret, "<X-Timestamp>.<raw body>")); the header names, algorithm, encoding and string to sign follow the credential's settings. Recompute the HMAC over the raw body with your copy of the secret, compare in constant time, and reject timestamps older than a few minutes.

Pagination. List endpoints return {"data": [...], "next_cursor": "…", "limit": 25}, newest first. Pass cursor=<next_cursor> for the next page; limit is 1–100.

Errors use RFC 7807 application/problem+json. Requests are limited to 120 per minute per token (X-RateLimit-* headers; 429 with Retry-After when exceeded).


Example: curl -H "Authorization: Bearer $AWK_TOKEN" https://api.randomroute.io/api/v1/collections

Workspace

GET /api/v1/workspaces

The token's workspace

Responses: 200 401 403

Collections

GET /api/v1/collections

List collections

Parameters for GET /api/v1/collections
ParameterInDescription
cursorquerynext_cursor from the previous page
limitquery

Responses: 200 400 401 403

GET /api/v1/collections/{id}

Get a collection

Parameters for GET /api/v1/collections/{id}
ParameterInDescription
id *pathULID

Responses: 200 404

GET /api/v1/requests

List saved requests

Parameters for GET /api/v1/requests
ParameterInDescription
cursorquerynext_cursor from the previous page
limitquery
collectionqueryOnly requests in this collection

Responses: 200 404

GET /api/v1/requests/{id}

Get a saved request (with headers, body, tests)

Parameters for GET /api/v1/requests/{id}
ParameterInDescription
id *pathULID

Responses: 200 404

Runs

POST /api/v1/collections/{id}/runs

Start a collection run

Runs of up to 25 requests finish before the response (201). Larger runs are queued (202); poll the Location URL.

Parameters for POST /api/v1/collections/{id}/runs
ParameterInDescription
id *pathULID

Accepts a JSON body — see openapi.json for the schema.

Responses: 201 202 403 404 409 422

GET /api/v1/runs/{id}

Run status and results

Parameters for GET /api/v1/runs/{id}
ParameterInDescription
id *pathULID

Responses: 200 404

POST /api/v1/requests/{id}/execute

Execute a saved request

Parameters for POST /api/v1/requests/{id}/execute
ParameterInDescription
id *pathULID

Accepts a JSON body — see openapi.json for the schema.

Responses: 200 403 404 409 422 429

Environments

GET /api/v1/environments

List environments (secret values are never returned)

Parameters for GET /api/v1/environments
ParameterInDescription
cursorquerynext_cursor from the previous page
limitquery

Responses: 200

GET /api/v1/environments/{id}

Get an environment

Parameters for GET /api/v1/environments/{id}
ParameterInDescription
id *pathULID

Responses: 200 404

Inbound

GET /api/v1/endpoints

List inbound endpoints

Parameters for GET /api/v1/endpoints
ParameterInDescription
cursorquerynext_cursor from the previous page
limitquery

Responses: 200

GET /api/v1/endpoints/{id}

Get an inbound endpoint

Parameters for GET /api/v1/endpoints/{id}
ParameterInDescription
id *pathULID

Responses: 200 404

GET /api/v1/inbound-requests

List captured requests

Parameters for GET /api/v1/inbound-requests
ParameterInDescription
cursorquerynext_cursor from the previous page
limitquery
endpointqueryOnly captures of this endpoint

Responses: 200 404

GET /api/v1/inbound-requests/{id}

Get a captured request (headers and body)

Parameters for GET /api/v1/inbound-requests/{id}
ParameterInDescription
id *pathULID

Responses: 200 404

History

GET /api/v1/executions

List outbound executions (history)

Parameters for GET /api/v1/executions
ParameterInDescription
cursorquerynext_cursor from the previous page
limitquery

Responses: 200

GET /api/v1/executions/{id}

Get an execution (masked headers, body, test results)

Parameters for GET /api/v1/executions/{id}
ParameterInDescription
id *pathULID

Responses: 200 404

RandomRoute AEP Lab

GET /api/v1/adobe/connections

List Adobe connections (no secrets)

Parameters for GET /api/v1/adobe/connections
ParameterInDescription
cursorquerynext_cursor from the previous page
limitquery

Responses: 200 401 403

GET /api/v1/adobe/connections/{id}

Get an Adobe connection with its verification state

Parameters for GET /api/v1/adobe/connections/{id}
ParameterInDescription
id *pathULID

Responses: 200 404

POST /api/v1/adobe/connections/{id}/verify

Verify the connection's sandbox now (development and not default only)

Parameters for POST /api/v1/adobe/connections/{id}/verify
ParameterInDescription
id *pathULID

Responses: 200 403 404

GET /api/v1/adobe/suites

List AEP Lab suites

Parameters for GET /api/v1/adobe/suites
ParameterInDescription
cursorquerynext_cursor from the previous page
limitquery

Responses: 200 403

GET /api/v1/adobe/suites/{id}

Get an AEP Lab suite

Parameters for GET /api/v1/adobe/suites/{id}
ParameterInDescription
id *pathULID

Responses: 200 404

POST /api/v1/adobe/suites/{id}/runs

Start a suite run

Suite runs are always queued. Poll the Location URL until `finished` is true.

Parameters for POST /api/v1/adobe/suites/{id}/runs
ParameterInDescription
id *pathULID

Responses: 202 403 404 409

GET /api/v1/adobe/suite-runs/{id}

Get a suite run with its steps

Parameters for GET /api/v1/adobe/suite-runs/{id}
ParameterInDescription
id *pathULID

Responses: 200 404

GET /api/v1/adobe/loop-tests

List loop tests

Parameters for GET /api/v1/adobe/loop-tests
ParameterInDescription
cursorquerynext_cursor from the previous page
limitquery

Responses: 200 403

POST /api/v1/adobe/loop-tests/{id}/runs

Start a loop-test run

Sends the AJO event and returns the run, WAITING for the journey's custom action (or already finished when the event was blocked or rejected). Poll the Location URL.

Parameters for POST /api/v1/adobe/loop-tests/{id}/runs
ParameterInDescription
id *pathULID

Responses: 202 403 404 409

GET /api/v1/adobe/loop-test-runs/{id}

Get a loop-test run

Parameters for GET /api/v1/adobe/loop-test-runs/{id}
ParameterInDescription
id *pathULID

Responses: 200 404