Docs & Support

Learn about all the Formidable features and get support from our amazing customer success team.

Developer Documentation
Use the Formidable Abilities API

Use the Formidable Abilities API

The Formidable API Add-On 2.0 registers Formidable Forms operations with the WordPress Abilities API. You can discover an operation, inspect its schema, and run it through WordPress REST API requests or a Model Context Protocol (MCP) client.

Requirements

  • Formidable Forms Pro and Formidable API Add-On 2.0 installed and activated.
  • WordPress 6.9 or later.
  • MCP Server turned on under Formidable → Global Settings → API. This setting also controls Formidable ability registration.
  • A WordPress user whose role has the permission required by each operation.
  • Formidable Views for View and View-layout abilities.
  • HTTPS and a WordPress Application Password for external REST requests.

The Formidable API Add-On requires a Formidable Business license or higher.

Formidable Forms makes advanced site building simple. Launch forms, directories, dashboards, and custom WordPress apps faster than ever before.

Understand how abilities work

An ability is one defined operation. Each ability has:

  • A stable name such as formidable-forms/list-forms.
  • An input schema.
  • An output schema.
  • An execution callback.
  • A permission callback.
  • Annotations that identify read-only, destructive, and idempotent behavior.

WordPress validates the input and output against the schemas. It also checks the authenticated user's permission each time the ability runs.

The add-on registers the formidable-forms category. When Formidable Forms Pro and Formidable Views are active, it exposes 43 abilities in this category to the WordPress REST API and the bundled Formidable MCP server.

Install the API Add-On and enable the abilities

  1. Install and activate Formidable Forms Pro.
  2. Go to Formidable → Add-Ons.
  3. Find Formidable API, then install and activate it.
  4. Go to Formidable → Global Settings → API.
  5. Turn on MCP Server.
  6. Click Update.
  • When MCP Server is on, Formidable registers its abilities and MCP server.
  • When MCP Server is off, Formidable does not register its abilities for the WordPress Abilities API or any MCP server.
  • An expired Formidable license outside its grace period also makes the Formidable ability surface unavailable.

There is no separate Abilities API switch. The REST API setting controls /frm/v2 and /frm/v3. It does not control /wp-abilities/v1.

Discover abilities with the WordPress REST API

Use the dedicated user's WordPress username and Application Password. Sign in as that user, then create the password under Users → Profile → Application Passwords. Do not use the API Key shown under Formidable → Global Settings → API. That key is for legacy Formidable API authentication.

Protect your credentials: Store the Application Password in a protected client setting. Do not put it in source code, a browser URL, a shared document, or an AI conversation.

List the Formidable abilities:

curl --silent --show-error \
  --user "YOUR_USERNAME:YOUR_APPLICATION_PASSWORD" \
  "https://example.com/wp-json/wp-abilities/v1/abilities?category=formidable-forms&per_page=100"

Inspect one ability before you execute it:

curl --silent --show-error \
  --user "YOUR_USERNAME:YOUR_APPLICATION_PASSWORD" \
  "https://example.com/wp-json/wp-abilities/v1/formidable-forms/create-entry"

The route for one ability does not include an extra /abilities/ segment.

Choose the correct HTTP method

WordPress selects the method from the ability annotations:

Ability behaviorMethodInput location
Read-onlyGETURL-encoded input query parameter when input is required.
Creates or updates dataPOSTJSON body with an input property.
DestructiveDELETEURL-encoded input query parameter.

The execution route is:

/wp-json/wp-abilities/v1/formidable-forms/ABILITY-NAME/run

Run a read-only ability

The list-forms ability accepts optional input, so you can run it without an input object:

curl --silent --show-error \
  --user "YOUR_USERNAME:YOUR_APPLICATION_PASSWORD" \
  "https://example.com/wp-json/wp-abilities/v1/formidable-forms/list-forms/run"

The user must have View Forms List. This is a role-level permission. It does not filter the result for individual forms.

Run an ability that changes data

Important: Test create, update, and delete abilities on a staging site. After each change, verify the stored result with a separate get or list ability.

Use POST and put the ability input inside the input property. This example creates an entry. Replace the form key and field key with values from your site.

curl --silent --show-error \
  --request POST \
  --user "YOUR_USERNAME:YOUR_APPLICATION_PASSWORD" \
  --header "Content-Type: application/json" \
  --data '{
    "input": {
      "form_id": "contact-form",
      "item_meta": {
        "email-address": "person@example.com"
      }
    }
  }' \
  "https://example.com/wp-json/wp-abilities/v1/formidable-forms/create-entry/run"

