Crear contacto
https://api.afer.pro/crearContacto
Da de alta un contacto en el CRM, o lo actualiza si ya existe uno con el mismo email o móvil.
Es el endpoint típico para conectar formularios web con el CRM de Afer. La deduplicación es automática: si en tu cuenta ya existe un contacto con el mismo email_contacto o el mismo movil_contacto, se actualizan sus datos en lugar de duplicarlo.
Los campos persona_contacto, empresa_contacto y nif_contacto se normalizan a mayúsculas.
Además de los campos estándar, puedes enviar campos personalizados con el prefijo campos_personalizados-: se agrupan en el JSON de campos personalizados del contacto. Por ejemplo, campos_personalizados-talla se guarda como el campo personalizado talla.
Envía tus claves API en las cabeceras X-API-KEY y X-API-SECRET. La cuenta sobre la que se opera se resuelve automáticamente a partir de la clave. Cómo obtener tus claves →
Parámetros del cuerpo
El cuerpo de la petición es un objeto JSON con Content-Type: application/json.
contactoobjectobligatorio | Datos del contacto. Debe incluir al menos email_contacto o movil_contacto; sin uno de los dos no se crea nada. |
email_contactostringopcional | Email del contacto. Clave de deduplicación. |
movil_contactostringopcional | Móvil del contacto. Clave de deduplicación. |
persona_contactostringopcional | Nombre de la persona. Se guarda en mayúsculas. |
empresa_contactostringopcional | Empresa. Se guarda en mayúsculas. |
nif_contactostringopcional | NIF. Se guarda en mayúsculas. |
campos_personalizados-*stringopcional | Cualquier campo con este prefijo se guarda como campo personalizado del contacto (p. ej. campos_personalizados-origen → campo origen). |
Ejemplo de petición
curl -X POST 'https://api.afer.pro/crearContacto' \
-H 'Content-Type: application/json' \
-H 'X-API-KEY: afer_tk_TU_TOKEN' \
-H 'X-API-SECRET: afer_sk_TU_SECRET' \
-d '{
"contacto": {
"persona_contacto": "Maria Ferrer",
"empresa_contacto": "Ferrer Interiors",
"email_contacto": "maria@ejemplo.com",
"movil_contacto": "+34600111222",
"campos_personalizados-origen": "Formulario web"
}
}'
<?php
$data = [
'contacto' => [
'persona_contacto' => 'Maria Ferrer',
'empresa_contacto' => 'Ferrer Interiors',
'email_contacto' => 'maria@ejemplo.com',
'movil_contacto' => '+34600111222',
'campos_personalizados-origen' => 'Formulario web',
],
];
$ch = curl_init('https://api.afer.pro/crearContacto');
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($data));
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, [
'Content-Type: application/json',
'X-API-KEY: afer_tk_TU_TOKEN',
'X-API-SECRET: afer_sk_TU_SECRET',
]);
$respuesta = json_decode(curl_exec($ch), true);
curl_close($ch);
const respuesta = await fetch('https://api.afer.pro/crearContacto', {
method: 'POST',
headers: {
'Content-Type': 'application/json',
'X-API-KEY': 'afer_tk_TU_TOKEN',
'X-API-SECRET': 'afer_sk_TU_SECRET'
},
body: JSON.stringify({
"contacto": {
"persona_contacto": "Maria Ferrer",
"empresa_contacto": "Ferrer Interiors",
"email_contacto": "maria@ejemplo.com",
"movil_contacto": "+34600111222",
"campos_personalizados-origen": "Formulario web"
}
})
});
const resultado = await respuesta.json();
Respuesta
Devuelve el identificador cifrado del contacto creado o actualizado.
{
"errorCode": 200,
"errorMsg": "",
"data": "aBc123XyZ456…"
}
Errores
| Caso | Resultado |
|---|---|
Sin email_contacto ni movil_contacto |
{"msg": "Error desconocido", "error": "error"} |