---
title: "[Step 5/5] Publish an article draft"
method: POST
path: "/x/articles/{article_id}/publish"
tags: ["Article Endpoints"]
---

# \[Step 5/5\] Publish an article draft

`POST /x/articles/{article_id}/publish`

## Request

- Base URL: `https://api.twexapi.io`
- URL: `https://api.twexapi.io/x/articles/{article_id}/publish`
- Auth: HTTP bearer

**Step 5 of 5** — Publish the draft. Returns `article_id` and `tweet_id`.

- `article_id`: obtained from Step 1
- `visibility`: `Public` (default) / `Followers` / `Mentioned`

⚠️ Make sure Steps 3 and 4 are completed before publishing. A draft without a title or content can still be published but will appear empty.

## Path parameters

- `article_id` string, required

## Request body

- ArticlePublishBody
  - `cookie` string, required: The user's own authorized Twitter session credentials or auth_token (BYOC — Bring Your Own Cookie). Stateless proxy execution with zero credential retention. See [Authentication Security](/authentication#write-operations--byoc-bring-your-own-cookie) and [How to get Cookie](https://youtube-promotion.pages.dev/how-to-get-twitter-cookie).
  - `visibility` string: Public / Followers / Mentioned

## Response `200`

Successful Response

- ArticlePublishResponse
  - `code` integer, required: 200 = success, 429 = rate limit, 500 = server error
  - `msg` string, required: Human-readable result message
  - `data` ArticlePublishData
    - `article_id` string, required: Article draft ID
    - `tweet_id` string, required: Tweet ID of the published article post

## Other responses

- `422`: Validation Error
- `429`: Daily tweet limit reached
- `500`: Server error

---

[API](https://skmtc.dev/twexapi/apis/twexapi-rest-api.md) · [All operations](https://skmtc.dev/twexapi/apis/twexapi-rest-api/llms.txt) · [OpenAPI document](https://skmtc.dev/twexapi/apis/twexapi-rest-api/revisions/59a99ac0d8f7?raw)
