エックスサーバーのサーバー管理、毎回サーバーパネルにログインして手作業でやっていませんか。
ドメイン追加、WordPressインストール、メールアカウント作成……。 こうした作業が積み重なると、地味に時間を取られますよね。
XServer APIを使えば、これらの操作をプログラムから自動化できます。 REST APIで提供されているため、curlやPythonなど使い慣れた言語・ツールからそのまま呼び出せるのが魅力です。
この記事では、XServer APIの基本的な仕様から、主要なエンドポイントの使い方まで体系的に整理しました。 「APIキーの取得から始めてどう使えばいいかわからない」という方から、「特定の機能だけ使いたい」という方まで役立つ内容にしています。 ぜひ最後までご覧ください。
XServer API の基本仕様
どんな API か
XServer APIは、エックスサーバー・XServerビジネスのサーバーパネルが提供する主要機能をRESTful APIとして利用するためのインターフェースです。 ベースURLは https://api.xserver.ne.jp、レスポンスはすべてJSON形式で返ってきます。
パスの構造は以下のようになっています。
{servername} には、サーバー契約時に発行される初期ドメインを指定します。
| サービス | 初期ドメインの形式 |
|---|---|
| エックスサーバー | サーバーID.xsrv.jp |
| XServerビジネス | サーバーID.xbiz.jp |
認証方式
すべてのリクエストに Authorization ヘッダーが必要です。
APIキーはXServerアカウントの「APIキー管理」から発行します。 キー名・有効期限・対象サーバー・権限(スコープ)を細かく設定できるため、用途ごとにキーを使い分けることもできますよ。
権限(スコープ)の種類
| 権限 | 使えるAPI |
|---|---|
| すべての操作 | 読み取り・書き込みすべて |
| 読み取り専用 | GETリクエストのみ |
| カスタム | 個別に選択した操作のみ |
自動化スクリプトに使うキーは「必要最小限の権限」に絞っておくと、万が一の流出時のリスクを抑えられます。
レート制限とエラーハンドリング
レート制限の仕様
APIには1分・1日あたりのリクエスト上限と、同時接続数の上限があります。 プランごとの上限は以下の通りです。
| プラン | リクエスト/分 | リクエスト/日 | 同時接続数 |
|---|---|---|---|
| エックスサーバー スタンダード | 60 | 10,000 | 5 |
| エックスサーバー プレミアム | 120 | 30,000 | 10 |
| エックスサーバー ビジネス / XServerビジネス 全プラン | 300 | 100,000 | 20 |
制限を超えると HTTP 429 が返ります。 レスポンスヘッダーの Retry-After に待機すべき秒数が入っているので、それを見て再試行する実装にしておくと安心です。
エラーレスポンスの読み方
エラー時は以下の形式のJSONが返ってきます。
{
"error": {
"code": "VALIDATION_ERROR",
"message": "入力値が正しくありません",
"errors": [
"エラーメッセージ1"
]
}
}error.code に入る値と意味をまとめました。
| コード | HTTP | 意味 |
|---|---|---|
| UNAUTHORIZED | 401 | APIキーが無効または期限切れ |
| FORBIDDEN | 403 | 権限不足・IP制限 |
| NOT_FOUND | 404 | 指定リソースが存在しない |
| OPERATION_ERROR | 409 | サーバー側の制約で操作できなかった |
| VALIDATION_ERROR | 422 | 入力値のバリデーションエラー |
| RATE_LIMIT_EXCEEDED | 429 | レート制限超過 |
| INTERNAL_ERROR | 500 | API内部の予期しないエラー |
| BACKEND_ERROR | 502 | バックエンドとの通信エラー |
OPERATION_ERROR は「リクエスト自体は正しいが、重複登録やパスワードポリシー違反などで完了できなかった」ケースです。 message フィールドに具体的な原因が入っているので確認しましょう。
ドメイン所有権の確認が必要な操作
一部のAPIでは、操作前にドメインの所有権確認が自動で実施されます。
確認が必要なエンドポイント
- ドメイン追加(
POST /domain) - メールアカウント作成(
POST /mail)
確認手順
まずサーバー情報取得API(GET /server-info)を実行して、レスポンスに含まれる domain_validation_token を取得します。 次に、操作対象ドメインのDNSに以下のTXTレコードを追加します。
| 項目 | 値 |
|---|---|
| ホスト名 | _xserver-verify.{domain} |
| 値 | xserver-verify={取得したトークン} |
DNS反映を待ってから対象のAPIを実行すれば、所有権確認が完了します。
主要エンドポイントの使い方
サーバー情報を取得する
サーバー基本情報
GET /v1/server/{servername}/server-info でサーバーのスペックやソフトウェアバージョン、ネームサーバーなどを取得できます。
curl "https://api.xserver.ne.jp/v1/server/xs123456.xsrv.jp/server-info" \
-H "Authorization: Bearer YOUR_API_KEY"レスポンスには利用可能なPHPバージョン一覧や、ドメイン所有権確認用のトークンも含まれます。
ディスク使用量・設定件数
GET /server-info/usage で現在のリソース利用状況を確認できます。 ディスク使用量(GB)、ファイル数、ドメイン・メール・FTP・データベースの件数がまとめて返ってきます。
WordPress を自動インストールする
インストール済みWP一覧の取得
GET /wp で簡単インストールで追加したWordPressの一覧を取得できます。 domain クエリパラメータで特定ドメインに絞り込むことも可能です。
WordPressを新規インストール
POST /wp で指定URLにWordPressをインストールします。 リクエストボディに必要な情報は以下の通りです。
| パラメータ | 必須 | 説明 |
|---|---|---|
| url | ✓ | インストール先URL(スキーム省略可) |
| title | ✓ | サイトタイトル |
| admin_username | ✓ | 管理者ユーザー名 |
| admin_password | ✓ | 管理者パスワード(7文字以上) |
| admin_email | ✓ | 管理者メールアドレス |
| memo | – | メモ(任意) |
WordPressを削除する
DELETE /wp/{wp_id} でアンインストールできます。 削除時の挙動はオプションで制御できます。
| オプション | デフォルト | 説明 |
|---|---|---|
| delete_db | true | 関連DBも削除する |
| delete_db_user | false | 関連DBユーザーを削除する |
| delete_cron | true | Cronも削除する |
delete_db_user のデフォルトが false な点に注意が必要です。 完全に削除したい場合は明示的に true を指定してください。
ドメイン・サブドメインを管理する
ドメインの追加
POST /domain でサーバーにドメインを追加します。 ssl: true にすると同時に無料SSL(Let’s Encrypt)も設定されます。 デフォルトでHTTPS転送とAIクローラー遮断も有効になっています。
レスポンスの ssl_status で SSL設定の結果を確認できます。
| ssl_status | 意味 |
|---|---|
| success | SSL設定成功 |
| failed | SSL設定失敗 |
| failed_nameserver | ネームサーバー未設定のため失敗 |
サブドメインの追加
POST /subdomain でサブドメインを追加します。 短時間に連続して作成すると一時エラーになることがあるため、間隔を空けて再試行する実装が安全です。
日本語ドメインの扱い
APIによって指定方法が異なる点に注意が必要です。
| API | 指定方法 |
|---|---|
| ドメイン追加(POST /domain) | 日本語のまま指定可 |
| それ以外のドメイン操作 | Punycode変換が必要 |
メールアカウントを管理する
一覧取得・詳細取得
GET /mail で全アカウントを、GET /mail/{mail_account} で指定アカウントの詳細(使用量含む)を取得できます。
メールアカウントの作成
POST /mail でアカウントを作成します。 パスワードは6文字以上、容量は1~50,000MBの範囲で設定できます。
転送設定
GET /mail/{mail_account}/forwarding で転送設定を確認し、PUT で上書き更新できます。 forwarding_addresses に空配列を渡すと転送先をクリアできます。 keep_in_mailbox: true にすると、転送後もメールボックスにコピーが残ります。
メール振り分けルール
POST /mail-filter で振り分けルールを追加できます。 条件(conditions)は複数指定でき、すべてANDで評価されます。
対象フィールドと一致条件の組み合わせは以下の通りです。
| フィールド(field) | 意味 |
|---|---|
| subject | 件名 |
| from | 差出人 |
| to | あて先 |
| body | 本文 |
| header | ヘッダー全体 |
| 一致条件(match_type) | 意味 |
|---|---|
| contain | キーワードを含む |
| match | 完全一致 |
| start_from | キーワードから始まる |
振り分け先(action.type)は mail_address・spam_folder・trash・delete の4種類があります。
MySQL データベースを管理する
データベースとユーザーの作成
POST /db でデータベースを、POST /db/user でMySQLユーザーを作成します。 どちらも name_suffix にサフィックスを指定する形式です。
たとえば name_suffix: "db01" を指定すると、xs123456_db01 という名前のDBが作成されます。
権限の付与・削除
POST /db/user/{db_user}/grant でユーザーにDB権限を付与し、DELETE で権限を削除できます。 GET で現在どのDBにアクセスできるかを確認できます。
DNS レコードを管理する
POST /dns でA・AAAA・CNAME・MX・TXT・SRV・CAAレコードを追加できます。 TTLは60~86400秒の範囲で指定できます(デフォルト3600秒)。
MXレコードには priority(優先度)を指定できます。
レコードの更新は PUT /dns/{dns_id}、削除は DELETE /dns/{dns_id} で行います。 更新時は送信した項目のみが更新され、省略した項目は維持されます。
Cron を管理する
Cron の追加
POST /cron でCronジョブを追加します。 minute・hour・day・month・weekday・command はすべて必須です。
Cron の更新
PUT /cron/{cron_id} で設定を変更できます。 スケジュールやコマンドを変更すると id が変わります。 次回のPUT/DELETEでは、レスポンスに返ってきた新しい id を使うようにしてください。
PHPバージョンを切り替える
GET /php-version でドメインごとの現在のPHPバージョンと、選択可能なバージョン一覧を取得できます。 PUT /php-version/{domain} でバージョンを変更します。
curl -X PUT \
"https://api.xserver.ne.jp/v1/server/xs123456.xsrv.jp/php-version/example.com" \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{"version": "8.3"}'アクセスログ・エラーログを取得する
GET /access-log と GET /error-log で各ドメインのログを取得できます。 どちらも domain パラメータが必須です。
| クエリパラメータ | 説明 |
|---|---|
| domain | 対象ドメイン(必須) |
| lines | 末尾から取得する行数(省略時は全件) |
| keyword | 絞り込みキーワード |
まとめ
XServer APIで自動化できる操作を整理すると、以下のようになります。
| カテゴリ | できること |
|---|---|
| サーバー情報 | スペック確認・利用状況取得 |
| WordPress | インストール・削除・一覧取得 |
| ドメイン・サブドメイン | 追加・削除・SSL設定 |
| メール | アカウント管理・転送・振り分けルール |
| FTP | アカウント管理 |
| MySQL | DB・ユーザー管理・権限付与 |
| DNS | レコードのCRUD操作 |
| Cron | ジョブの追加・変更・削除 |
| PHP | バージョン切り替え |
| ログ | アクセスログ・エラーログ取得 |
APIキーの権限設定・レート制限・ドメイン所有権確認の3点は、使い始める前に特に確認しておくべきポイントです。 特にドメイン追加やメールアカウント作成はDNS設定が前提になるので、TXTレコードの準備を先に済ませておくとスムーズに進みます。
まずは GET /server-info や GET /server-info/usage のような読み取り系APIから試してみるのがおすすめです。 レスポンスの構造を確認しながら、徐々に書き込み系の自動化へと広げていきましょう。
最後までご覧いただき、ありがとうございます。
