> ## Documentation Index
> Fetch the complete documentation index at: https://x-preview-mintlify-d5730eee.mintlify.site/llms.txt
> Use this file to discover all available pages before exploring further.

# はじめに

> X API の Articles エンドポイントを使って、リッチテキスト、画像、動画、埋め込み投稿、リンク、見出しなどを含む長文記事の下書きをプログラムで作成・編集し、OAuth で認証したユーザーとして X 上にそのまま公開するまでの一連の流れを解説します。

Articles エンドポイントを使うと、開発者は X 上で下書きの Articles をプログラムから作成して公開できます。Articles は、リッチテキスト書式、埋め込み投稿、リンク、画像をサポートする長文の投稿です。

これらのエンドポイントは、`tweet.read`、`tweet.write`、`users.read` スコープを伴う OAuth 1.0a または OAuth 2.0 PKCE によるユーザー認証が必要です。

現在、API は次の 2 つのエンドポイントをサポートしています。

## 下書き Article を作成する

開発者は `POST https://api.x.com/2/articles/draft` エンドポイントを使用して、新しい下書き Article を作成できます。リクエストボディには、記事のタイトル、テキストブロックとエンティティの [DraftJS](https://draftjs.org/docs/api-reference-content-state) コンテンツステートで表される本文、そして任意で [メディアアップロードエンドポイント](/x-api/media/introduction) からアップロードしたカバーメディアを含めます。

## Article を公開する

下書きが準備できたら、開発者は `POST https://api.x.com/2/articles/{article_id}/publish` エンドポイントを使用して公開できます。ここで `article_id` は下書きを作成したときに返された ID です。

## はじめに

これらのエンドポイントを使用するには、ユーザーアクセストークンが必要です。生成方法の詳細については、[PKCE を使った OAuth 2.0 認可コードフロー](/fundamentals/authentication/oauth-2-0/authorization-code) のドキュメントを参照してください。

アクセストークンを取得したら、以下のようにして下書き Article を作成できます。

```bash theme={null}
curl --request POST 'https://api.x.com/2/articles/draft' \
  --header 'Authorization: Bearer XXXXX' \
  --header 'Content-Type: application/json' \
  --data '{
    "title": "My first Article",
    "content_state": {
      "blocks": [
        {
          "text": "Hello from the Articles API!",
          "type": "unstyled"
        }
      ],
      "entities": []
    }
  }'
```

リクエストが成功すると、次のような JSON レスポンスが返されます。

```json theme={null}
{
  "data": {
    "id": "1146654567674912769",
    "title": "My first Article"
  }
}
```

その後、返された Article ID を使って下書きを公開できます。

```bash theme={null}
curl --request POST 'https://api.x.com/2/articles/1146654567674912769/publish' \
  --header 'Authorization: Bearer XXXXX'
```

リクエストが成功すると、レスポンスには公開された Article に対して作成された投稿の ID が含まれます。

```json theme={null}
{
  "data": {
    "post_id": "1346889436626259968"
  }
}
```
