Desarrolladores
Contactos del CRM con su estado de validación en VIES.
GET /contacts Listar contactosPOST /contacts Crear un contacto/contactsListar contactos
Contactos del CRM de tu cuenta, con su estado de validación en VIES.
Permiso exigido:
contacts:contacts.read (Contactos › Contactos › Leer)
Paginación: Parámetros page y limit. La respuesta incluye total, page, limit, pages.
| Nombre | En | Tipo | Descripción |
|---|---|---|---|
page | query | integer | Por defecto: 1 |
limit | query | integer | Por defecto: 50 · máximo: 200 |
200 Lista de contactos · application/json
| Nombre | Tipo | Descripción |
|---|---|---|
contacts | object[] | |
contacts[].id | string | |
contacts[].firstName | string | |
contacts[].lastName | string | |
contacts[].fullName | string | |
contacts[].email | string (email)puede ser null | |
contacts[].phone | stringpuede ser null | |
contacts[].nif | stringpuede ser null | |
contacts[].countryCode | stringpuede ser null | |
contacts[].isActive | boolean | |
contacts[].preferredLanguage | string | |
contacts[].viesValid | booleanpuede ser null | |
contacts[].viesCheckedAt | string (date-time)puede ser null | |
contacts[].viesTraderName | stringpuede ser null | |
total | integer | Total de elementos que cumplen el filtro. |
page | integer | Página devuelta (empieza en 1). |
limit | integer | Tamaño de página aplicado. |
pages | integer | Número total de páginas. |
401 Falta el token Bearer o no es válido. · application/json
| Nombre | Tipo | Descripción |
|---|---|---|
error | string | Mensaje de error legible |
required_permission | string | Solo en el 403: el permiso que falta (área:recurso.acción) |
403 El token no tiene el permiso exigido o el recurso queda fuera de su alcance. · application/json
| Nombre | Tipo | Descripción |
|---|---|---|
error | string | Mensaje de error legible |
required_permission | string | Solo en el 403: el permiso que falta (área:recurso.acción) |
429 Se ha alcanzado un límite de uso. · application/json
| Nombre | Tipo | Descripción |
|---|---|---|
error | string | Mensaje de error legible |
required_permission | string | Solo en el 403: el permiso que falta (área:recurso.acción) |
curl -X GET "https://app.bm.consulting/api/v1/contacts?limit=50" \
-H "Authorization: Bearer $BMC_TOKEN" const res = await fetch("https://app.bm.consulting/api/v1/contacts?limit=50", {
method: "GET",
headers: {
Authorization: `Bearer ${process.env.BMC_TOKEN}`,
},
});
if (!res.ok) throw new Error(`${res.status} ${await res.text()}`);
const data = await res.json(); import os
import requests
res = requests.get(
"https://app.bm.consulting/api/v1/contacts?limit=50",
headers={"Authorization": f"Bearer {os.environ['BMC_TOKEN']}"},
timeout=30,
)
res.raise_for_status()
data = res.json() /contactsCrear un contacto
Crea o actualiza un contacto del CRM de tu cuenta sin duplicarlo (busca por NIF, después por correo y después por teléfono). Una llamada repetida con la misma identidad actualiza el contacto existente.
Permiso exigido:
contacts:contacts.create (Contactos › Contactos › Crear)
Paginación: Sin paginación: devuelve el conjunto completo.
application/json| Nombre | Tipo | Descripción |
|---|---|---|
firstNameobligatorio | string | |
lastNameobligatorio | string | |
email | string (email)puede ser null | |
phone | stringpuede ser null | |
nif | stringpuede ser null | NIF, NIE o CIF: la clave que mejor evita duplicados |
preferredLanguage | string |
200 Contacto creado o actualizado · application/json
| Nombre | Tipo | Descripción |
|---|---|---|
id | string | |
firstName | string | |
lastName | string | |
fullName | string | |
email | string (email)puede ser null | |
phone | stringpuede ser null | |
nif | stringpuede ser null | |
countryCode | stringpuede ser null | |
isActive | boolean | |
preferredLanguage | string | |
viesValid | booleanpuede ser null | |
viesCheckedAt | string (date-time)puede ser null | |
viesTraderName | stringpuede ser null |
400 Error de validación · application/json
| Nombre | Tipo | Descripción |
|---|---|---|
error | string | Mensaje de error legible |
required_permission | string | Solo en el 403: el permiso que falta (área:recurso.acción) |
401 Falta el token Bearer o no es válido. · application/json
| Nombre | Tipo | Descripción |
|---|---|---|
error | string | Mensaje de error legible |
required_permission | string | Solo en el 403: el permiso que falta (área:recurso.acción) |
403 El token no tiene el permiso exigido o el recurso queda fuera de su alcance. · application/json
| Nombre | Tipo | Descripción |
|---|---|---|
error | string | Mensaje de error legible |
required_permission | string | Solo en el 403: el permiso que falta (área:recurso.acción) |
429 Se ha alcanzado un límite de uso. · application/json
| Nombre | Tipo | Descripción |
|---|---|---|
error | string | Mensaje de error legible |
required_permission | string | Solo en el 403: el permiso que falta (área:recurso.acción) |
curl -X POST "https://app.bm.consulting/api/v1/contacts" \
-H "Authorization: Bearer $BMC_TOKEN" \
-H "Content-Type: application/json" \
-d '{"firstName":"string","lastName":"string"}' const res = await fetch("https://app.bm.consulting/api/v1/contacts", {
method: "POST",
headers: {
Authorization: `Bearer ${process.env.BMC_TOKEN}`,
"Content-Type": "application/json",
},
body: JSON.stringify({
"firstName": "string",
"lastName": "string"
}),
});
if (!res.ok) throw new Error(`${res.status} ${await res.text()}`);
const data = await res.json(); import os
import requests
res = requests.post(
"https://app.bm.consulting/api/v1/contacts",
headers={"Authorization": f"Bearer {os.environ['BMC_TOKEN']}"},
json={
"firstName": "string",
"lastName": "string",
},
timeout=30,
)
res.raise_for_status()
data = res.json()