WPForms REST API および Abilities API リファレンス

WPForms 1.9.9 では、WordPress Abilities API を基盤とした読み取り専用の REST API が導入されました。この API を使用すると、フォームの一覧表示、フォーム設定の取得、エントリの取得や検索、フォーム統計情報の取得を、任意の HTTP クライアント、コマンドライン、独自の PHP コード、あるいは Model Context Protocol (MCP) に対応した AI アシスタントから行うことができます。

「WPForms REST API」と検索してこのページにたどり着いたなら、まさにここがそれです。独立したREST APIは存在しません。Abilities APIとの連携こそが、WPFormsがHTTP経由でデータを公開する仕組みなのです

Abilities API とは

Abilities APIは、WordPress 6.9で追加されたWordPressのコア機能です。これにより、プラグインは個別の権限( 能力) に、名前、入力スキーマ、出力スキーマ、および権限コールバックを指定します。その後、WordPress は登録されたすべての機能を、REST API 経由で自動的に公開します。 /wp-json/wp-abilities/v1/abilities/<ability>/run また、公式のMCPアダプタープラグインを通じて、MCP互換のAIクライアントとも連携します。

WPFormsは、 wpforms/ 名前空間。各機能では、管理画面で使用されているのと同じWPFormsの権限チェックが実行されます(wpforms_current_user_can())、したがって、RESTおよびMCPインターフェースは、新しい権限モデルを導入するのではなく、既存の権限モデルを継承します。

必要条件

  • WordPress 6.9 以降
  • WPForms Lite または Pro バージョン 1.9.9 以降(一部の機能は Pro 版限定です。詳細は以下の参照表をご覧ください)
  • MCPをご利用のお客様へ:wordpress/mcp-adapterプラグイン

アビリティを発動する

すべての能力は、2つの方法を通じて発動できます。結果は同じですので、発動する状況に合わせてどちらかを選択してください。

REST API

認証済みの GET ~への依頼 /wp-json/wp-abilities/v1/abilities/<ability>/run. WPFormsのすべての機能は読み取り専用であるため、 GET が受け入れられます; POST 戻り値 405 Method Not Allowed.

注: パラメータを、 input 例えば、key input[limit]=10&input[status]=publish. クライアントが自動的にURLエンコードを行わない場合は、括弧をURLエンコードしてください(%5B にとって [, %5D にとって ]).

curl "$WP_SITE/wp-json/wp-abilities/v1/abilities/wpforms/list-forms/run?input%5Blimit%5D=10&input%5Bstatus%5D=publish"

PHP

`wp_load_theme` の後に実行されるプラグイン、テーマ、またはカスタムコードから wp_abilities_api_init アクションが発動したため、以下の方法でその能力を取得する wp_get_ability() そして、その execute() メソッド。入力は、パラメータの連想配列として渡します(各能力のパラメータ表に記載されているのと同じ名前を使用してください)。

$ability = wp_get_ability( 'wpforms/list-forms' );

if ( $ability ) {
    $result = $ability->execute(
        [
            'limit'  => 10,
            'status' => 'publish',
        ]
    );

    if ( is_wp_error( $result ) ) {
        // Handle error.
        return;
    }

    // $result['forms']  array of form summaries
    // $result['total']  total count (integer)
}

認証

RESTトランスポートでは、標準のWordPress認証が使用されます。外部クライアントには、「アプリケーションパスワード」の使用をお勧めします。これはWordPressのコア機能として組み込まれており、追加のプラグインは不要です。

アプリケーションパスワードの生成

  1. 呼び出しを実行する権限を持つWordPressユーザーとしてログインしてください。
  2. 「ユーザー」>「プロフィール」に移動し、「アプリケーション用パスワード」セクションまでスクロールします。
  3. 統合の名前を入力し、「新しいアプリケーションパスワードを追加」をクリックします。
  4. 生成されたパスワードをコピーしてください。WordPressでは一度しか表示されません。

アプリケーションパスワードをプログラムで管理するためのRESTエンドポイントなど、より詳細な情報については、WordPressコアチームの「アプリケーションパスワード統合ガイド」を参照してください。

認証情報の送信

すべてのリクエストにおいて、ユーザー名とアプリケーションのパスワードをHTTPベーシック認証として渡してください。

curl を使用して

このドキュメントのサンプルをそのまま実行できるように、サイトのURLを環境変数として設定してください:

export WP_SITE="https://your-wordpress-site.com"

次に、 -u すべての curl コマンドにこのフラグを指定します。フラグの値は、ユーザー名、コロン、アプリケーションパスワードの順で指定します(スペースは入れないでください)。

Postman、Insomnia、またはその他のクライアントを使用して

リクエストの認証タイプを「Basic Auth」に設定し、ユーザー名とアプリケーションパスワードを入力してください。エンコード処理はクライアント側が自動的に行います。

ヘッダーを手動で設定する

認証情報をBase64エンコードして送信してください Authorization ヘッダー:

