/v1/brands/{brand_id}/content-briefs/manual Create a content brief from your own article
Hand over an article you wrote yourself. Nothing is generated and no credits are charged — this is the endpoint to use when the writing happened somewhere else and RankPrompt is only hosting, reviewing and publishing it.
The brief lands in needs_review with the article attached, so everything downstream works the same as a generated one: edit it, share it for review with PUT /v1/brands/{brand_id}/content-briefs/{brief_id}/review/share, then publish it.
Use POST /v1/brands/{brand_id}/content-briefs instead when you want RankPrompt to research and write the article for you; that one runs the AI pipeline and costs credits.
Path parameters
Brand UUID.
Header parameters
Request body
application/json requiredThe article body as HTML. Standard tags only — it is rendered in the editor and the review view.
Article title.
- content_typeenum (nullable)nullable
Content format. Defaults to the brand's usual format when omitted.
- meta_descriptionstring (nullable)nullable
Meta description used when publishing.
- target_keywordsarray of string
Keywords to carry as tags when publishing.
Responses
Owning brand id (UUID).
When the brief was created.
Content brief id (UUID).
Brief lifecycle state. One of
draft,processing,needs_review,published,failed.- assetsarray of ContentAsset
Generated assets (article HTML, images, meta).
- content_contextobject
Free-form context folded into the generation prompt.
Show fields
Empty object (no properties).
- content_typestring (nullable)nullable
Content format id (e.g.
blog_post,ranked_list). - error_messagestring (nullable)nullable
User-facing failure reason when
statusisfailed. - generated_atstring (nullable)nullable
When content was last generated, if ever.
- objectstring
Always
content_brief. - outline_jsonobject | array of any
Structured article outline produced during generation.
- research_outputstring (nullable)nullable
Research notes gathered during generation.
- target_keywordsarray of string
Target keywords for the brief.
- titlestring (nullable)nullable
Brief title, set on creation or filled in from the article.
- topicstring (nullable)nullable
Topic or target keyword the content is written around.
- updated_atstring (nullable)nullable
When the brief was last updated.
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": "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"
}