Guías · API REST
Envía una solicitud con la API REST
Cualquier herramienta con un paso HTTP puede enviar una solicitud: Pipedream, una función serverless, un script. Esta guía lo hace con curl, para que veas cada llamada antes de moverla a tu propio código.
Last checked
Necesitas un formulario publicado. Esta guía usa el que se construyó en Construye un formulario con un agente de IA: nombre de la empresa, correo de contacto, número de IVA, una pregunta de sí o no sobre las condiciones de pago, y una subida de archivo. Cada método y opción usados aquí se describen en Métodos de la API.
1. Crea un token de API
En formbase, abre OAuth y claves de API en la barra lateral del espacio de trabajo y crea un token. El valor se muestra una sola vez. Guárdalo en una variable de entorno, nunca en tu código:
export FORMBASE_TOKEN='fb_...'Un token llega solo al espacio de trabajo en el que se creó. Cada llamada de abajo es un POST a la misma URL con el token en
la cabecera Authorization; el cuerpo nombra el método y sus parámetros.
2. Encuentra el ID del formulario
Abre el formulario en el editor. El ID del formulario es la parte de la dirección después de /forms/:
https://app.formbase.so/<workspace ID>/forms/jx75hdx8vb5hy1x85gm17nqgkn8f674g/editLos comandos de abajo usan el ID de formulario de esta guía. Pon el tuyo en su lugar.
3. Enumera las claves de campo
Una solicitud rellena preguntas, y las respuestas vuelven, por clave de campo. Pídele al formulario sus claves en lugar de adivinarlas a partir de los títulos:
curl -X POST https://api.formbase.so/api/v1 \
-H "Authorization: Bearer $FORMBASE_TOKEN" \
-H "Content-Type: application/json" \
-d '{"method": "fields.list", "params": {"formId": "jx75hdx8vb5hy1x85gm17nqgkn8f674g"}}'La respuesta enumera cada pregunta del formulario publicado. Resumida:
{
"ok": true,
"data": {
"published": true,
"items": [
{ "key": "company_name", "type": "text", "title": "Company name", "required": true, "prefillable": true },
{ "key": "contact_email", "type": "email", "title": "Contact email", "required": true, "prefillable": true },
{ "key": "vat_number", "type": "text", "title": "VAT number", "required": false, "prefillable": true },
{
"key": "do_you_accept_our_30_day_payment_terms", "type": "radio", "title": "Do you accept our 30-day payment terms?", "required": true, "prefillable": true,
"options": [{ "key": "yes", "label": "Yes" }, { "key": "no", "label": "No" }]
},
{ "key": "certificate_of_incorporation", "type": "file", "title": "Certificate of incorporation", "required": true, "prefillable": false }
],
"hasMore": false
}
}Para precompletar una pregunta de elección, envía la key de la opción, aquí “yes”, no su etiqueta. Una pregunta
con prefillable: false, como la subida de archivo, solo la puede responder el destinatario. El resto de las marcas se
explican en fields.list.
4. Crea una solicitud de prueba
Envía la solicitud a Ada Lovelace, con el nombre de la empresa rellenado y bloqueado. test: true la convierte en una
solicitud de prueba: nunca envía correo a nadie y no cuenta en ningún sitio, así
que puedes repetir este paso tantas veces como quieras, con una nueva idempotencyKey cada vez.
curl -X POST https://api.formbase.so/api/v1 \
-H "Authorization: Bearer $FORMBASE_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"method": "requests.create",
"params": {
"formId": "jx75hdx8vb5hy1x85gm17nqgkn8f674g",
"recipient": { "email": "ada@acme.example", "name": "Ada Lovelace" },
"prefill": { "company_name": "Analytical Engines Ltd" },
"readonly": ["company_name"],
"externalId": "supplier-2043",
"idempotencyKey": "supplier-2043",
"test": true
}
}'prefill rellena respuestas que el destinatario todavía puede cambiar. Una clave en readonly queda bloqueada además.
externalId es tu propio id para este trabajo, como un número de proveedor. Vuelve en cada lectura y cada callback.
idempotencyKey hace que un reintento sea seguro. Si tu código envía la misma llamada dos veces, formbase devuelve la primera solicitud con
deduplicated: trueen lugar de crear una segunda.
La respuesta lleva el ID de la solicitud y el enlace para el destinatario:
{
"ok": true,
"data": {
"id": "m17ayhcnj9xvzkff3atek49bdd8f6872",
"status": "pending",
"url": "https://form.formbase.so/r/rq_...",
"deliveryStatus": "not_requested",
"externalId": "supplier-2043",
"deduplicated": false,
"createdAt": 1790539225370,
"expiresAt": 1793131225370
}
}deliveryStatus: “not_requested” significa que formbase no envió ningún correo; tú entregas el enlace. Para que formbase envíe
la invitación y los recordatorios, añade “delivery”: “email”, que necesita un plan Pro o Business. Consulta
Invitaciones, recordatorios y expiración. Si el formulario tiene
Enviar recordatorios activado, una solicitud real con un correo de destinatario igualmente recibe los recordatorios
programados; añade “reminders”: [] para no enviar ninguno.
Las solicitudes de prueba quedan fuera de la vista
La página Solicitudes lista las solicitudes de prueba solo cuando activas el filtro
Mostrar solicitudes de prueba. Abre el url tú mismo para completarla. Quita test cuando
envíes la solicitud real.
5. Complétala y lee las respuestas
Abre el url en un navegador. El nombre de la empresa está rellenado y bloqueado; responde el resto y envíalo. Luego lee la
solicitud de vuelta con su ID:
curl -X POST https://api.formbase.so/api/v1 \
-H "Authorization: Bearer $FORMBASE_TOKEN" \
-H "Content-Type: application/json" \
-d '{"method": "requests.get", "params": {"requestId": "m17ayhcnj9xvzkff3atek49bdd8f6872"}}'Una vez que status es completed, la respuesta lleva dos mapas indexados por clave de campo. answers
es para código: una respuesta de elección es la clave de la opción, una respuesta de archivo es una lista de archivos con URLs de
descarga. display es para personas: etiquetas y nombres de archivo.
"answers": {
"company_name": "Analytical Engines Ltd",
"do_you_accept_our_30_day_payment_terms": "yes",
"certificate_of_incorporation": [{ "name": "certificate-of-incorporation.pdf", "type": "application/pdf", "size": 635, "url": "https://api.formbase.so/api/storage/..." }]
},
"display": {
"company_name": "Analytical Engines Ltd",
"do_you_accept_our_30_day_payment_terms": "Yes",
"certificate_of_incorporation": "certificate-of-incorporation.pdf"
}Preguntar una y otra vez hasta que cambie el estado funciona para una prueba, pero no en producción. Dale a la solicitud una
callbackUrl y formbase te llama cuando termina; la siguiente guía lo configura.