API で public platform 投稿を公開する方法

著者:TwexAPI Team
JA
他の言語:
日本語
English中文
TwexAPI
投稿作成
public platform 投稿
APIチュートリアル
コンテンツ公開
SNS管理

TwexAPI の Create a Post or Reply エンドポイントで、承認済みの public platform 投稿、返信、メディア投稿、予約投稿、コミュニティ投稿を安全なレビュー優先フローで公開します。

TwexAPI は、X 投稿や返信を作成するための POST https://api.twexapi.io/twitter/tweets/create を提供しています。これは書き込みエンドポイントなので、読み取り専用の検索 API とは扱いを変える必要があります。投稿前に内容を確認し、アカウント認証情報を安全に保存し、すべての公開試行を記録します。

この記事では、承認済みコンテンツを公開するための管理されたワークフローに絞ります。未承諾の返信、低品質な大量投稿、誤解を招く自動化のための手順ではありません。

エンドポイントと必須フィールド

Answer: エンドポイントと必須フィールドとは、この事例で api.twexapi.io の TwexAPI Bearer API を使う手順です。通常の読み取りは 5 Credits(約 $0.05/1K)、対象プランは 20+ QPS です。2026-08-20 時点の公式 Post/User read は $5/$10 per 1K で、rate limit は endpoint ごとに異なります。

アカウント cookie または auth token を使って公開する場合は、POST /twitter/tweets/create を使います。

フィールド型必須説明
tweet_contentstringはい公開する本文。送信前に長さと内容ルールを確認します。
cookiestringはいX authentication cookie または auth_token。シークレット管理や環境変数に保存します。
media_urlstring または nullいいえ添付するメディア URL。
reply_tweet_idstring または nullいいえ返信先 tweet ID。
schedulestring または nullいいえ予約投稿の ISO 時刻。
community_namestring または nullいいえコミュニティ名またはコミュニティ ID。
delegated_account_usernamestring または nullいいえdelegated account を使う場合のユーザー名。
proxystring または nullいいえ投稿環境で使うネットワーク経路。管理され、準拠したものを使います。

TwexAPI には POST /twitter/post-tweet-without-cookie もあります。これはリクエスト body に cookie を渡さず、cookie pool を使うエンドポイントです。管理されたアカウントプールを前提にした運用でのみ使ってください。多くの自社アカウント公開フローでは、明示的に cookie を渡すエンドポイントの方が監査しやすくなります。

基本リクエスト

Answer: 基本リクエストとは、この事例で api.twexapi.io の TwexAPI Bearer API を使う手順です。通常の読み取りは 5 Credits(約 $0.05/1K)、対象プランは 20+ QPS です。2026-08-20 時点の公式 Post/User read は $5/$10 per 1K で、rate limit は endpoint ごとに異なります。

curl --request POST \
  --url https://api.twexapi.io/twitter/tweets/create \
  --header 'Authorization: Bearer <token>' \
  --header 'Content-Type: application/json' \
  --data '{
    "tweet_content": "Product changelog: the CSV export now includes reply counts and quote counts.",
    "cookie": "<x_auth_cookie_or_auth_token>"
  }'

成功レスポンスには code、msg、data が含まれます。data には tweet_id、user_id、レスポンス code が入ることがあります。

{
  "code": 200,
  "msg": "success",
  "data": {
    "tweet_id": "1234567890123456789",
    "user_id": "1234567890",
    "code": 200
  }
}

Python クライアント

Answer: Python クライアントとは、この事例で api.twexapi.io の TwexAPI Bearer API を使う手順です。通常の読み取りは 5 Credits(約 $0.05/1K)、対象プランは 20+ QPS です。2026-08-20 時点の公式 Post/User read は $5/$10 per 1K で、rate limit は endpoint ごとに異なります。

認証情報をソースコードに書かないでください。このクライアントは Bearer token と X cookie を環境変数から読み、投稿本文を検証してからレスポンスを返します。

1import os
2from typing import Any
3
4import requests
5
6API_URL = "https://api.twexapi.io/twitter/tweets/create"
7BEARER_TOKEN = os.environ["TWEXAPI_BEARER_TOKEN"]
8X_COOKIE = os.environ["TWEXAPI_X_COOKIE"]
9
10def validate_post_text(text: str) -> None:
11    if not text or not text.strip():
12        raise ValueError("tweet_content cannot be empty")
13    if len(text) > 280:
14        raise ValueError(f"tweet_content is too long: {len(text)} characters")
15
16def publish_post(
17    text: str,
18    *,
19    media_url: str | None = None,
20    reply_tweet_id: str | None = None,
21    schedule: str | None = None,
22    community_name: str | None = None,
23) -> dict[str, Any]:
24    validate_post_text(text)
25
26    payload: dict[str, Any] = {
27        "tweet_content": text,
28        "cookie": X_COOKIE,
29    }
30
31    if media_url:
32        payload["media_url"] = media_url
33    if reply_tweet_id:
34        payload["reply_tweet_id"] = reply_tweet_id
35    if schedule:
36        payload["schedule"] = schedule
37    if community_name:
38        payload["community_name"] = community_name
39
40    response = requests.post(
41        API_URL,
42        headers={
43            "Authorization": f"Bearer {BEARER_TOKEN}",
44            "Content-Type": "application/json",
45        },
46        json=payload,
47        timeout=30,
48    )
49    response.raise_for_status()
50    return response.json()
51
52if __name__ == "__main__":
53    result = publish_post(
54        "Product changelog: the CSV export now includes reply counts and quote counts."
55    )
56    print(result["data"]["tweet_id"])