form_id accepts a numeric form ID or the form key returned by list-forms. Each property in item_meta must use a numeric field ID or a field key returned by list-fields. Do not use the visible form name or field label.

Available abilities

The complete ability catalog contains 43 abilities when Formidable Forms Pro and Formidable Views are active.

The Ability and Required input columns contain API identifiers. They are not WordPress admin labels. Use list or get abilities to retrieve IDs and keys before you run a change.

FamilyCount
Forms5
Entries5
Fields4
Statistics1
Styles and style assignment6
Form actions5
Applications7
Views5
View layouts5
Total43

Forms

AbilityPurposeRequired inputTypical access
formidable-forms/list-formsList forms with optional search, sorting, and pagination.NoneView Forms List
formidable-forms/get-formGet one form by ID or key.idView Forms List
formidable-forms/create-formCreate a form and optionally include fields.nameAdd and Edit Forms
formidable-forms/update-formUpdate a form and its supported settings.idAdd and Edit Forms
formidable-forms/delete-formPermanently delete a form.idDelete Forms

Entries

AbilityPurposeRequired inputTypical access
formidable-forms/list-entriesList entries with optional form, date, search, sort, is_draft, and pagination filters.NoneView Entries from Admin Area
formidable-forms/get-entryGet one entry by ID or key.idView Entries from Admin Area
formidable-forms/create-entryCreate an entry for a form.form_idAdd Entries from Admin Area
formidable-forms/update-entryUpdate an entry and its field values.idEdit Entries from Admin Area
formidable-forms/delete-entryPermanently delete an entry.idDelete Entries from Admin Area

The create-entry permission can also be extended with the frm_api_allow_create_entry hook. This hook is a PHP customization for developers. It is not an option on the Permissions screen.

Fields

AbilityPurposeRequired inputTypical access
formidable-forms/list-fieldsList the fields in a form.form_idView Forms List
formidable-forms/create-fieldAdd a field and its supported options to a form.form_id, typeAdd and Edit Forms
formidable-forms/update-fieldUpdate a field.idAdd and Edit Forms
formidable-forms/delete-fieldPermanently delete a field.form_id, idDelete Forms

For a complex field, call list-fields after creation. Reuse the returned field_options API structure when you make later changes. The WordPress field settings panel does not show this structure as an object.

Statistics

AbilityPurposeRequired inputTypical access
formidable-forms/get-statsCalculate a supported statistic for one or more fields.type, field_idView Entries from Admin Area

Styles and style assignment

AbilityPurposeRequired inputTypical access
formidable-forms/list-stylesList Formidable styles.NoneAccess this Settings Page
formidable-forms/get-styleGet one style by ID or post name.idAccess this Settings Page
formidable-forms/create-styleCreate a style.NoneAccess this Settings Page
formidable-forms/update-styleUpdate a style.idAccess this Settings Page
formidable-forms/delete-stylePermanently delete a non-default style.idAccess this Settings Page
formidable-forms/assign-style-to-formAssign a style to a form.form_id, style_idAdd and Edit Forms

Use the numeric style ID or the post_name value returned by list-styles. post_name is the style's internal CSS scope slug. It is not the style name shown under Formidable → Styles.

Form actions

AbilityPurposeRequired inputTypical access
formidable-forms/list-form-actionsList the actions attached to a form.form_idView Forms List
formidable-forms/get-form-actionGet one form action.idView Forms List
formidable-forms/create-form-actionCreate a form action.form_id, typeAdd and Edit Forms
formidable-forms/update-form-actionUpdate a form action.idAdd and Edit Forms
formidable-forms/delete-form-actionPermanently delete a form action.idAdd and Edit Forms

Form action input uses API values. These values do not always match the labels under Formidable → Forms → [form] → Settings → Actions & Notifications. For example, the API type api appears as Send API Data. The post_status value publish turns an action on. The value draft turns it off. Inspect an existing action of the same type before you create or update one, then read the action back after the change.

Applications

AbilityPurposeRequired inputTypical access
formidable-forms/list-applicationsList Applications with item counts and dates.NoneAdd/Edit Applications
formidable-forms/get-applicationGet one Application with item counts and dates.application_idAdd/Edit Applications
formidable-forms/list-application-itemsList the forms, Views, and pages in an Application.application_idAdd/Edit Applications
formidable-forms/create-applicationCreate an Application.nameAdd/Edit Applications
formidable-forms/delete-applicationDelete an Application without deleting its items.application_idAdd/Edit Applications
formidable-forms/add-item-to-applicationAdd a form, View, or page to an Application.application_id, item_id, item_typeAdd/Edit Applications
formidable-forms/remove-item-from-applicationRemove a form, View, or page from an Application.application_id, item_id, item_typeAdd/Edit Applications

