Skip to main content
POST
/
content
/
create
Create content
curl --request POST \
  --url https://server.promptwatch.com/api/v2/content/create \
  --header 'Content-Type: application/json' \
  --header 'X-API-Key: <api-key>' \
  --data '
{
  "mode": "CREATE",
  "promptId": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
  "personaId": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
  "type": "ARTICLE",
  "contentLength": "SHORT",
  "contentGapRecommendationId": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
  "toneOfVoice": "PROFESSIONAL",
  "customToneOfVoice": "<string>",
  "languageCode": "en-US",
  "imageArtisticStyle": "photo-realistic",
  "imagePromptInstructions": "<string>",
  "blockedWords": [
    "<string>"
  ]
}
'
{
  "id": "6ba7b82c-9dad-11d1-80b4-00c04fd430c8",
  "status": "PENDING"
}

Documentation Index

Fetch the complete documentation index at: https://promptwatch.com/docs/llms.txt

Use this file to discover all available pages before exploring further.

Authorizations

X-API-Key
string
header
required

API key for authentication. Get yours from the Promptwatch dashboard under Settings > API Keys.

Body

application/json
mode
enum<string>
required

Create new content from a prompt (not optimizing an existing page).

Available options:
CREATE
promptId
string<uuid>
required

LLM prompt to anchor generation on (list via GET /prompts).

personaId
string<uuid>
required

Persona for voice and audience (list via GET /personas).

type
enum<string>
required

Output format. ARTICLE: in-depth informative; BLOG_POST: conversational; PRODUCT_PAGE: sales-focused; GENERIC_CONTENT: flexible; LISTICLE: list-structured; PRODUCT_COMPARISON: compares products.

Available options:
ARTICLE,
BLOG_POST,
PRODUCT_PAGE,
GENERIC_CONTENT,
LISTICLE,
PRODUCT_COMPARISON
contentLength
enum<string>
required

Target length. SHORT ≈ 200–500 words; MEDIUM ≈ 500–1,000; LONG ≈ 1,000–3,000.

Available options:
SHORT,
MEDIUM,
LONG
contentGapRecommendationId
string<uuid>

Optional recommendation from GET /content-gap/prompts/:promptId/latest/recommendations.

toneOfVoice
enum<string>

Tone override; if omitted, the project default is used. CUSTOM requires customToneOfVoice.

Available options:
PROFESSIONAL,
CASUAL,
TECHNICAL,
CONVERSATIONAL,
NEUTRAL,
AUTHORITATIVE,
FRIENDLY,
PERSUASIVE,
FORMAL,
WITTY,
CUSTOM
customToneOfVoice
string

Required when toneOfVoice is CUSTOM; ignored otherwise.

languageCode
enum<string>

BCP-47 language code from the supported enum (e.g. "en-US", "es-ES"). Overrides the project default. Omit to use the project default or en-US.

Available options:
en-US,
en-GB,
en-IN,
en-AU,
en-CA,
nl-NL,
nl-BE,
es-ES,
es-MX,
es-AR,
es-CO,
es-CL,
es-PE,
es-VE,
ca-ES,
fr-FR,
fr-CA,
de-DE,
de-AT,
de-CH,
cs-CZ,
sk-SK,
no-NO,
sv-SE,
da-DK,
it-IT,
fi-FI,
pl-PL,
hu-HU,
ro-RO,
lt-LT,
lv-LV,
uk-UA,
el-GR,
tr-TR,
ar-SA,
ar-EG,
ar-AE,
he-IL,
pt-PT,
pt-BR,
ja-JP,
id-ID,
vi-VN,
th-TH,
km-KH,
en-KH,
ko-KR,
hi-IN,
ru-RU,
kk-KZ,
ms-MY,
fil-PH,
zh-SG,
zh-TW,
zh-HK
imageArtisticStyle
enum<string> | null

Visual style for AI-generated featured images when the generate-article-image tool is enabled. Null inherits the project default.

Available options:
photo-realistic,
flat-illustration,
watercolor,
3d-render,
minimalist,
isometric,
editorial,
abstract
imagePromptInstructions
string | null

Additional instructions for the image generator (max 200 chars). Null inherits the project default.

Maximum string length: 200
blockedWords
string[]

Words or phrases the generated content must not contain. Overrides the project's default blocked-words list.

Response

Default Response

id
string<uuid>
required

Document id; poll GET /content/:id until terminal status.

status
enum<string>
required

Always PENDING immediately after enqueue; use GET /content/:id for updates.

Available options:
PENDING