API
Executions API
Create and query TTCN-3 executions over REST: request schema, verdict payloads, websocket log streaming, and pagination.
7 min read
Create an execution
httphttp
POST /v1/executions HTTP/1.1
Host: api.aeon.cloud
Authorization: Bearer aeon_pat_...
Content-Type: application/json
{
"build": "rc3",
"campaign": "smoke",
"release": 18,
"lanes": 4,
"constraints": { "region": "eu-west-1", "sdr": "lime" },
"labels": { "ci": "github", "pr": "482" }
}Response
jsonjson
{
"id": "4821",
"state": "queued",
"created_at": "2026-07-14T09:11:58Z",
"campaign": "smoke",
"case_count": 12,
"links": {
"self": "/v1/executions/4821",
"logs": "wss://api.aeon.cloud/v1/executions/4821/logs",
"report": "/v1/executions/4821/report"
}
}Verdict payload
jsonjson
{
"id": "4821",
"state": "verdict",
"verdict": "fail",
"duration_s": 214.8,
"cases": [
{ "id": "TC_6_1_1_1", "verdict": "pass", "duration_s": 14.2 },
{ "id": "TC_6_1_1_2", "verdict": "fail", "duration_s": 31.7,
"reason": "T3510 expiry, no Registration Accept",
"clause": "24.501:5.5.1.2.4" }
]
}Stream logs
javascriptjavascript
const ws = new WebSocket(
"wss://api.aeon.cloud/v1/executions/4821/logs?token=" + token,
);
ws.onmessage = (e) => {
const { ts, layer, level, text } = JSON.parse(e.data);
console.log(`[${ts}] ${layer}/${level} ${text}`);
};Run this against a real SDR lane
The tester is a service, not a box. Push a build, reserve a lane, get a verdict.