Skip to content

Developers

Contacts

CRM contacts with VIES validation status.

GET /contacts

List contacts

CRM contacts for your account, including VIES validation status.

Required permission: contacts:contacts.read (Contacts › Contacts › Read)

Pagination: Parameters page and limit. The response includes total, page, limit, pages.

Parameters

NameInTypeDescription
pagequeryinteger
Default: 1
limitqueryinteger
Default: 50 · maximum: 200

Responses

200 List of contacts · application/json

NameTypeDescription
contactsobject[]
contacts[].idstring
contacts[].firstNamestring
contacts[].lastNamestring
contacts[].fullNamestring
contacts[].emailstring (email)
nullable
contacts[].phonestring
nullable
contacts[].nifstring
nullable
contacts[].countryCodestring
nullable
contacts[].isActiveboolean
contacts[].preferredLanguagestring
contacts[].viesValidboolean
nullable
contacts[].viesCheckedAtstring (date-time)
nullable
contacts[].viesTraderNamestring
nullable
totalintegerTotal items matching the filter.
pageintegerPage returned (starts at 1).
limitintegerPage size applied.
pagesintegerTotal number of pages.

401 Missing or invalid Bearer token. · application/json

NameTypeDescription
errorstringHuman-readable error message
required_permissionstringPresent on 403 - the missing permission (area:resource.action)

403 Token lacks the required permission, or the resource is outside the token's tenant. · application/json

NameTypeDescription
errorstringHuman-readable error message
required_permissionstringPresent on 403 - the missing permission (area:resource.action)

429 Rate limit exceeded. · application/json

NameTypeDescription
errorstringHuman-readable error message
required_permissionstringPresent on 403 - the missing permission (area:resource.action)

Examples

curl
curl -X GET "https://app.bm.consulting/api/v1/contacts?limit=50" \
  -H "Authorization: Bearer $BMC_TOKEN"
TypeScript (fetch)
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();
Python (requests)
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()

POST /contacts

Create or upsert a contact

Creates or updates a CRM contact FOR YOUR ACCOUNT (dedup by NIF → email → phone). A repeat call with the same identity updates the existing contact.

Required permission: contacts:contacts.create (Contacts › Contacts › Create)

Pagination: Not paginated: returns the full set.

Request body application/json

NameTypeDescription
firstNamerequiredstring
lastNamerequiredstring
emailstring (email)
nullable
phonestring
nullable
nifstring
nullable
NIF/NIE/CIF - strongest dedup key
preferredLanguagestring

Responses

200 Contact created or updated · application/json

NameTypeDescription
idstring
firstNamestring
lastNamestring
fullNamestring
emailstring (email)
nullable
phonestring
nullable
nifstring
nullable
countryCodestring
nullable
isActiveboolean
preferredLanguagestring
viesValidboolean
nullable
viesCheckedAtstring (date-time)
nullable
viesTraderNamestring
nullable

400 Validation error · application/json

NameTypeDescription
errorstringHuman-readable error message
required_permissionstringPresent on 403 - the missing permission (area:resource.action)

401 Missing or invalid Bearer token. · application/json

NameTypeDescription
errorstringHuman-readable error message
required_permissionstringPresent on 403 - the missing permission (area:resource.action)

403 Token lacks the required permission, or the resource is outside the token's tenant. · application/json

NameTypeDescription
errorstringHuman-readable error message
required_permissionstringPresent on 403 - the missing permission (area:resource.action)

429 Rate limit exceeded. · application/json

NameTypeDescription
errorstringHuman-readable error message
required_permissionstringPresent on 403 - the missing permission (area:resource.action)

Examples

curl
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"}'
TypeScript (fetch)
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();
Python (requests)
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()
Email
Contact