WPForms REST-API und Abilities-API-Referenz

Mit WPForms 1.9.9 wurde eine schreibgeschützte REST-API eingeführt, die auf der WordPress-Abilities-API aufbaut. Sie können Formulare auflisten, Formularkonfigurationen abrufen, Einträge abrufen und durchsuchen sowie Formularstatistiken über jeden beliebigen HTTP-Client, die Befehlszeile, Ihren eigenen PHP-Code oder KI-Assistenten, die das Model Context Protocol (MCP) unterstützen, abrufen.

Wenn Sie nach „WPForms REST API“ gesucht haben und hier gelandet sind, sind Sie hier genau richtig. Es gibt keine separate REST-API; die Abilities-API-Integration ist die Art und Weise, wie WPForms seine Daten über HTTP bereitstellt.

Was ist die Abilities-API?

Die Abilities-API ist eine Kernfunktion von WordPress, die mit WordPress 6.9 eingeführt wurde. Sie ermöglicht es Plugins, einzelne Fähigkeiten (sogenannte Fähigkeiten) mit einem Namen, einem Eingabeschema, einem Ausgabeschema und einem Berechtigungs-Callback. WordPress stellt daraufhin jede registrierte Funktion automatisch über die REST-API unter /wp-json/wp-abilities/v1/abilities/<ability>/run sowie an MCP-kompatible KI-Clients über das offizielle MCP-Adapter-Plugin.

WPForms registriert eine Reihe von schreibgeschützten Funktionen unter dem wpforms/ Namensraum. Jede Funktion führt dieselben WPForms-Berechtigungsprüfungen durch, die auch im Admin-Bereich verwendet werden (wpforms_current_user_can()), sodass die REST- und MCP-Oberflächen das bestehende Berechtigungsmodell übernehmen, anstatt ein neues einzuführen.

Anforderungen:

  • WordPress 6.9 oder höher
  • WPForms Lite oder Pro 1.9.9 oder höher (einige Funktionen sind nur in der Pro-Version verfügbar; siehe die Übersichtstabelle unten)
  • Für MCP-Kunden: das Plugin „wordpress/mcp-adapter

Eine Fähigkeit aktivieren

Jede Funktion kann über zwei verschiedene Aufrufmethoden aufgerufen werden. Das Ergebnis ist identisch; wählen Sie diejenige, die am besten zur jeweiligen Aufrufumgebung passt.

REST-API

Eine authentifizierte GET Anfrage an /wp-json/wp-abilities/v1/abilities/<ability>/run. Da alle Funktionen von WPForms schreibgeschützt sind, nur GET wird akzeptiert; POST Ergebnisse 405 Method Not Allowed.

Anmerkung: Übergeben Sie Parameter als in Klammern gesetzte Query-String-Felder unter dem input Schlüssel, zum Beispiel input[limit]=10&input[status]=publish. Führe eine URL-Kodierung der Klammern durch, falls dein Client dies nicht automatisch übernimmt (%5B für [, %5D für ]).

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

PHP

Aus jedem Plugin, Theme oder benutzerdefinierten Code, der nach dem wp_abilities_api_init Die Aktion wurde ausgelöst, rufe die Fähigkeit mit wp_get_ability() und es execute() Methode. Übergebe die Eingabe als assoziatives Array von Parametern (mit denselben Namen, die in der Parametertabelle der jeweiligen Fähigkeit aufgeführt sind).

$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)
}

Authentifizierung

Der REST-Transport nutzt die Standard-Authentifizierung von WordPress. Die empfohlene Methode für externe Clients sind Anwendungspasswörter, die in den WordPress-Kern integriert sind und kein zusätzliches Plugin erfordern.

Ein Anwendungs-Passwort erstellen

  1. Melden Sie sich als der WordPress-Benutzer an, unter dessen Berechtigungen die Aufrufe ausgeführt werden sollen.
  2. Gehen Sie zu „Benutzer“ » „Profil“ und scrollen Sie zum Abschnitt „Anwendungspasswörter “.
  3. Geben Sie einen Namen für die Integration ein und klicken Sie auf „Neues Anwendungskennwort hinzufügen“.
  4. Kopieren Sie das generierte Passwort. WordPress zeigt es nur einmal an.

Weitere Informationen, einschließlich REST-Endpunkten zur programmgesteuerten Verwaltung von Anwendungskennwörtern, finden Sie im Leitfaden zur Integration von Anwendungskennwörtern des WordPress-Kernteams.

Übermittlung der Anmeldedaten

Übermittle bei jeder Anfrage den Benutzernamen und das Anwendungskennwort als HTTP-Basic-Authentifizierung.

Mit curl

