/v1/brands/{brand_id}/content-briefs/generations Generate an article asynchronously
Create a content brief and run the AI pipeline in the background. Returns immediately with a brief_id and a job_id.
Prefer this over POST /v1/brands/{brand_id}/content-briefs for anything unattended. Generation chains research, outline, writing and images and routinely runs for minutes. The synchronous endpoint holds the connection open for all of it and will time out on a slow article while the pipeline keeps running and still charges you.
Workflow:
POST /v1/brands/{brand_id}/content-briefs/generations: returns{ brief_id, job_id }.GET /v1/jobs/{job_id}: poll untilstatusiscompleted.stepreports the pipeline phase (research,outline,writer,editor,images).GET /v1/brands/{brand_id}/content-briefs/{brief_id}: read the finished article.POST /v1/brands/{brand_id}/content-briefs/{brief_id}/publish: push it to WordPress.
Pricing: the same credits as the synchronous endpoint, debited when the worker picks the job up. Your balance is checked before the job is queued, so an underfunded account gets 402 here rather than a job that fails later. A failed generation is refunded automatically.
Subject to the LLM-tier rate limit, which is stricter than the global /v1 burst cap.
Path parameters
Brand UUID.
Query parameters
Preview the call without executing it. Runs auth, scope, eligibility and body validation, then returns
200with adry_runobject reporting the request-unit and credit cost plus a non-consuming quota snapshot. Nothing is debited, reserved, dispatched or mutated. An invalid body still returns422.default: false
Header parameters
Request body
application/json required- content_contextobject
Free-form context folded into the generation prompt.
Show fields
Empty object (no properties).
- content_typeenum (nullable)nullable
Content format to generate; inferred from the topic when omitted.
- target_keywordsarray of string
Target keywords to write around (each up to 200 chars).
- titlestring (nullable)nullable
Optional title; the generator fills one in when omitted.
- topicstring (nullable)nullable
Topic or target keyword to write about. Provide this or at least one
target_keywordsentry.
Responses
Brand the article is being written for.
The brief that was created. It is in
processinguntil generation finishes.Poll
GET /v1/jobs/{job_id}for progress. Equal tobrief_id, since one article is one job.- objectstring
Always
content_brief.generation.dispatched.
Example response
{
"brand_id": "3f9c7e8a-1b6a-4d8e-92cf-7d9c8b1e2a04",
"brief_id": "8c2d4f1e-5a3b-4c7d-9e1f-2a3b4c5d6e7f",
"job_id": "8c2d4f1e-5a3b-4c7d-9e1f-2a3b4c5d6e7f",
"object": "content_brief.generation.dispatched"
}Show fields
Stable machine-readable error code from the catalog.
Human-readable description suitable for logging.
- detailsobject
Optional, code-specific context (e.g.
errorsarray forvalidation_error,retry_afterforservice_unavailable). Shape depends onerror.code; treat as opaque otherwise.Show fields
Empty object (no properties).
- request_idstring
Server-generated correlation id for the request. Mirrors the
X-Correlation-IDresponse header. Include this when contacting support.
Example response
{
"error": {
"code": "validation_error",
"message": "Request validation failed"
},
"request_id": "9f6c4e8a-1d3b-4c8b-9f1e-7a3b1c2d3e4f"
}Show fields
Stable machine-readable error code from the catalog.
Human-readable description suitable for logging.
- detailsobject
Optional, code-specific context (e.g.
errorsarray forvalidation_error,retry_afterforservice_unavailable). Shape depends onerror.code; treat as opaque otherwise.Show fields
Empty object (no properties).
- request_idstring
Server-generated correlation id for the request. Mirrors the
X-Correlation-IDresponse header. Include this when contacting support.
Example response
{
"error": {
"code": "unauthorized",
"message": "Missing or invalid credentials"
},
"request_id": "9f6c4e8a-1d3b-4c8b-9f1e-7a3b1c2d3e4f"
}Show fields
Stable machine-readable error code from the catalog.
Human-readable description suitable for logging.
- detailsobject
Optional, code-specific context (e.g.
errorsarray forvalidation_error,retry_afterforservice_unavailable). Shape depends onerror.code; treat as opaque otherwise.Show fields
Empty object (no properties).
- request_idstring
Server-generated correlation id for the request. Mirrors the
X-Correlation-IDresponse header. Include this when contacting support.
Example response
{
"error": {
"code": "insufficient_credits",
"message": "Not enough credits to complete this operation"
},
"request_id": "9f6c4e8a-1d3b-4c8b-9f1e-7a3b1c2d3e4f"
}Show fields
Stable machine-readable error code from the catalog.
Human-readable description suitable for logging.
- detailsobject
Optional, code-specific context (e.g.
errorsarray forvalidation_error,retry_afterforservice_unavailable). Shape depends onerror.code; treat as opaque otherwise.Show fields
Empty object (no properties).
- request_idstring
Server-generated correlation id for the request. Mirrors the
X-Correlation-IDresponse header. Include this when contacting support.
Example response
{
"error": {
"code": "forbidden",
"message": "You do not have permission to access this resource"
},
"request_id": "9f6c4e8a-1d3b-4c8b-9f1e-7a3b1c2d3e4f"
}Show fields
Stable machine-readable error code from the catalog.
Human-readable description suitable for logging.
- detailsobject
Optional, code-specific context (e.g.
errorsarray forvalidation_error,retry_afterforservice_unavailable). Shape depends onerror.code; treat as opaque otherwise.Show fields
Empty object (no properties).
- request_idstring
Server-generated correlation id for the request. Mirrors the
X-Correlation-IDresponse header. Include this when contacting support.
Example response
{
"error": {
"code": "not_found",
"message": "Resource not found"
},
"request_id": "9f6c4e8a-1d3b-4c8b-9f1e-7a3b1c2d3e4f"
}Show fields
Stable machine-readable error code from the catalog.
Human-readable description suitable for logging.
- detailsobject
Optional, code-specific context (e.g.
errorsarray forvalidation_error,retry_afterforservice_unavailable). Shape depends onerror.code; treat as opaque otherwise.Show fields
Empty object (no properties).
- request_idstring
Server-generated correlation id for the request. Mirrors the
X-Correlation-IDresponse header. Include this when contacting support.
Example response
{
"error": {
"code": "conflict",
"message": "Resource conflict"
},
"request_id": "9f6c4e8a-1d3b-4c8b-9f1e-7a3b1c2d3e4f"
}Show fields
Stable machine-readable error code from the catalog.
Human-readable description suitable for logging.
- detailsobject
Optional, code-specific context (e.g.
errorsarray forvalidation_error,retry_afterforservice_unavailable). Shape depends onerror.code; treat as opaque otherwise.Show fields
Empty object (no properties).
- request_idstring
Server-generated correlation id for the request. Mirrors the
X-Correlation-IDresponse header. Include this when contacting support.
Example response
{
"error": {
"code": "body_validation_error",
"message": "Request body did not match the expected schema"
},
"request_id": "9f6c4e8a-1d3b-4c8b-9f1e-7a3b1c2d3e4f"
}Show fields
Stable machine-readable error code from the catalog.
Human-readable description suitable for logging.
- detailsobject
Optional, code-specific context (e.g.
errorsarray forvalidation_error,retry_afterforservice_unavailable). Shape depends onerror.code; treat as opaque otherwise.Show fields
Empty object (no properties).
- request_idstring
Server-generated correlation id for the request. Mirrors the
X-Correlation-IDresponse header. Include this when contacting support.
Example response
{
"error": {
"code": "rate_limit_exceeded",
"message": "Per-minute rate limit exceeded"
},
"request_id": "9f6c4e8a-1d3b-4c8b-9f1e-7a3b1c2d3e4f"
}Show fields
Stable machine-readable error code from the catalog.
Human-readable description suitable for logging.
- detailsobject
Optional, code-specific context (e.g.
errorsarray forvalidation_error,retry_afterforservice_unavailable). Shape depends onerror.code; treat as opaque otherwise.Show fields
Empty object (no properties).
- request_idstring
Server-generated correlation id for the request. Mirrors the
X-Correlation-IDresponse header. Include this when contacting support.
Example response
{
"error": {
"code": "internal_error",
"message": "An unexpected error occurred"
},
"request_id": "9f6c4e8a-1d3b-4c8b-9f1e-7a3b1c2d3e4f"
}Show fields
Stable machine-readable error code from the catalog.
Human-readable description suitable for logging.
- detailsobject
Optional, code-specific context (e.g.
errorsarray forvalidation_error,retry_afterforservice_unavailable). Shape depends onerror.code; treat as opaque otherwise.Show fields
Empty object (no properties).
- request_idstring
Server-generated correlation id for the request. Mirrors the
X-Correlation-IDresponse header. Include this when contacting support.
Example response
{
"error": {
"code": "service_unavailable",
"message": "Service temporarily unavailable, please retry"
},
"request_id": "9f6c4e8a-1d3b-4c8b-9f1e-7a3b1c2d3e4f"
}