A Formidable Application is a collection of forms, Views, and pages shown under Formidable → Applications. It is not a WordPress Application Password.

Set the item_type API value to form, view, or page. Use list-application-items after a relationship change.

Views

AbilityPurposeRequired inputTypical access
formidable-forms/list-viewsList Views, optionally filtered by form.NoneAdd/Edit Views
formidable-forms/get-viewGet a View configuration.idView Forms List
formidable-forms/create-viewCreate a Classic, Grid, Table, Map, Timeline, or Calendar View.form_idAdd/Edit Views
formidable-forms/update-viewUpdate a View and its supported settings.idAdd/Edit Views
formidable-forms/delete-viewPermanently delete a View and its associated layout rows.idAdd/Edit Views

Use all for the Classic View type in API input.

New Views are private by default. Use private for an unpublished View and publish for a public View. The schema accepts draft for compatibility with older data.

View layouts

AbilityPurposeRequired inputTypical access
formidable-forms/list-view-layoutsList View layouts, optionally filtered by View and layout type.NoneView Forms List
formidable-forms/get-view-layoutGet one View layout.idView Forms List
formidable-forms/create-view-layoutCreate or replace a listing or detail layout for a View.view_idAdd/Edit Views
formidable-forms/update-view-layoutUpdate a View layout with an array of rows.id, dataAdd/Edit Views
formidable-forms/delete-view-layoutPermanently delete a View layout.idAdd/Edit Views

View layout abilities manage the row structure behind the Listing Page and Detail Page areas in the View editor. They do not represent a separate View Layouts screen. The API value listing maps to Listing Page. The value detail maps to Detail Page.

Apply the least privilege needed

Use a dedicated WordPress user for each integration. Go to Formidable → Global Settings → Permissions. Under each required permission, select the dedicated user's WordPress role, then click Update. Each selection affects all users with that role. If the integration needs a unique permission set, create a custom role with a role-management plugin or custom code. Formidable does not create WordPress roles.

Task familyPermission setting
View forms and fieldsView Forms List
Create or update forms and fieldsAdd and Edit Forms
Delete forms and fieldsDelete Forms
View entries and statisticsView Entries from Admin Area
Create entriesAdd Entries from Admin Area
Update entriesEdit Entries from Admin Area
Delete entriesDelete Entries from Admin Area
Manage stylesAccess this Settings Page
Assign a style to a formAdd and Edit Forms
List or get form actionsView Forms List
Create, update, or delete form actionsAdd and Edit Forms
List ViewsAdd/Edit Views
Get one ViewView Forms List
Change ViewsAdd/Edit Views
List or get View layoutsView Forms List
Change View layoutsAdd/Edit Views
Manage ApplicationsAdd/Edit Applications

Administrators can run the registered operations. A dedicated non-administrator can also run them when its role has the required capabilities.

Use the same abilities through MCP

The Formidable MCP server exposes the abilities through three generic MCP tools. Use MCP when an AI client needs discovery, schema inspection, and execution through one standard connection.

Before a change, ask the client to inspect the target ability. After a change, ask it to use a separate get or list ability to verify the stored result.

See Connect Formidable Forms to Your AI Agent with MCP for installation, connection, and safe prompt examples.

Limitations

  • The full 43-ability catalog requires the matching Formidable Pro and Formidable Views products.
  • Turning off MCP Server also removes the Formidable abilities from the WordPress Abilities API.
  • An expired license outside the grace period makes the Formidable ability surface unavailable.
  • View schemas accept draft for compatibility. Use private or publish for normal View workflows.
  • Form action payloads vary by action type and installed add-on. Inspect and verify the stored action.
  • Creates are generally not idempotent. If a client loses a response, list existing objects before it retries the create.
  • Delete abilities use DELETE through the WordPress Abilities REST API. Their input must be a URL-encoded input query parameter.
  • Schema discovery describes the interface. It does not replace an independent read-back after a mutation.
Was this article helpful? *

This article may contain affiliate links. Once in a while, we earn commissions from those links. But we only recommend products we like, with or without commissions.

In this article

    We have a small, but amazing team of dedicated people who are committed to helping you achieve your goals and project requirements.


    Copyright © 2026 Strategy11, LLC. Formidable Forms® is a registered trademark Strategy11, LLC.

    Complete your purchase
    Don't forget your purchase!
    Complete Purchase
    Join 400,000+ using Formidable Forms to create form-focused solutions fast. Get Formidable Forms