Compose
Build a post draft
Get editorial rules, refine a writing plan, and check a post draft. Free
POST
Build a post draft
Free. This endpoint does not consume credits.
Workflow
- Call
composewith a topic. - If fresh context helps, fetch one suggested
radarRecommendationsendpoint. - Pass selected facts to
refinewith the topic, goal, and tone. - Write a draft. Call
scorewith the full text.
Requests
- 1. Compose
- 2. Refine
- 3. Score
Returns 18 editorial rules, 4 follow-up questions, and 7 source-specific
Radar recommendations.Required fields:
step, topic.Optional fields:goal:engagement,followers,authority, orconversation. Defaults toengagement.styleUsername: Username from a saved style analysis.
Headers
Send either an API key or an authenticated session cookie.string
Full account API key. An authenticated session cookie also works.
string
required
Use
application/json.Body
string
required
Use
compose, refine, or score.string
Required for
compose and refine.string
Required for
refine. Optional for compose.string
Saved style username for
compose.string
Required for
refine.string
Optional
photo, video, or none value for refine.string
Optional requested action for
refine.string
Optional audience, constraint, or source context for
refine. Include selected
facts from a recommended Radar endpoint when current context helps.string
Required full post text for
score.boolean
Set true when a separate link card is attached during
score.boolean
Deprecated compatibility field. Text checks ignore it.
Response
- 200 OK
The response shape matches the requested workflow step.
Compose Response
object[]
required
18 Xquik editorial rules. Each item has
rule.string[]
required
4 questions for the next writing step.
object[]
required
7 source-specific suggestions for researching a fresh post angle.
string
required
Radar endpoint for the suggested source.
string
required
Source-specific instructions for using returned facts.
string
required
Radar source identifier.
string
required
Current-topic research that the source supports.
object[]
required
19 published signal names. Every
multiplier states that X does not publish
the production weight.object[]
required
19 published signal names. Every
weight is null.string
required
States that X publishes no universal engagement window or decay rate.
string[]
required
4 negative predictions named by X’s public model. No severity order is
claimed.
string
required
Signal source and evidence limits.
string
required
X post intent seeded with the topic.
string
required
Optional Radar research guidance and exact fields required for
refine.object[]
Saved styles. Present when saved styles exist and
styleUsername is omitted.string
Cached style username.
integer
Cached post count for the style.
string[]
Cached examples. Present when
styleUsername matches a cached style.string
Fallback instruction when the requested style is unavailable.
Refine Response
string[]
required
Goal, tone, media, and editorial guidance.
object[]
required
3 patterns. Each item has
description and pattern.string
required
X post intent seeded with the topic.
string
required
Exact fields required for the
score call.Score Response
The checks cover:- External links in the body
- Hashtags
- Excessive capitalization
- Length from 50 through 280 characters
- Excessive punctuation
- Emojis
- Em dashes, en dashes, or double dashes
- At least 8 substantive words
- Duplicate link-card URLs
intentUrl appears only when all 9 checks pass. Failed items include a
suggestion.Errors
- 400 Invalid Input
- 401 Unauthenticated
- 429 Rate Limited
invalid_input.Research current context with Radar. Save accepted
text with Create Draft. Analyze a reference
voice with Analyze Style.
Last modified on July 23, 2026
Previous
Create draftSave a tweet draft for later editing or posting from any connected X account
Next
Build a post draft