ユーザー名とアプリケーションのパスワードをコロン(スペースなし)で区切って1つの文字列にまとめ、任意のツールを使用してその結果をBase64エンコードしてください(base64 コマンド、オンラインエンコーダー、または使用している言語の標準ライブラリなど)。エンコードされた値を、すべてのリクエストで Authorization ヘッダー、以下の形式で Authorization: Basic <encoded>.

このドキュメントの残りの部分にあるリクエスト例では、読みやすさを考慮して認証フラグを省略しています。 -u flag(または Authorization (ヘッダー)をすべての実リクエストに含めるか、APIは 401 Unauthorized.

権限

各機能は、実行前に特定のWPFormsの権限を確認します。確認に失敗した場合、 WP_Error HTTPステータスコード 403.

能力機能
wpforms/list-formsview_forms
wpforms/get-formview_form_single
wpforms/get-form-stats (ライト)view_form_single
wpforms/get-form-stats (プロ)view_entries_form_single
wpforms/get-entry-summariesview_entries_form_single
wpforms/get-entryview_entry_single
wpforms/search-entries (~とともに) form_id)view_entries_form_single
wpforms/search-entries (なし form_id)view_entries

アビリティ一覧

すべての関数は読み取り専用かつ冪等です。エラーは次のように返されます WP_Error JSONにシリアライズされたオブジェクト code, messageそして data.status の分野だ。

注: 以下のリクエスト例では、読みやすさを考慮して認証フラグを省略しています。各呼び出しは認証が必要であり、そうでない場合は 401 Unauthorized. を追加します -u flag(または同等のものを送信する) Authorization: Basic すべての curl コマンドに (header) を指定します。詳細については、「認証」のセクションを参照してください。

wpforms/フォーム一覧

要約メタデータ付きのリストを表示します。Lite版およびPro版で利用可能です。

パラメータ

名称タイプ必須デフォルト説明
statusストリングいいえpublishフォームの状態。そのうちの1つ publish, draft, trash.
limit整数いいえ20返すフォームの最大数。範囲は1から100です。
offset整数いいえ0スキップするフォームの数。

リクエスト例

curl "$WP_SITE/wp-json/wp-abilities/v1/abilities/wpforms/list-forms/run?input%5Blimit%5D=10&input%5Bstatus%5D=publish"

回答例

{
  "forms": [
    {
      "id": 123,
      "title": "Contact Form",
      "status": "publish",
      "created": "2026-01-27 10:00:00",
      "modified": "2026-02-15 14:30:00",
      "author": 1
    }
  ],
  "total": 5
}

wpforms/get-form

特定のフォームを1つ取得します。これには、設定の一部(厳選されたもの)および(オプションで)フィールド構成が含まれます。Lite版およびPro版で利用可能です。

パラメータ

名称タイプ必須デフォルト説明
form_id整数はい-取得するフォームのID。
include_fieldsブール値いいえtrueレスポンスにフォームのフィールド設定を含める。

リクエスト例

curl "$WP_SITE/wp-json/wp-abilities/v1/abilities/wpforms/get-form/run?input%5Bform_id%5D=123&input%5Binclude_fields%5D=true"

回答例

{
  "id": 123,
  "title": "Contact Form",
  "status": "publish",
  "created": "2026-01-27 10:00:00",
  "modified": "2026-02-15 14:30:00",
  "author": 1,
  "settings": {
    "form_title": "Contact Form",
    "form_desc": "Get in touch with us",
    "submit_text": "Submit",
    "ajax_submit": true,
    "honeypot": true,
    "antispam": true
  },
  "fields": [
    {
      "id": 1,
      "type": "text",
      "label": "Name",
      "description": "",
      "required": true,
      "size": "medium"
    }
  ]
}

について settings この機能によって返されるオブジェクトは、厳選された機密性のないサブセット(タイトル、説明、送信テキスト、AJAX送信フラグ、ハニーポット、スパム対策)です。通知、確認、および連携の設定は公開されません。

wpforms/フォーム統計を取得

フォームの送信統計情報を返す。返されるデータの形式は、Lite版とPro版で異なる。

パラメータ

名称タイプ必須デフォルト説明
form_id整数はい-フォームのID。

リクエスト例

curl "$WP_SITE/wp-json/wp-abilities/v1/abilities/wpforms/get-form-stats/run?input%5Bform_id%5D=123"

ライト・レスポンス

{
  "form_id": 123,
  "entries_available": false,
  "message": "Entry statistics require WPForms Pro. Upgrade to access detailed form submission data."
}

プロ・レスポンス

{
  "form_id": 123,
  "total_entries": 156,
  "unread_entries": 12,
  "starred_entries": 8,
  "entries_available": true
}

wpforms/エントリー概要を取得

単一のフォームに対するエントリ要約のページ分割リスト。Pro版限定。

パラメータ

名称タイプ必須デフォルト説明
form_id整数はい-エントリを取得するフォームのID。
statusストリングいいえ""その一つは partial, abandoned, spam, trash. 空の文字列を指定すると、完了したすべてのエントリが返されます。
typeストリングいいえ""その一つは read, unread, starred.
include_fieldsブール値いいえfalse各エントリのフィールド値をレスポンスに含める。
limit整数いいえ20返すレコードの最大数。1~100の範囲で指定してください。
offset整数いいえ0スキップするエントリの数。

