Obtener un formulario
GET
/v1/forms/{id}Para desarrolladores
Descripción
Devuelve un formulario con sus ítems, en el orden en que se muestran. Incluye public_token, con el que puede armar su propio enlace o inserción del formulario público.
Guía relacionada
- Formularios — Arme formularios de captura y revise lo que se envió.
Autenticación
Authorizationbearer tokenheaderobligatorio- API key con scope
form:read. Formato:Bearer <API_KEY>. X-Instance-Slugstringheaderobligatorio- Identificador de su instancia. Ver Autenticación.
Request
Path params:
idintegerobligatorio- Identificador del formulario.
Response
200 OKDevuelve un objeto con los campos que siguen.
idintegersiempre presente- Identificador del formulario.
namestringsiempre presente- Nombre del formulario.
kindstring, enum: `consent | advanced`siempre presenteconsent: formularios simples generados por el módulo de consentimiento (solo identificador + ítems de consentimiento).advanced: formularios armados libremente con cualquier campo del catálogo.typestring, enum: `registration | update`siempre presenteregistration: capta contactos nuevos.update: actualiza datos de un contacto existente.dataset_idinteger | null- Dataset que alimentan las respuestas confirmadas de este formulario, si está vinculado a uno.
public_tokenstringsiempre presente- Token que identifica al formulario en su URL o inserción pública.
is_defaultbooleansiempre presente- —
is_activebooleansiempre presentetruecuando el formulario está activo y acepta envíos.settingsobject | null- Textos públicos del formulario (
title,header_text,footer_text) y diseño de su página pública (design:primary_color,secondary_color,logo_url,custom_css), forma libre. created_atstring (date-time)siempre presente- Fecha y hora de creación.
updated_atstring (date-time)siempre presente- Fecha y hora de la última modificación.
itemsobject[]siempre presente- Los ítems del formulario, en orden.
idintegersiempre presente- Identificador del ítem.
kindstring, enum: `field | consent | divider | text`siempre presentefield: un campo del catálogo (usafield_id).consent: un ítem de consentimiento (usaterm_id).divider: separador visual.text: bloque de texto libre (usacontent).field_idinteger | nulliddel campo, cuandokind=field.term_idinteger | nulliddel término de consentimiento, cuandokind=consent(ver `GET /v1/consent-terms`).labelstring | null- Etiqueta personalizada del ítem, si se definió una distinta a la del campo o del término.
contentstring | null- Texto del bloque, cuando
kind=text. is_requiredbooleansiempre presente- Si el visitante debe completarlo para enviar el formulario.
sort_orderintegersiempre presente- Posición del ítem en el formulario, ascendente.
widthstring, enum: `full | half`siempre presente- Ancho del ítem en la página pública del formulario. Solo tiene efecto sobre
kind=field. El resto de los tipos de ítem siempre ocupa la fila completa.
Errores
| Código | Cuándo |
|---|---|
| 404 | El id de formulario no existe en la cuenta (form_not_found). |
Detalle completo en Errores genéricos.
Request
curl -X GET "https://$API_HOST/v1/forms/5" \
-H "Authorization: Bearer $API_KEY" \
-H "X-Instance-Slug: $SLUG"
Response
{
"id": 5,
"name": "Suscripción newsletter",
"kind": "advanced",
"type": "registration",
"dataset_id": null,
"public_token": "f3b1c2...",
"is_default": false,
"is_active": true,
"settings": {
"title": "Súmate a nuestras novedades"
},
"created_at": "2026-05-08T14:22:31Z",
"updated_at": "2026-05-08T14:22:31Z",
"items": [
{
"id": 11,
"kind": "field",
"field_id": 1,
"term_id": null,
"label": null,
"content": null,
"is_required": true,
"sort_order": 0,
"width": "full"
},
{
"id": 12,
"kind": "consent",
"field_id": null,
"term_id": 4,
"label": null,
"content": null,
"is_required": true,
"sort_order": 1,
"width": "full"
}
]
}