Generate an Article
POST /v1/api/generateRequires x-workspace-id. Starts generating an article in the background and returns straight
away.
Request
| Field | Type | Required | Notes |
|---|---|---|---|
site_uid | string | Yes | The site’s uid from GET /sites |
keyword | string | Yes | Target keyword, 2–200 characters |
secondary_keywords | string[] | No | Up to 10 |
tone | string | No | Overrides the site’s brand-voice tone for this article |
curl -X POST https://api.seobox.tech/v1/api/generate \
-H "x-api-key: $SEOBOX_API_KEY" \
-H "x-workspace-id: $SEOBOX_WORKSPACE_ID" \
-H "Content-Type: application/json" \
-d '{
"site_uid": "3f2b8c1e-7d4a-4f6b-9c2e-1a5d8e9f0b3c",
"keyword": "how to choose a standing desk",
"secondary_keywords": ["standing desk buying guide", "best standing desk height"]
}'Response
202 Accepted:
{ "success": true, "run_id": "…", "blog_uid": "9a7c2e4f-1b3d-4c5e-8f6a-2b4d6e8f0a1c" }Knowing when it’s done
Either:
- subscribe to the
blog.ready_for_reviewevent webhook, or - poll
GET /blogs/{blog_uid}untilstatusisreview(orfailed).
The finished article waits in Review like any other. Approve and publish it from the dashboard.
Errors
| Status | Code | Why |
|---|---|---|
| 402 | INSUFFICIENT_CREDITS | Not enough credits left. Top up in Billing. |
| 429 | RATE_LIMIT_EXCEEDED | Daily articles-per-site limit reached, or more than 60 requests/min. |
| 400 | VALIDATION_ERROR | Check details for the field that failed. |
Last updated on