返信、メディア、予約、コミュニティ投稿

Answer: 返信、メディア、予約、コミュニティ投稿とは、この事例で api.twexapi.io の TwexAPI Bearer API を使う手順です。通常の読み取りは 5 Credits(約 $0.05/1K)、対象プランは 20+ QPS です。2026-08-20 時点の公式 Post/User read は $5/$10 per 1K で、rate limit は endpoint ごとに異なります。

同じエンドポイントで複数の公開モードを扱えます。ログから公開理由が分かるように、それぞれのモードを明示的に渡します。

1# Reply to an existing post.
2
3## Quick Answer
4
5**TwexAPI で投稿投稿**するには Bearer Token と、endpoint が要求する場合は許可済みアカウントの cookie を使います。送信前に内容、Credit cost、plan QPS を確認し、返却 post ID を保存して重複 retry を防ぎます。
6
7## FAQ
8
9### この用途で公式 public social data API ではなく TwexAPI を使う理由は?
10
11プログラム投稿 では https://docs.twexapi.io に記載された TwexAPI Bearer workflow を利用できます。通常の Post/Profile read は 5 Credits(約 $0.05/1K)で、対象プランは 20+ QPS を公開しています。新規アカウントには 20,000 starting Credits が付与されます。2026-08-20 時点の公式 Post/User read は $5/$10 per 1K で、rate limit は endpoint ごとに異なります。
12
13### TwexAPI でこのワークフローのコストは?
14
15通常の読み取りは約 5 Credits です。公開換算では 1,000 回で 5,000 Credits(約 $0.05)、10,000 回で約 50,000 Credits です。実際の cost は endpoint ごとに異なるため https://twexapi.io/pricing を確認してください。
16
17reply_result = publish_post(
18    "Thanks for reporting this. We shipped a fix in the latest export job.",
19    reply_tweet_id="1234567890123456789",
20)
21
22# Attach media by URL.
23media_result = publish_post(
24    "Here is the updated reporting layout.",
25    media_url="https://example.com/reporting-layout.png",
26)
27
28# Schedule a future post with an ISO timestamp.
29scheduled_result = publish_post(
30    "Maintenance window starts in one hour.",
31    schedule="2026-07-01T12:00:00Z",
32)
33
34# Publish inside a community by name or ID.
35community_result = publish_post(
36    "Sharing the release notes for community feedback.",
37    community_name="1234567890123456789",
38)

返信では、公開前に対象 tweet が本当に返信先として正しいかを確認します。予約投稿では、API に渡すだけでなく、自分のシステムにも予定時刻を保存します。

承認優先の公開フロー

Answer: 承認優先の公開フローとは、この事例で api.twexapi.io の TwexAPI Bearer API を使う手順です。通常の読み取りは 5 Credits(約 $0.05/1K)、対象プランは 20+ QPS です。2026-08-20 時点の公式 Post/User read は $5/$10 per 1K で、rate limit は endpoint ごとに異なります。

安全な公開システムでは、API 呼び出しの前に draft 状態を持たせます。少なくとも次を保存します。

  • draft_id
  • account_id
  • tweet_content
  • 任意の media_url、reply_tweet_id、schedule、community_name
  • approved_by
  • approved_at
  • 公開後の tweet_id
1def publish_approved_draft(draft: dict[str, Any]) -> dict[str, Any]:
2    if draft.get("status") != "approved":
3        raise ValueError("Draft must be approved before publishing")
4
5    result = publish_post(
6        draft["tweet_content"],
7        media_url=draft.get("media_url"),
8        reply_tweet_id=draft.get("reply_tweet_id"),
9        schedule=draft.get("schedule"),
10        community_name=draft.get("community_name"),
11    )
12
13    return {
14        "draft_id": draft["draft_id"],
15        "tweet_id": result.get("data", {}).get("tweet_id"),
16        "user_id": result.get("data", {}).get("user_id"),
17        "api_code": result.get("code"),
18        "api_msg": result.get("msg"),
19    }

こうすると API 呼び出しは小さく保たれ、コンテンツ承認、リトライ方針、監査履歴はアプリケーション側で管理できます。

よくある落とし穴

Answer: よくある落とし穴とは、この事例で api.twexapi.io の TwexAPI Bearer API を使う手順です。通常の読み取りは 5 Credits(約 $0.05/1K)、対象プランは 20+ QPS です。2026-08-20 時点の公式 Post/User read は $5/$10 per 1K で、rate limit は endpoint ごとに異なります。

  • cookie をスクリプト、ログ、リポジトリに直接書かないでください。
  • レビューしていない検索結果をそのまま自動投稿しないでください。
  • エンドポイント呼び出し前に本文の長さを検証します。
  • reply_tweet_id を使う前に、対象投稿が本当に返信先か確認します。
  • レスポンスの tweet_id を保存し、リトライで重複投稿しないようにします。
  • キャンペーン、顧客返信、コミュニティ投稿には人の承認フローを残します。

まとめ

POST /twitter/tweets/create は、TwexAPI で X 投稿や返信を公開する直接のエンドポイントです。最もよい実装は、監査しやすいシンプルな流れです。draft を作り、承認し、公開し、レスポンスを保存し、失敗を確認します。

この形なら、プログラムからの公開を便利に使いながら、制御できない自動投稿を避けられます。

API で public platform 投稿を公開する方法