# Inicio rápido

> Apunta cualquier formulario HTML a Ikiform y recibe tu primer envío en dos minutos.

Ikiform es el backend para cada formulario. Conservas tu propio markup, framework y estilos. Apunta el formulario a un endpoint de Ikiform y Ikiform valida cada envío, filtra el spam, lo guarda en tu espacio de trabajo, te avisa por email y lo entrega a tus sistemas mediante un webhook firmado.

Los ejemplos de código de esta documentación usan el id de formulario de ejemplo `frm_xxxxxxxxxxxxxxxx`. Sustitúyelo por el id de tu formulario, que encontrarás en el resumen del formulario en el panel.

## Elige cómo envías

Cada formulario tiene un endpoint público, `https://ikiform.com/f/<formId>`. Cualquier cosa que pueda enviar un HTTP POST puede usarlo.

| Envías desde | Uso | Guía |
| --- | --- | --- |
| Una página HTML o un creador de sitios | `<form action>` | [Formularios HTML](https://ikiform.com/es/docs/html.md) |
| React, Next.js, Vue, Svelte, Astro | `fetch` o `submit` del SDK | [Guías](https://ikiform.com/es/docs/guides/nextjs.md) |
| Un backend, un script o una integración | JSON por HTTPS con una clave secreta | [Desde un servidor](https://ikiform.com/es/docs/guides/server.md) |
| Un proyecto con shadcn/ui | El componente del registro | [Componente de shadcn/ui](https://ikiform.com/es/docs/shadcn.md) |

## Inicio rápido

### Paso 1: Crea un formulario

Inicia sesión en el [panel](https://ikiform.com/dashboard), crea un espacio de trabajo y añade un formulario. Su resumen muestra la URL del endpoint y snippets listos para HTML, JavaScript y React.

### Paso 2: Apunta tu formulario al endpoint

Pon el endpoint en el `action` del formulario y `post` en `method`. Cada input con un `name` se convierte en un campo del envío.

`contact.html`:

```html
<form action="https://ikiform.com/f/frm_xxxxxxxxxxxxxxxx" method="post">
  <input name="name" required />
  <input name="email" type="email" required />
  <textarea name="message"></textarea>
  <input name="_gotcha" type="text" tabindex="-1" autocomplete="off" hidden />
  <button>Send</button>
</form>
```

El input oculto `_gotcha` es un honeypot. Las personas nunca lo ven; los bots que lo rellenan se guardan como spam. Consulta [Protección antispam](https://ikiform.com/es/docs/spam.md#honeypot).

### Paso 3: Envíalo

Abre la página y envía el formulario. El navegador llega a la página de agradecimiento de Ikiform, o a tu propia página si configuraste una redirección. También puedes enviar JSON desde una terminal:

`Terminal`:

```bash
curl https://ikiform.com/f/frm_xxxxxxxxxxxxxxxx \
  -H "Content-Type: application/json" \
  -d '{"name":"Ada","email":"ada@example.com","message":"Hello"}'
```

Una petición JSON recibe una respuesta JSON con el estado `201`:

`201 Created`:

```json
{ "ok": true, "id": "sub_01k7v2c9t3e8m5q4x6z0a1b2c3" }
```

### Paso 4: Míralo llegar

El envío aparece en el panel al instante. Desde ahí, añade un [webhook](https://ikiform.com/es/docs/webhooks.md) para mandar cada envío a tu app, o léelos con la [API REST](https://ikiform.com/es/docs/api.md).

## Pruébalo

El constructor de peticiones interactivo de esta página arma un envío a partir de filas de campos y muestra el código curl, fetch y SDK correspondiente. Con el id de ejemplo solo muestra código; con el id de tu formulario puede enviar un POST real a `https://ikiform.com/f/<formId>` y mostrar el estado y la respuesta JSON. La petición que construye se ve así:

```bash
curl https://ikiform.com/f/frm_xxxxxxxxxxxxxxxx \
  -H "Content-Type: application/json" \
  -d '{"name":"Ada","email":"ada@example.com","message":"Hello"}'
```

## Siguientes pasos

- [Cómo funciona](https://ikiform.com/es/docs/how-it-works.md) recorre cada comprobación por la que pasa un envío.
- [Define campos](https://ikiform.com/es/docs/fields.md) para que Ikiform rechace los datos incorrectos con errores claros por campo.
- [Activa una verificación humana](https://ikiform.com/es/docs/spam.md#human-check) y limita el formulario a tus dominios.
- [Verifica las firmas de webhook](https://ikiform.com/es/docs/webhooks.md#verify) en tu backend.