リクエスト例

curl "$WP_SITE/wp-json/wp-abilities/v1/abilities/wpforms/get-entry-summaries/run?input%5Bform_id%5D=123&input%5Btype%5D=unread&input%5Blimit%5D=20"

回答例

{
  "entries": [
    {
      "id": 456,
      "form_id": 123,
      "date": "2026-02-15 14:32:10",
      "status": "",
      "viewed": false,
      "starred": true
    }
  ],
  "total": 15,
  "form_id": 123
}

wpforms/get-entry

ID に基づいて 1 つのエントリを取得し、すべてのフィールド値を含めます。Pro 版限定。

パラメータ

名称タイプ必須デフォルト説明
entry_id整数はい-取得するエントリのID。
include_fieldsブール値いいえtrueレスポンスにエントリのフィールド値を含める。

リクエスト例

curl "$WP_SITE/wp-json/wp-abilities/v1/abilities/wpforms/get-entry/run?input%5Bentry_id%5D=456"

回答例

{
  "id": 456,
  "form_id": 123,
  "date": "2026-02-15 14:32:10",
  "modified": "2026-02-15 15:00:00",
  "status": "",
  "viewed": true,
  "starred": false,
  "ip_address": "192.168.1.100",
  "fields": [
    {
      "id": 1,
      "name": "Name",
      "value": "John Doe",
      "type": "text"
    }
  ]
}

レスポンス内のIPアドレスは非表示にできます。追加 add_filter( 'wpforms_abilities_mask_ip_address', '__return_true' ) サイトのコードに追加してください。有効にすると、IPv4アドレスの最後の3オクテットがアスタリスクに置き換えられて表示されます(例: ***.***.***.100).

wpforms/検索結果

1つのフォームまたはすべてのフォームを対象に、全文検索、フィールド指定、ステータス、日付範囲のフィルターを使用して検索できます。Pro版限定機能です。

パラメータ

名称タイプ必須デフォルト説明
form_id整数いいえ-検索を1つのフォームに限定します。「省略」を選択すると、すべてのフォームを対象に検索します。
searchストリングいいえ""すべての入力フィールドに対して全文検索が行われました。
field_id整数いいえ-検索を特定のフィールドIDに限定します。以下のコマンドと組み合わせて使用してください field_value.
field_valueストリングいいえ-で指定されたフィールドに一致する正確な値 field_id.
date_fromストリングいいえ-期間の開始日、形式 YYYY-MM-DD.
date_toストリングいいえ-日付範囲の終了、書式 YYYY-MM-DD.
statusストリングいいえ""その一つは partial, abandoned, spam, trash.
typeストリングいいえ""その一つは read, unread, starred.
include_fieldsブール値いいえtrueレスポンスにエントリフィールドの値を含める。
limit整数いいえ201ページあたりの最大件数。1~100の範囲で指定してください。
page整数いいえ1ページ番号。なお、この機能は、とは異なり、ページ単位のページネーションを使用します。 list-forms そして get-entry-summaries、これらは offset.
orderbyストリングいいえdateその一つは entry_id, date, status.
orderストリングいいえDESCその一つは ASC, DESC.

リクエスト例

curl "$WP_SITE/wp-json/wp-abilities/v1/abilities/wpforms/search-entries/run?input%5Bform_id%5D=5&input%5Bsearch%5D=john%40example.com&input%5Bpage%5D=1&input%5Blimit%5D=20"

回答例

{
  "entries": [
    {
      "id": 142,
      "form_id": 5,
      "date": "2026-02-15 14:32:10",
      "status": "",
      "viewed": false,
      "starred": true,
      "fields": [
        { "id": 1, "name": "Name",  "value": "John Doe",         "type": "text"  },
        { "id": 2, "name": "Email", "value": "[email protected]", "type": "email" }
      ]
    }
  ],
  "total": 47,
  "total_pages": 5,
  "page": 1,
  "limit": 20
}

MCPクライアントとのWPFormsの活用

WPFormsのすべての機能は、 mcp.public 設定する trueつまり、WordPressサイトが wordpress/mcp-adapter プラグイン。インストール後は、WPForms側での追加設定は不要です。機能はクライアントのツールリスト内の WPForms カテゴリに属し、REST API で使用されているのと同じ権限コールバックを遵守します。

プログラムによる能力の発見

サイト上で利用可能な機能を、IDをハードコーディングせずに列挙するには:

# サイトに登録されているすべての機能を一覧表示する
curl "$WP_SITE/wp-json/wp-abilities/v1/abilities"

# 特定の機能のスキーマを取得する
curl "$WP_SITE/wp-json/wp-abilities/v1/abilities/wpforms/list-forms"

この応答には、各機能のID、ラベル、説明、カテゴリ、および完全な入力・出力スキーマが含まれており、WPForms固有の仕様に関する予備知識がなくても、汎用的なクライアントを構築するのに十分な情報となっています。