【XServer API】エックスサーバーをAIで管理しよう!REST API の使い方・主要機能まとめ

  • URLをコピーしました!

エックスサーバーのサーバー管理、毎回サーバーパネルにログインして手作業でやっていませんか。

ドメイン追加、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日あたりのリクエスト上限と、同時接続数の上限があります。 プランごとの上限は以下の通りです。

プランリクエスト/分リクエスト/日同時接続数
エックスサーバー スタンダード6010,0005
エックスサーバー プレミアム12030,00010
エックスサーバー ビジネス / XServerビジネス 全プラン300100,00020

制限を超えると HTTP 429 が返ります。 レスポンスヘッダーの Retry-After に待機すべき秒数が入っているので、それを見て再試行する実装にしておくと安心です。

エラーレスポンスの読み方

エラー時は以下の形式のJSONが返ってきます。

{
  "error": {
    "code": "VALIDATION_ERROR",
    "message": "入力値が正しくありません",
    "errors": [
      "エラーメッセージ1"
    ]
  }
}

error.code に入る値と意味をまとめました。

コードHTTP意味
UNAUTHORIZED401APIキーが無効または期限切れ
FORBIDDEN403権限不足・IP制限
NOT_FOUND404指定リソースが存在しない
OPERATION_ERROR409サーバー側の制約で操作できなかった
VALIDATION_ERROR422入力値のバリデーションエラー
RATE_LIMIT_EXCEEDED429レート制限超過
INTERNAL_ERROR500API内部の予期しないエラー
BACKEND_ERROR502バックエンドとの通信エラー

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_dbtrue関連DBも削除する
delete_db_userfalse関連DBユーザーを削除する
delete_crontrueCronも削除する

delete_db_user のデフォルトが false な点に注意が必要です。 完全に削除したい場合は明示的に true を指定してください。


ドメイン・サブドメインを管理する

ドメインの追加

POST /domain でサーバーにドメインを追加します。 ssl: true にすると同時に無料SSL(Let’s Encrypt)も設定されます。 デフォルトでHTTPS転送とAIクローラー遮断も有効になっています。

レスポンスの ssl_status で SSL設定の結果を確認できます。

ssl_status意味
successSSL設定成功
failedSSL設定失敗
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_addressspam_foldertrashdelete の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ジョブを追加します。 minutehourdaymonthweekdaycommand はすべて必須です。

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-logGET /error-log で各ドメインのログを取得できます。 どちらも domain パラメータが必須です。

クエリパラメータ説明
domain対象ドメイン(必須)
lines末尾から取得する行数(省略時は全件)
keyword絞り込みキーワード

まとめ

XServer APIで自動化できる操作を整理すると、以下のようになります。

カテゴリできること
サーバー情報スペック確認・利用状況取得
WordPressインストール・削除・一覧取得
ドメイン・サブドメイン追加・削除・SSL設定
メールアカウント管理・転送・振り分けルール
FTPアカウント管理
MySQLDB・ユーザー管理・権限付与
DNSレコードのCRUD操作
Cronジョブの追加・変更・削除
PHPバージョン切り替え
ログアクセスログ・エラーログ取得

APIキーの権限設定・レート制限・ドメイン所有権確認の3点は、使い始める前に特に確認しておくべきポイントです。 特にドメイン追加やメールアカウント作成はDNS設定が前提になるので、TXTレコードの準備を先に済ませておくとスムーズに進みます。

まずは GET /server-infoGET /server-info/usage のような読み取り系APIから試してみるのがおすすめです。 レスポンスの構造を確認しながら、徐々に書き込み系の自動化へと広げていきましょう。

最後までご覧いただき、ありがとうございます。

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!
返信通知を受け取る
通知
guest
0 コメント
最新のコメント
一番古いコメント 投票の多いコメント
Inline Feedbacks
すべてのコメントを表示
目次