Skip to main content
POST
Tweet Composer API, Draft Checks & Post Preview
Free. This endpoint does not consume credits.
Use 3 Compose calls. The endpoint returns guidance and checks. It does not write or publish the final post.

Workflow

  1. Call compose with a topic.
  2. If fresh context helps, fetch one suggested radarRecommendations endpoint.
  3. Pass selected facts to refine with the topic, goal, and tone.
  4. Write a draft. Call score with the full text.
The guidance uses Xquik editorial heuristics. It does not predict reach. X does not publish its production ranking weights.

Requests

Returns 18 editorial rules, 4 follow-up questions, and 7 source-specific Radar recommendations.
Required fields: step, topic.Optional fields:
  • goal: engagement, followers, authority, or conversation. Defaults to engagement.
  • 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.
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:
  1. External links in the body
  2. Hashtags
  3. Excessive capitalization
  4. Length from 50 through 280 characters
  5. Excessive punctuation
  6. Emojis
  7. Em dashes, en dashes, or double dashes
  8. At least 8 substantive words
  9. Duplicate link-card URLs
These are Xquik style checks. They are not X ranking guarantees.
intentUrl appears only when all 9 checks pass. Failed items include a suggestion.

Errors

Missing step-specific fields also return invalid_input.
Research current context with Radar. Save accepted text with Create Draft. Analyze a reference voice with Analyze Style.