• #x-api
  • #cli
  • #xurl
開発未分類メモ

xurl とは

xurl は、X(旧Twitter)の開発者プラットフォームチームが公開している公式CLIツール。curlのX API特化版で、OAuth認証の面倒な部分を吸収してくれる。Go製。2024年12月にリポジトリが作られ、2026年2月にv1.0.3がリリースされている。GitHubスター数は480程度。

# 自分のアカウント情報を取得
xurl /2/users/me

# ツイートを投稿
xurl -X POST /2/tweets -d '{"text":"Hello world!"}'

# 最近のツイートを検索
xurl /2/tweets/search/recent?query=from:elonmusk

curl + OAuth認証の組み合わせでやっていたことが、認証周りを意識せずに実行できる。

インストール

4つの方法がある。

# npm
npm install -g @xdevplatform/xurl

# Homebrew(macOS)
brew install --cask xdevplatform/tap/xurl

# シェルスクリプト(~/.local/bin にインストール)
curl -fsSL https://raw.githubusercontent.com/xdevplatform/xurl/main/install.sh | bash

# Go
go install github.com/xdevplatform/xurl@latest

認証のセットアップ

1. 開発者アカウントを作る

console.x.com でX API開発者アカウントを作成し、Developer Agreementに同意する。アプリを作成するとClient IDとClient Secretが発行される。

2. xurl にアプリを登録

xurl auth apps add my-app \
  --client-id YOUR_CLIENT_ID \
  --client-secret YOUR_CLIENT_SECRET

3. OAuth 2.0 で認証

X API開発者コンソールで、リダイレクトURIに http://localhost:8080/callback を設定しておく。

xurl auth oauth2

ブラウザが開いてXの認可画面が表示される。許可するとトークンが ~/.xurl にYAML形式で保存される。

その他の認証方法

# OAuth 1.0a
xurl auth oauth1 \
  --consumer-key KEY --consumer-secret SECRET \
  --access-token TOKEN --token-secret SECRET

# Bearer Token(アプリ認証、読み取り専用)
xurl auth app --bearer-token BEARER_TOKEN

主な機能

複数アプリ・複数アカウント管理

xurl auth apps list          # 登録済みアプリ一覧
xurl auth default my-app     # デフォルトアプリを設定
xurl auth status             # 全アプリの認証状態を表示
xurl --app dev-app /2/users/me  # 特定アプリで実行

HTTPメソッド・ヘッダ指定

xurl -X POST /2/tweets -d '{"text":"投稿テスト"}'
xurl -X DELETE /2/tweets/:id
xurl -H "Content-Type: application/json" /2/tweets

ストリーミング

ストリーミングエンドポイントは自動検出される。

xurl /2/tweets/search/stream          # フィルタードストリーム
xurl /2/tweets/sample/stream          # サンプルストリーム
xurl -s /2/users/me                   # 強制ストリーミングモード

メディアアップロード

xurl media upload path/to/image.jpg
xurl media upload --media-type video/mp4 --category tweet_video file.mp4
xurl media status MEDIA_ID --wait     # 処理完了まで待機

Webhook

xurl webhook start                    # ローカルでWebhookサーバーを起動
xurl webhook start -p 8081 -o log.txt # ポートとログファイルを指定

ngrokを使ってローカルサーバーへのパブリックURLを自動生成する。

無料アカウントでどこまで使えるか

ここが本題。2026年3月時点で、X APIにはFreeティア(既存ユーザー向け)従量課金(新規ユーザー向け) の2つの入口がある。

Freeティア(まだ存在する)

既存のFreeティアはまだ残っていて、投稿(Write)専用で使える。

項目制限
ポスト投稿月1,500件(一時期500件に削減されたが復活)
ポスト読み取りほぼ不可(月0件)
ツイート検索不可
API バージョンv2のみ
料金$0

つまり xurl + Freeティアで、月1,500件までのツイート投稿が完全に無料 でできる。自分のボットや自動投稿には十分使える。ただし読み取り系(タイムライン取得、検索、分析)はほぼ使えない。

従量課金モデル(新規ユーザーのデフォルト)

2026年2月から、新規開発者はFree/Basic/Proの固定ティアを選べなくなり、従量課金が唯一の選択肢になった。

  • 月額固定費なし — 使った分だけクレジットから引かれる
  • 最低利用額なし — 使わなければ$0
  • クレジットを事前購入 して、API呼び出しごとに消費される
  • 月間200万ポスト読み取りの上限あり(それ以上はEnterprise)
  • 同一ポストの重複リクエストは24時間以内なら1回分のみ課金
  • 失敗したリクエストは課金されない

既存のBasic(200/月)・Pro(5,000/月)ユーザーはそのまま継続でき、従量課金との切り替えも可能。

具体的な料金

エンドポイントごとに異なる料金が設定されているが、具体的な単価はドキュメントに記載されていない。Developer Consoleにログインすると確認できる。

xAIクレジット還元

X APIクレジット購入額に応じて、xAI(Grok)で使えるクレジットが還元される。

累計購入額還元率
0〜1990%
200〜49910%
500〜99915%
$1,000以上20%

つまり「無料」でできること

  • 投稿: Freeティアで月1,500件まで無料
  • 読み取り・検索・分析: 無料では使えない。従量課金でクレジット購入が必要
  • xurl自体: 無料のOSS。インストール・認証設定に費用はかからない

主要エンドポイントのレートリミット(抜粋)

従量課金とは別に、レートリミット(単位時間あたりの呼び出し回数制限)がある。

ポスト関連

エンドポイントアプリ認証ユーザー認証
GET /2/tweets3,500/15分5,000/15分
GET /2/tweets/search/recent450/15分300/15分
POST /2/tweets10,000/24時間100/15分
DELETE /2/tweets/:id50/15分

ユーザー関連

エンドポイントアプリ認証ユーザー認証
GET /2/users/me75/15分
GET /2/users/:id300/15分900/15分
GET /2/users/:id/followers300/15分300/15分

いいね・リツイート

エンドポイントユーザー認証
POST /2/users/:id/likes50/15分 + 1,000/24時間
POST /2/users/:id/retweets50/15分

DM

エンドポイントユーザー認証
GET /2/dm_events15/15分
POST /2/dm_conversations/.../messages15/15分 + 1,440/24時間

全115以上のエンドポイントにレートリミットが設定されている。

まとめ

  • xurl はX API公式のCLI。OAuth認証をラップして curl 感覚でX APIを叩ける
  • Freeティアで月1,500件の投稿が無料。 ボットや自動投稿に使える
  • 読み取り・検索・分析には従量課金でクレジット購入が必要
  • 2026年2月以降の新規ユーザーは従量課金のみ。Freeティアを選べるかは要確認
  • xurl自体は無料のOSSで、インストール・認証設定に費用はかからない