Мост отправки Gravity Forms
const url = 'https://example.com/wp-json/wp2lms/turbo/v1/gravity-forms/submit';const options = { method: 'POST', headers: {'Content-Type': 'application/json'}, body: '{"form_id":3,"input_values":{"input_1":"Иванов","input_2":"learner@example.com"}}'};
try { const response = await fetch(url, options); const data = await response.json(); console.log(data);} catch (error) { console.error(error);}curl --request POST \ --url https://example.com/wp-json/wp2lms/turbo/v1/gravity-forms/submit \ --header 'Content-Type: application/json' \ --data '{ "form_id": 3, "input_values": { "input_1": "Иванов", "input_2": "learner@example.com" } }'Публичный REST-мост GFAPI::submit_form для Turbo-страницы. PHP собирает поля input_* из корня тела и/или из объекта input_values (объект или JSON-строка). Файлы — multipart input_N / input_N[i]. Пустые checkbox-подинпуты и boolean PHP выкидывает.
Обязателен положительный form_id (иначе 400 invalid_form). Формы с таким id нет — 404 not_found. Нет класса GFAPI — 503 unavailable. Нужен nonce wp_rest в X-WP-Nonce или _wpnonce (403 invalid_nonce).
Это не heartbeat admin-ajax fallback (data[wp2t]) и не создание формы. Невалидные поля GF — всё равно HTTP 200 с is_valid=false и validation_messages. Успех с опросом: pollResults из gf_polls, HTML gpoll вырезается из confirmation.
Cookie-сессия не требуется.
Request Body
Заголовок раздела «Request Body»object
ID формы Gravity Forms. Должен быть > 0, иначе 400 invalid_form. Можно передать в JSON, query или multipart.
Карта input_N → значение. Альтернатива — те же ключи в корне тела. Строка JSON тоже принимается. Ключи без префикса input_ игнорируются.
object
Example
{ "form_id": 3, "input_values": { "input_1": "Иванов", "input_2": "learner@example.com" }}Responses
Заголовок раздела «Responses»Ответ GFAPI::submit_form, нормализованный мостом: is_valid, validation_messages, confirmation, pollResults, entry_id, user_id.
object
Прошла ли валидация GF (!empty(result['is_valid'])). false не меняет HTTP-код — остаётся 200.
Сообщения failed_validation по id поля GF. Пустой объект, если форма валидна.
object
Confirmation_message GF (строка; HTML). Разметка gpoll_container вырезается, если есть pollResults.
Структурированные результаты опросов (gf_polls). [] если аддона нет, displayResults выключен или полей poll не было.
object
ID поля-опроса Gravity Forms.
Подпись поля опроса.
Стиль gf_polls (настройка формы, часто green).
Показывать проценты (настройка displayResults формы).
Показывать абсолютные счётчики.
Варианты опроса с долями и фактом выбора текущей заявки.
object
Подпись варианта опроса.
Доля голосов (0…1) из gpoll_get_results.
Число голосов за вариант.
True, если текущая заявка выбрала этот вариант.
ID записи GF. null, если entry не создана (часто при is_valid=false).
Get_current_user_id() на момент сабмита; 0 для гостя (типичный публичный Turbo).
Example
{ "is_valid": true, "validation_messages": {}, "confirmation": "Спасибо, заявка принята.", "pollResults": [], "entry_id": 901, "user_id": 0}Invalid_form — form_id ≤ 0. Либо WP_Error из GFAPI::submit_form со status 400 (код как у Gravity Forms).
object
Машинный код WP_Error (например wp2lms_static_builder_busy, rest_forbidden, invalid_nonce).
Человекочитаемое сообщение ошибки из PHP / WordPress REST.
Обычно { status: <HTTP-код> }. Если status нет, ядро REST часто отдаёт 500.
object
Example
{ "code": "wp2lms_static_builder_busy", "message": "Build is currently building and cannot be updated.", "data": { "status": 409 }}Invalid_nonce — нет или неверный nonce wp_rest (заголовок X-WP-Nonce или параметр _wpnonce).
object
Машинный код WP_Error (например wp2lms_static_builder_busy, rest_forbidden, invalid_nonce).
Человекочитаемое сообщение ошибки из PHP / WordPress REST.
Обычно { status: <HTTP-код> }. Если status нет, ядро REST часто отдаёт 500.
object
Example
{ "code": "wp2lms_static_builder_busy", "message": "Build is currently building and cannot be updated.", "data": { "status": 409 }}Not_found — GFAPI::get_form не вернул массив формы.
object
Машинный код WP_Error (например wp2lms_static_builder_busy, rest_forbidden, invalid_nonce).
Человекочитаемое сообщение ошибки из PHP / WordPress REST.
Обычно { status: <HTTP-код> }. Если status нет, ядро REST часто отдаёт 500.
object
Example
{ "code": "wp2lms_static_builder_busy", "message": "Build is currently building and cannot be updated.", "data": { "status": 409 }}Submit_failed — GFAPI::submit_form вернул не массив и не WP_Error. Либо WP_Error GF без своего status.
object
Машинный код WP_Error (например wp2lms_static_builder_busy, rest_forbidden, invalid_nonce).
Человекочитаемое сообщение ошибки из PHP / WordPress REST.
Обычно { status: <HTTP-код> }. Если status нет, ядро REST часто отдаёт 500.
object
Example
{ "code": "wp2lms_static_builder_busy", "message": "Build is currently building and cannot be updated.", "data": { "status": 409 }}Unavailable — нет класса GFAPI (плагин Gravity Forms не активен).
object
Машинный код WP_Error (например wp2lms_static_builder_busy, rest_forbidden, invalid_nonce).
Человекочитаемое сообщение ошибки из PHP / WordPress REST.
Обычно { status: <HTTP-код> }. Если status нет, ядро REST часто отдаёт 500.
object
Example
{ "code": "wp2lms_static_builder_busy", "message": "Build is currently building and cannot be updated.", "data": { "status": 409 }}