Résumé de l'IA
La version 1.9.9 de WPForms a introduit une API REST en lecture seule s'appuyant sur l'API Abilities de WordPress. Vous pouvez répertorier les formulaires, récupérer leur configuration, extraire et rechercher des entrées, ainsi que consulter les statistiques des formulaires à partir de n'importe quel client HTTP, de la ligne de commande, de votre propre code PHP ou d'assistants IA utilisant le protocole MCP (Model Context Protocol).
Si vous avez recherché « WPForms REST API » et que vous êtes arrivé ici, vous avez trouvé ce que vous cherchiez. Il n'existe pas d'API REST distincte ; c'est grâce à l'intégration de l'API Abilities que WPForms met ses données à disposition via HTTP.
Qu'est-ce que l'API Abilities ?
L'API Abilities est une fonctionnalité intégrée à WordPress, ajoutée dans la version 6.9. Elle permet aux plugins de déclarer des capacités individuelles (appelées compétences) avec un nom, un schéma d'entrée, un schéma de sortie et une fonction de rappel d'autorisation. WordPress expose ensuite automatiquement toutes les capacités enregistrées via l'API REST à l'adresse /wp-json/wp-abilities/v1/abilities/<ability>/run ainsi qu'aux clients IA compatibles MCP via le plugin adaptateur MCP officiel.
WPForms enregistre un ensemble de capacités en lecture seule sous le wpforms/ espace de noms. Chaque fonctionnalité effectue les mêmes vérifications de droits WPForms que celles utilisées dans l'interface d'administration (wpforms_current_user_can()), de sorte que les interfaces REST et MCP reprennent le modèle d'autorisation existant au lieu d'en introduire un nouveau.
Exigences:
- WordPress 6.9 ou version ultérieure
- WPForms Lite ou Pro version 1.9.9 ou ultérieure (certaines fonctionnalités sont réservées à la version Pro ; voir le tableau de référence ci-dessous)
- Pour les clients MCP : le plugin wordpress/mcp-adapter
Utiliser une capacité
Chaque fonction peut être appelée via deux méthodes. Le résultat est identique ; choisissez celle qui convient le mieux à l'environnement d'appel.
API REST
Envoyer un message authentifié GET demander à /wp-json/wp-abilities/v1/abilities/<ability>/run. Étant donné que toutes les fonctionnalités de WPForms sont en lecture seule, seules GET est accepté ; POST retours 405 Method Not Allowed.
Remarque : Transmettre les paramètres sous forme de champs de chaîne de requête entre crochets sous la balise input par exemple input[limit]=10&input[status]=publish. Encodez les crochets en URL si votre client ne le fait pas automatiquement (%5B pour [, %5D pour ]).
curl "$WP_SITE/wp-json/wp-abilities/v1/abilities/wpforms/list-forms/run?input%5Blimit%5D=10&input%5Bstatus%5D=publish"
PHP
Depuis n'importe quel plugin, thème ou code personnalisé qui s'exécute après le wp_abilities_api_init l'action s'est déclenchée, récupère la capacité avec wp_get_ability() et l'appeler execute() méthode. Transmettez les données d'entrée sous la forme d'un tableau associatif de paramètres (dont les noms correspondent à ceux indiqués dans le tableau des paramètres de chaque capacité).
$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)
}
Authentification
Le transport REST utilise l'authentification standard de WordPress. La méthode recommandée pour les clients externes est celle des mots de passe d'application, qui sont intégrés au cœur de WordPress et ne nécessitent aucun plugin supplémentaire.
Créer un mot de passe d'application
- Connectez-vous en tant qu'utilisateur WordPress sous les droits duquel les appels doivent s'exécuter.
- Accédez à Utilisateurs » Profil, puis faites défiler jusqu'à la section « Mots de passe d'application ».
- Saisissez un nom pour l'intégration, puis cliquez sur « Ajouter un nouveau mot de passe d'application ».
- Copiez le mot de passe généré. WordPress ne l'affiche qu'une seule fois.
Pour plus d'informations, notamment sur les points de terminaison REST permettant de gérer les mots de passe d'application par programmation, consultez le guide d'intégration des mots de passe d'application publié par l'équipe WordPress.
Envoi des identifiants
Transmettez le nom d'utilisateur et le mot de passe de l'application via l'authentification HTTP de base à chaque requête.
Avec curl
Définissez l'URL de votre site en tant que variable d'environnement afin que les exemples de ce document puissent être exécutés tels quels :
export WP_SITE="https://your-wordpress-site.com"
Ajoutez ensuite le -u Ajoutez ce paramètre à chaque commande curl. La valeur du paramètre correspond à votre nom d'utilisateur, suivi d'un deux-points, puis de votre mot de passe d'application (sans espaces).
Avec Postman, Insomnia ou d'autres clients
Définissez le type d'authentification de la requête sur « Authentification de base » et indiquez votre nom d'utilisateur et le mot de passe de l'application. Le client se charge du codage à votre place.
Définir l'en-tête manuellement
Envoyez vos identifiants sous forme de chaîne encodée en base64 Authorization En-tête :
Assemblez votre nom d'utilisateur et votre mot de passe d'application en une seule chaîne, séparés par deux points (sans espaces), puis encodez le résultat en Base64 à l'aide de l'outil de votre choix (base64 commande, un encodeur en ligne ou la bibliothèque standard de votre langage). Envoyez la valeur encodée à chaque requête sous la forme de Authorization en-tête, sous la forme Authorization: Basic <encoded>.
Dans les exemples de requêtes présentés dans la suite de ce document, l'indicateur d'authentification a été omis pour faciliter la lecture. Ajoutez le -u drapeau (ou le Authorization (en-tête) à chaque requête réelle, sinon l'API renvoie 401 Unauthorized.
Autorisations
Chaque fonction vérifie une fonctionnalité spécifique de WPForms avant de s'exécuter. En cas d'échec de la vérification, elle renvoie un WP_Error avec le statut HTTP 403.
| Compétence | Capacité |
|---|---|
wpforms/list-forms | view_forms |
wpforms/get-form | view_form_single |
wpforms/get-form-stats (Version allégée) | view_form_single |
wpforms/get-form-stats (Pro) | view_entries_form_single |
wpforms/get-entry-summaries | view_entries_form_single |
wpforms/get-entry | view_entry_single |
wpforms/search-entries (avec form_id) | view_entries_form_single |
wpforms/search-entries (sans form_id) | view_entries |
Référence des compétences
Toutes les méthodes sont en lecture seule et idempotentes. Les erreurs sont renvoyées sous la forme WP_Error objets sérialisés au format JSON avec code, messageet data.status champs.
wpforms/liste-des-formulaires
Liste des formulaires avec un résumé des métadonnées. Disponible dans les versions Lite et Pro.
Paramètres
| Nom | Type | Exigée | Défaut | Description |
|---|---|---|---|---|
status | chaîne de caractères | Non | publish | Statut du formulaire. L'un des publish, draft, trash. |
limit | entier | Non | 20 | Nombre maximal de formulaires à renvoyer. Plage comprise entre 1 et 100. |
offset | entier | Non | 0 | Nombre de formulaires à ignorer. |
Exemple de demande
curl "$WP_SITE/wp-json/wp-abilities/v1/abilities/wpforms/list-forms/run?input%5Blimit%5D=10&input%5Bstatus%5D=publish"
Exemple de réponse
{
"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
Récupérer un formulaire unique, y compris un sous-ensemble sélectionné de ses paramètres et, éventuellement, la configuration de ses champs. Disponible dans les versions Lite et Pro.
Paramètres
| Nom | Type | Exigée | Défaut | Description |
|---|---|---|---|---|
form_id | entier | Oui | - | L'identifiant du formulaire à récupérer. |
include_fields | booléen | Non | true | Inclure la configuration des champs du formulaire dans la réponse. |
Exemple de demande
curl "$WP_SITE/wp-json/wp-abilities/v1/abilities/wpforms/get-form/run?input%5Bform_id%5D=123&input%5Binclude_fields%5D=true"
Exemple de réponse
{
"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"
}
]
}
Le settings L'objet renvoyé par cette fonctionnalité est un sous-ensemble sélectionné et non sensible (titre, description, texte de soumission, indicateur de soumission AJAX, honeypot, anti-spam). Les paramètres de notification, de confirmation et d'intégration ne sont pas exposés.
wpforms/get-form-stats
Afficher les statistiques de soumission d'un formulaire. La structure des résultats diffère entre les versions Lite et Pro.
Paramètres
| Nom | Type | Exigée | Défaut | Description |
|---|---|---|---|---|
form_id | entier | Oui | - | L'identifiant du formulaire. |
Exemple de demande
curl "$WP_SITE/wp-json/wp-abilities/v1/abilities/wpforms/get-form-stats/run?input%5Bform_id%5D=123"
Réponse simplifiée
{
"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/obtenir-les-résumés-des-entrées
Liste paginée des résumés des entrées pour un seul formulaire. Réservé à la version Pro.
Paramètres
| Nom | Type | Exigée | Défaut | Description |
|---|---|---|---|---|
form_id | entier | Oui | - | L'identifiant du formulaire dont il faut récupérer les entrées. |
status | chaîne de caractères | Non | "" | L'un des partial, abandoned, spam, trash. La commande « Empty » renvoie toutes les entrées terminées. |
type | chaîne de caractères | Non | "" | L'un des read, unread, starred. |
include_fields | booléen | Non | false | Inclure les valeurs des champs de chaque entrée dans la réponse. |
limit | entier | Non | 20 | Nombre maximal d'entrées à renvoyer. Plage comprise entre 1 et 100. |
offset | entier | Non | 0 | Nombre d'entrées à ignorer. |
Exemple de demande
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"
Exemple de réponse
{
"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
Récupérer une seule entrée par ID, y compris toutes les valeurs des champs. Réservé à la version Pro.
Paramètres
| Nom | Type | Exigée | Défaut | Description |
|---|---|---|---|---|
entry_id | entier | Oui | - | L'identifiant de l'entrée à récupérer. |
include_fields | booléen | Non | true | Inclure les valeurs des champs de l'entrée dans la réponse. |
Exemple de demande
curl "$WP_SITE/wp-json/wp-abilities/v1/abilities/wpforms/get-entry/run?input%5Bentry_id%5D=456"
Exemple de réponse
{
"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"
}
]
}
L'adresse IP figurant dans la réponse peut être masquée. Ajouter
add_filter( 'wpforms_abilities_mask_ip_address', '__return_true' )au code de votre site ; une fois cette option activée, les adresses IPv4 s'affichent avec leurs trois derniers octets remplacés par des astérisques (par exemple,***.***.***.100).
wpforms/recherche-d'entrées
Recherchez des entrées dans un seul formulaire ou dans tous les formulaires à l'aide de filtres de recherche en texte intégral, par champ, par statut et par plage de dates. Réservé à la version Pro.
Paramètres
| Nom | Type | Exigée | Défaut | Description |
|---|---|---|---|---|
form_id | entier | Non | - | Limiter la recherche à un seul formulaire. Ne pas effectuer de recherche dans tous les formulaires. |
search | chaîne de caractères | Non | "" | Recherche en texte intégral effectuée sur tous les champs de saisie. |
field_id | entier | Non | - | Limiter la recherche à un identifiant de champ spécifique. À utiliser avec field_value. |
field_value | chaîne de caractères | Non | - | Valeur exacte à rechercher dans le champ spécifié par field_id. |
date_from | chaîne de caractères | Non | - | Début de la plage de dates, format YYYY-MM-DD. |
date_to | chaîne de caractères | Non | - | Fin de la plage de dates, format YYYY-MM-DD. |
status | chaîne de caractères | Non | "" | L'un des partial, abandoned, spam, trash. |
type | chaîne de caractères | Non | "" | L'un des read, unread, starred. |
include_fields | booléen | Non | true | Inclure les valeurs des champs de saisie dans la réponse. |
limit | entier | Non | 20 | Nombre maximal d'entrées par page. Plage comprise entre 1 et 100. |
page | entier | Non | 1 | Numéro de page. Notez que cette fonctionnalité utilise une pagination par page, contrairement à list-forms et get-entry-summaries, qui utilisent offset. |
orderby | chaîne de caractères | Non | date | L'un des entry_id, date, status. |
order | chaîne de caractères | Non | DESC | L'un des ASC, DESC. |
Exemple de demande
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"
Exemple de réponse
{
"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
}
Utilisation de WPForms avec les clients MCP
Chaque fonctionnalité de WPForms est enregistrée auprès de mcp.public réglé sur true, ce qui signifie que les clients d'IA compatibles MCP (Claude Desktop, Cursor et autres) les détectent automatiquement dès que le site WordPress est connecté via le wordpress/adaptateur-mcp plugin. Une fois l'installation terminée, aucune configuration supplémentaire n'est nécessaire du côté de WPForms ; les fonctionnalités apparaissent dans la liste d'outils du client sous la rubrique WPForms catégorie et respecter les mêmes routines de gestion des autorisations que celles utilisées par l'API REST.
Découvrir les capacités par la programmation
Pour répertorier les fonctionnalités disponibles sur un site au lieu de coder en dur leurs identifiants :
# Lister toutes les fonctionnalités enregistrées sur le site
curl "$WP_SITE/wp-json/wp-abilities/v1/abilities"
# Récupérer le schéma d'une fonctionnalité spécifique
curl "$WP_SITE/wp-json/wp-abilities/v1/abilities/wpforms/list-forms"
La réponse comprend l'identifiant, le libellé, la description et la catégorie de chaque fonctionnalité, ainsi que les schémas complets d'entrée et de sortie, ce qui constitue suffisamment d'informations pour développer un client générique sans connaissance préalable de l'interface spécifique à WPForms.
Liens connexes
- Présentation de l'API Abilities de WordPress (developer.wordpress.org)
- wordpress/mcp-adapter sur GitHub
- Protocole de contexte de modèle