Execution Status
GET /v1/status/{executionArn}Get the status and results of a pipeline execution. Use this endpoint to poll for results after calling POST /v1/generate.
Authentication
Requires Bearer token (JWT or API key). Only the execution owner can access their own executions.
Path Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
executionArn | string | Yes | The execution ARN returned by /v1/generate. Must be URL-encoded. |
Example Request
curl https://cloudsigma.a13e.com/v1/status/EXECUTION_ARN \
-H "Authorization: Bearer YOUR_API_KEY"Response
Running
{
"success": true,
"data": {
"status": "RUNNING",
"executionArn": "arn:aws:states:REGION:ACCOUNT_ID:execution:CloudSigmaPipeline:abc-123",
"startDate": "2026-02-10T12:00:00Z"
}
}Succeeded
{
"success": true,
"data": {
"status": "SUCCEEDED",
"executionArn": "arn:aws:states:REGION:...",
"startDate": "2026-02-10T12:00:00Z",
"stopDate": "2026-02-10T12:00:25Z",
"output": {
"rules": [...],
"ttps": [...],
"iocs": [...],
"detectionGaps": [...],
"pipelineNotices": [...],
"metadata": {
"inputType": "url",
"rulesGenerated": 5,
"ttpsExtracted": 8,
"platformsTargeted": 3,
"processingTimeMs": 12500
}
}
}
}Failed
{
"success": true,
"data": {
"status": "FAILED",
"executionArn": "arn:aws:states:REGION:...",
"startDate": "2026-02-10T12:00:00Z",
"stopDate": "2026-02-10T12:00:05Z",
"errorMessage": "TierLimitExceeded: Monthly rule generation limit reached"
}
}Status Values
| Status | Description |
|---|---|
RUNNING | Pipeline is still executing. Poll again in 2–3 seconds. |
SUCCEEDED | Pipeline completed. Results are in the output field. |
FAILED | Pipeline encountered an error. See errorMessage. |
Polling Pattern
We recommend polling every 2–3 seconds with exponential backoff. Most pipelines complete within 10–30 seconds.
import time
import requests
def poll_status(execution_arn, api_key, max_wait=120):
"""Poll for pipeline completion with exponential backoff."""
url = f"https://cloudsigma.a13e.com/v1/status/{execution_arn}"
headers = {"Authorization": f"Bearer {api_key}"}
delay = 2
elapsed = 0
while elapsed < max_wait:
resp = requests.get(url, headers=headers).json()
status = resp["data"]["status"]
if status == "SUCCEEDED":
return resp["data"]["output"]
if status == "FAILED":
raise Exception(resp["data"].get("errorMessage", "Pipeline failed"))
time.sleep(delay)
elapsed += delay
delay = min(delay * 1.5, 10)
raise TimeoutError("Pipeline did not complete in time")Errors
| HTTP | Code | Description |
|---|---|---|
| 401 | Unauthorized | Invalid or missing token |
| 403 | Forbidden | You do not own this execution |
| 404 | NotFound | Execution ARN not found |
Last updated on