Skip to Content
API ReferenceExecution Status

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

ParameterTypeRequiredDescription
executionArnstringYesThe 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

StatusDescription
RUNNINGPipeline is still executing. Poll again in 2–3 seconds.
SUCCEEDEDPipeline completed. Results are in the output field.
FAILEDPipeline 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

HTTPCodeDescription
401UnauthorizedInvalid or missing token
403ForbiddenYou do not own this execution
404NotFoundExecution ARN not found
Last updated on