Legen Sie die URL Ihrer Website als Umgebungsvariable fest, damit die Beispiele in dieser Dokumentation direkt ausgeführt werden können:

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

Dann füge das -u Flag bei jedem curl-Befehl. Der Wert des Flags besteht aus Ihrem Benutzernamen, gefolgt von einem Doppelpunkt und Ihrem Anwendungskennwort (ohne Leerzeichen).

Mit Postman, Insomnia oder anderen Clients

Stellen Sie den Authentifizierungstyp der Anfrage auf „Basic Auth“ ein und geben Sie Ihren Benutzernamen und Ihr Anwendungskennwort ein. Der Client übernimmt die Verschlüsselung für Sie.

Die Kopfzeile manuell festlegen

Senden Sie Ihre Anmeldedaten als Base64-kodierte Authorization Überschrift:

Füge deinen Benutzernamen und dein Anmeldekennwort zu einer einzigen Zeichenfolge zusammen, getrennt durch einen Doppelpunkt (ohne Leerzeichen), und verschlüssele das Ergebnis mit einem Tool deiner Wahl nach dem Base64-Verfahren (base64 Befehl, einen Online-Encoder oder die Standardbibliothek Ihrer Sprache). Senden Sie den kodierten Wert bei jeder Anfrage als Authorization Kopfzeile, in der Form Authorization: Basic <encoded>.

In den Beispielanfragen im weiteren Verlauf dieses Dokuments wird das Authentifizierungsflag der Übersichtlichkeit halber weggelassen. Fügen Sie das -u Flag (oder das Authorization (Header) an jede tatsächliche Anfrage, andernfalls gibt die API 401 Unauthorized.

Berechtigungen

Jede Funktion überprüft vor der Ausführung eine bestimmte WPForms-Funktion. Bei fehlgeschlagenen Überprüfungen wird ein WP_Error mit HTTP-Status 403.

FähigkeitFähigkeit
wpforms/list-formsview_forms
wpforms/get-formview_form_single
wpforms/get-form-stats (Lite)view_form_single
wpforms/get-form-stats (Pro)view_entries_form_single
wpforms/get-entry-summariesview_entries_form_single
wpforms/get-entryview_entry_single
wpforms/search-entries (mit form_id)view_entries_form_single
wpforms/search-entries (ohne form_id)view_entries

Fähigkeitenübersicht

Alle Funktionen sind schreibgeschützt und idempotent. Fehler werden zurückgegeben als WP_Error Objekte, die mit code, messageund data.status Felder.

Anmerkung: In den folgenden Beispielanfragen wurde das Authentifizierungsflag der Übersichtlichkeit halber weggelassen. Jeder Aufruf muss authentifiziert werden, andernfalls wird 401 Unauthorized. Füge das -u Flag (oder sende das Äquivalent Authorization: Basic (Header) an jeden curl-Befehl. Weitere Informationen finden Sie im Abschnitt „Authentifizierung“.

wpforms/Formulare auflisten

Listenformulare mit zusammenfassenden Metadaten. Verfügbar in den Versionen Lite und Pro.

Parameter

NameTypErforderlichStandardBeschreibung
statusStringNeinpublishFormularstatus. Einer von publish, draft, trash.
limitGanzzahlNein20Maximale Anzahl der zurückzugebenden Formulare. Bereich: 1 bis 100.
offsetGanzzahlNein0Anzahl der zu überspringenden Formulare.

Beispielanfrage

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

Beispielantwort

{
  "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

Ein einzelnes Formular abrufen, einschließlich einer ausgewählten Teilmenge seiner Einstellungen und optional seiner Feldkonfiguration. Verfügbar in den Versionen Lite und Pro.

Parameter

NameTypErforderlichStandardBeschreibung
form_idGanzzahlJa-Die ID des abzurufenden Formulars.
include_fieldsBoolescher WertNeintrueFügen Sie die Feldkonfiguration des Formulars in die Antwort ein.

Beispielanfrage

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

Beispielantwort

{
  "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"
    }
  ]
}

Die settings Das von dieser Funktion zurückgegebene Objekt ist eine kuratierte, nicht sensible Teilmenge (Titel, Beschreibung, Absendetext, AJAX-Absendeflag, Honeypot, Anti-Spam). Benachrichtigungs-, Bestätigungs- und Integrationseinstellungen werden nicht offengelegt.

wpforms/form-statistiken-abrufen

Statistiken zu den übermittelten Daten eines Formulars abrufen. Die Form der Antwort unterscheidet sich bei Lite und Pro.

Parameter

NameTypErforderlichStandardBeschreibung
form_idGanzzahlJa-Die ID des Formulars.

Beispielanfrage

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

Lite Response

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

Pro Response

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

wpforms/Eintragsübersichten abrufen

Seitenweise Liste der Zusammenfassungen der Einträge für ein einzelnes Formular. Nur in der Pro-Version.

Parameter

NameTypErforderlichStandardBeschreibung
form_idGanzzahlJa-Die ID des Formulars, für das Einträge abgerufen werden sollen.
statusStringNein""Einer der partial, abandoned, spam, trash. „Empty“ gibt alle abgeschlossenen Einträge zurück.
typeStringNein""Einer der read, unread, starred.
include_fieldsBoolescher WertNeinfalseFüge die Feldwerte jedes Eintrags in die Antwort ein.
limitGanzzahlNein20Maximale Anzahl der zurückzugebenden Einträge. Bereich: 1 bis 100.
offsetGanzzahlNein0Anzahl der zu überspringenden Einträge.

Beispielanfrage

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"

Beispielantwort

{
  "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

Einen einzelnen Eintrag anhand seiner ID abrufen, einschließlich aller Feldwerte. Nur in der Pro-Version.

Parameter

NameTypErforderlichStandardBeschreibung
entry_idGanzzahlJa-Die ID des abzurufenden Eintrags.
include_fieldsBoolescher WertNeintrueDie Feldwerte des Eintrags in die Antwort aufnehmen.

Beispielanfrage

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

Beispielantwort

{
  "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"
    }
  ]
}

