Execute Draft

Draft a full article from a content brief using Opus. Returns 202 — poll for completion.

POSThttps://api.boringmarketing.com/brands/{brand_id}/execute

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

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.

Path parameters

brand_idstringrequired

The brand UUID.

Request body

brief_idstringrequired

The brief ID from GET /brands/{id}/briefs.

Response (202 Accepted)

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

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

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}.

Example

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"}'

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