Trata sobre:
Formularios
Respuestas y errores
Todas las respuestas son JSON con una clave success booleana. Excepto el redirect 302.
Éxito: 200
{
"success": true,
"message": "Formulario enviado exitosamente",
"submission_id": "a1b2c3d4-e5f6-4a7b-8c9d-0e1f2a3b4c5d"
}
submission_id es un UUID. message es el mensaje de éxito configurado, o el default.
Éxito con redirect (AJAX): 200
{
"success": true,
"redirect_url": "https://tu-sitio.pe/gracias",
"submission_id": "a1b2c3d4-e5f6-4a7b-8c9d-0e1f2a3b4c5d"
}
Petición no-AJAX con redirect_url → HTTP 302 directo al destino (sin body JSON).
Error
{
"success": false,
"error": "Has alcanzado el límite de envíos de tu plan",
"code": "LIMIT_REACHED"
}
Códigos y status HTTP
| code | HTTP | Cuándo |
|---|---|---|
| LIMIT_REACHED | 402 | Límite de envíos del plan alcanzado. |
| FORM_INACTIVE | 404 | Formulario desactivado. |
| FORM_UNAVAILABLE | 404 | Formulario no disponible. |
| FORM_NOT_FOUND | 404 | Token inexistente o formulario inactivo. |
| RECAPTCHA_FAILED | 403 | Falló la verificación reCAPTCHA. |
| ORIGIN_BLOCKED | 403 | El Origin no está en la allow-list del formulario. |
| validación / otro | 400 | Datos inválidos u otro error de la petición. |
Gotcha: ramifica por code, no por el texto de error (está en español y puede cambiar). El campo code es estable.