Get Execution
Retrieve a completed content draft. The article content lives in the outputs field.
GET
Returns a single completed execution. The generated article content lives in the outputs field (a JSON object produced by the content agent — shape depends on the execution format).
Path parameters
brand_idstringrequiredThe brand UUID.
execution_idstringrequiredThe execution UUID. This is not the same as the run_id returned from POST /brands/{id}/execute — list executions first to find the right ID.
Response
{
"id": "exec-uuid",
"brand_id": "brand-uuid",
"run_id": "exec-run-uuid",
"brief_id": "brief-uuid",
"format": "comparison",
"status": "draft",
"content": {
"title": "Best AI Marketing Tools in 2026: Complete Comparison",
"body": "# Best AI Marketing Tools in 2026\n\nMarketing teams face a paradox...",
"word_count": 2847
},
"gate_scores": null,
"created_at": "2026-04-07T10:45:00Z",
"updated_at": "2026-04-07T10:48:12Z"
}
Field notes
| Field | Description |
|---|---|
id | Execution UUID. Not the same as the run_id returned from POST /execute — fetch executions via this ID. |
run_id | Pipeline run that produced this execution. |
brief_id | The brief used as input. |
format | One of hub_and_spokes, single_article, programmatic, comparison, landing_page. |
content | Opaque JSON blob produced by the content agent. The shape is not a stable API contract — it reflects whatever the current content agent emits and may change between deployments. Tolerate unknown keys; do not hard-code paths beyond title / body-style top-levels you have verified at runtime. |
gate_scores | Reserved — always null in the current implementation. Quality gate scores are not produced today. |
status | Always "draft" in the current implementation. State transitions (queued → running → done / failed) are planned but not wired — the value is set once at persist time and never updated. To know whether the execution finished, poll the run_id (GET /brands/{id}/runs/{run_id}), not the execution row. |
List all executions
To list all executions for a brand:
curl -H "X-API-Key: $BM_API_KEY" \
https://api.boringmarketing.com/brands/$BRAND_ID/executions
Example
# First find the execution_id
curl -H "X-API-Key: $BM_API_KEY" \
https://api.boringmarketing.com/brands/$BRAND_ID/executions
# Then fetch the full execution
curl -H "X-API-Key: $BM_API_KEY" \
https://api.boringmarketing.com/brands/$BRAND_ID/executions/$EXECUTION_ID