Create a contact
Create one canonical contact with no role or any combination of customer, supplier and lead; the response id is a UUID v7.
- A repeated Idempotency-Key replays the original response without duplicating the contact.
- An existing external_id is updated idempotently within the company.
Request
- Base URL: https://api.factuarea.com/v1
- URL: https://api.factuarea.com/v1/companies/{company}/contacts
- Auth: one of:
- HTTP bearer
- API key in header X-API-Key
Path parameters
Public identifier (UUID v7) of the company. Get it from GET /v1/me (data.scope[].id).
Headers
Client-generated opaque key (up to 255 characters; UUID v7 recommended) that makes retries safe: the first response is cached and replayed for repeats without re-executing the mutation. Reusing a key with a different body returns 422 idempotency_key_reused; the values of secret fields (password, secret…) count as part of the body, so retrying with a corrected secret under the same key is a different request, never the replay of the earlier answer. See the Idempotency guide.
Pin the API version (YYYY-MM-DD, Stripe-style date versioning) for this request; omit to use the key's pinned version, or the latest if none. Unsupported version → 400 unsupported_api_version; malformed → 400 parameter_invalid_format. The effective version is echoed in the Factuarea-Version response header. See the Versioning guide.
Request body
Example request
{
"name": "Distribuciones Ejemplo SL",
"kind": "company",
"roles": [
"customer",
"supplier"
],
"tax_id": "B12345674",
"address": {
"line_1": "Calle Mayor",
"country_code": "ES"
}
}Response
The external_id already identified a contact of the company: that contact was updated with the request, keeps its id and is returned.
Example response
{
"data": {
"id": "0198f4d1-a492-7e05-9a35-000000000001",
"object": "contact",
"kind": "company",
"name": "Distribuciones Ejemplo SL",
"business_name": "Distribuciones Ejemplo SL",
"commercial_name": "Ejemplo",
"tax_id": "B12345674",
"vat_id": null,
"alternative_id": null,
"address": {
"line1": "Calle Mayor",
"line2": null,
"number": "10",
"floor": null,
"door": null,
"staircase": null,
"city": "Madrid",
"province": "Madrid",
"postal_code": "28013",
"country": "ES"
},
"contact_person": "Ana García",
"email": "administracion@example.com",
"phone": "+34910000000",
"mobile": null,
"fax": null,
"website": "https://example.com",
"billing_emails": [
"facturas@example.com"
],
"tags": [
"distribuidor"
],
"coordinates": null,
"notes": null,
"metadata": {
"erp_id": "CONTACT-42"
},
"accumulate_347": true,
"external_id": "CONTACT-42",
"roles": [
{
"role": "customer",
"status": "active",
"assigned_at": "2026-08-29T10:00:00+00:00",
"deactivated_at": null
},
{
"role": "supplier",
"status": "active",
"assigned_at": "2026-08-29T10:00:00+00:00",
"deactivated_at": null
}
],
"bank_accounts": [],
"customer_profile": null,
"supplier_profile": null,
"financial_summary": {
"sales": {
"invoiced_amount": "1210.00",
"collected_amount": "800.00",
"receivable_amount": "410.00",
"currency": "EUR"
},
"purchases": {
"purchased_amount": "605.00",
"paid_amount": "400.00",
"payable_amount": "205.00",
"currency": "EUR"
}
},
"latest_activity": null,
"is_archived": false,
"archived_at": null,
"created_at": "2026-08-29T10:00:00+00:00",
"updated_at": "2026-08-29T10:00:00+00:00"
}
}Changes
No recorded changes to this operation across all 1 revision of this API.