Desde un servidor
Crea envíos desde un backend, un script o una integración con una clave de API secreta.
Los backends, los cron jobs y las integraciones pueden enviar al mismo endpoint que los navegadores. Añade una clave de API secreta para que Ikiform sepa que el envío es tuyo.
Crea una clave secreta
- En el panel, abre API keys y crea una clave secret.
- Dale el permiso
submissions:write. Añadesubmissions:readyforms:readsolo si la misma clave también lee datos de la API REST. - Copia la clave. Empieza con
ik_sk_y se muestra una sola vez; Ikiform solo guarda su hash.
Crea un envío
const response = await fetch("https://ikiform.com/f/frm_xxxxxxxxxxxxxxxx", {
method: "POST",
headers: {
"Content-Type": "application/json",
Authorization: `Bearer ${process.env.IKIFORM_SECRET_KEY}`,
"Idempotency-Key": order.id,
},
body: JSON.stringify({ email: order.email, plan: order.plan }),
});
const result = await response.json();
if (!result.ok) throw new Error(`${result.error.code}: ${result.error.message} (${result.request_id})`);Qué cambia una clave secreta
| Comprobación | Sin clave | Con una clave secreta |
|---|---|---|
| Dominios permitidos | Se comparan con Origin o Referer | Se omite |
| Verificación humana de Ikiform | Obligatoria cuando está activa | Se omite |
| Tus propias claves de Turnstile | Token obligatorio | El token sigue siendo obligatorio |
| Límites de frecuencia | Por IP de visitante y formulario | Se siguen aplicando, por la IP de tu servidor |
| Validación de campos y puntuación de spam | Se ejecutan | Se ejecutan |
Una clave de otro espacio de trabajo, una clave revocada o una clave secreta sin submissions:write recibe 403 forbidden. Una cabecera Authorization mal formada también se rechaza en lugar de ignorarse, así que una errata nunca te convierte en silencio en un envío anónimo.
Claves publicables
Las claves publicables (ik_pub_) son para navegadores. Solo pueden enviar, y solo desde los dominios que indiques en la clave. Un envío con una clave publicable desde cualquier otro sitio recibe 403 origin_not_allowed. No se saltan la verificación humana ni los dominios permitidos del propio formulario.
Reintentos
Los servidores reintentan. Envía una Idempotency-Key que sea estable para lo que estás enviando, como un id de pedido, y un reintento repetirá la primera respuesta en lugar de crear un duplicado. Consulta Idempotencia.