---
title: Execute Draft
api: POST /brands/{brand_id}/execute
description: "Draft a full article from a content brief using Opus. Returns 202 — poll for completion."
---

> **For AI agents:** the complete documentation index is at [llms.txt](https://docs.boringmarketing.com/llms.txt). Append `.md` to any page URL for its markdown version.

Generates a full article draft from a content brief. Uses Opus for long-form content generation with brand facts from the enrichment crawl.

<Note>
Requires a valid API key with available daily calls. There is no separate gating beyond the standard tier call limit — every paid tier (Builder, Pro, Agency) can run executions.
</Note>

## Path parameters

<ParamField path="brand_id" type="string" required>
  The brand UUID.
</ParamField>

## Request body

<ParamField body="brief_id" type="string" required>
  The brief ID from `GET /brands/{id}/briefs`.
</ParamField>

## Response (202 Accepted)

```json
{
  "run_id": "exec-run-uuid",
  "status": "queued"
}
```

**Duration:** 3-8 minutes. Poll `GET /brands/{id}/runs/{run_id}` until `status` is `done`.

<Note>
The `run_id` returned here is **not** the same as the `execution_id` used to fetch the draft. After the run completes, list executions with `GET /brands/{id}/executions` to find the `execution_id` (the execution record is created when the draft is persisted, separately from the run record), then fetch the full draft via `GET /brands/{id}/executions/{execution_id}`.
</Note>

## Example

<CodeGroup>
```bash cURL
curl -X POST \
  -H "X-API-Key: $BM_API_KEY" \
  -H "Content-Type: application/json" \
  https://api.boringmarketing.com/brands/$BRAND_ID/execute \
  -d '{"brief_id": "brief-uuid"}'
```

```python Python
resp = httpx.post(
    f"https://api.boringmarketing.com/brands/{brand_id}/execute",
    headers={"X-API-Key": api_key, "Content-Type": "application/json"},
    json={"brief_id": "brief-uuid"},
)
exec_run_id = resp.json()["run_id"]
```
</CodeGroup>

<Tip>
Review the brief before executing. The draft follows the brief closely — fixing the outline is faster than rewriting the article.
</Tip>