Die IP-Adresse in der Antwort kann maskiert werden. Hinzufügen add_filter( 'wpforms_abilities_mask_ip_address', '__return_true' ) in den Code Ihrer Website; wenn diese Option aktiviert ist, werden IPv4-Adressen so angezeigt, dass die letzten drei Oktette durch Sternchen ersetzt sind (zum Beispiel, ***.***.***.100).

wpforms/Suchergebnisse

Durchsuchen Sie Einträge in einem oder allen Formularen mithilfe von Volltext-, feldspezifischen, Status- und Datumsbereichsfiltern. Nur in der Pro-Version.

Parameter

NameTypErforderlichStandardBeschreibung
form_idGanzzahlNein-Die Suche auf ein einzelnes Formular beschränken. Die Suche in allen Formularen durchführen.
searchStringNein""Die Volltextsuche wurde auf alle Eingabefelder angewendet.
field_idGanzzahlNein-Beschränken Sie die Suche auf eine bestimmte Feld-ID. Verwenden Sie dies mit field_value.
field_valueStringNein-Genauer Wert, der mit dem durch field_id.
date_fromStringNein-Startdatum des Zeitraums, Format YYYY-MM-DD.
date_toStringNein-Ende des Datumsbereichs, Format YYYY-MM-DD.
statusStringNein""Einer der partial, abandoned, spam, trash.
typeStringNein""Einer der read, unread, starred.
include_fieldsBoolescher WertNeintrueDie Werte der Eingabefelder in die Antwort aufnehmen.
limitGanzzahlNein20Maximale Anzahl von Einträgen pro Seite. Bereich: 1 bis 100.
pageGanzzahlNein1Seitenzahl. Beachten Sie, dass diese Funktion im Gegensatz zu list-forms und get-entry-summaries, die offset.
orderbyStringNeindateEiner der entry_id, date, status.
orderStringNeinDESCEiner der ASC, DESC.

Beispielanfrage

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"

Beispielantwort

{
  "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
}

Einsatz von WPForms bei MCP-Kunden

Jede WPForms-Funktion ist registriert bei mcp.public auf ... einstellen true, was bedeutet, dass MCP-kompatible KI-Clients (Claude Desktop, Cursor und andere) diese automatisch erkennen, sobald die WordPress-Seite über die wordpress/mcp-adapter Plugin. Nach der Installation sind keine weiteren Einstellungen in WPForms erforderlich; die Funktionen erscheinen in der Werkzeugliste des Kunden unter dem WPForms Kategorie und beachten Sie dieselben Berechtigungs-Callbacks, die auch von der REST-API verwendet werden.

Fähigkeiten programmgesteuert entdecken

Um die auf einer Website verfügbaren Funktionen aufzulisten, anstatt ihre IDs fest zu programmieren:

# Alle auf der Website registrierten Funktionen auflisten
curl "$WP_SITE/wp-json/wp-abilities/v1/abilities"

# Das Schema für eine einzelne Funktion abrufen
curl "$WP_SITE/wp-json/wp-abilities/v1/abilities/wpforms/list-forms"

Die Antwort enthält die ID, die Bezeichnung, die Beschreibung und die Kategorie jeder Funktion sowie die vollständigen Eingabe- und Ausgabeschemata. Diese Informationen reichen aus, um einen generischen Client zu erstellen, ohne dass Vorkenntnisse über die WPForms-spezifische Benutzeroberfläche erforderlich sind.