*REST API › Objects › CRM*

# Contact

> The contact, as returned by the API.

A customer or a supplier of the account, with its tax data, emails, phone numbers, addresses and commercial terms. Orders, quotes, invoices and projects point to a contact. Contacts use the tenancy inherited from the parent account, so a billing account also sees the contacts of its parent. [`contactNumber`](https://docs.filmo.io/rest-api/objects/contact#response-contactNumber) is writable (up to 50 characters) but it is not unique and Filmo does not generate it. The detail read, [`GET /api/v1/contacts/{contactId}`](https://docs.filmo.io/rest-api/endpoint-reference/contacts/get-a-contact), adds the related contacts, which the list does not carry.

Schemas: `ContactDto`, `ContactDetailDto`

## Attributes

| Name | Type | Description |
| --- | --- | --- |
| `id` | string | Unique identifier of the contact. |
| `name` | string | Contact name (person or company). |
| `contactType` | string | Contact type: person (individual) or company (business). `person`, `company` |
| `role` | string | Contact role: client, provider, lead, debtor, creditor, student, teacher or unspecified. `client`, `provider`, `lead`, `debtor`, `creditor`, `student`, `teacher`, `unspecified` |
| `status` | string | Contact status: active (operational), inactive (deactivated) or archived (closed, kept for historical records). `active`, `inactive`, `archived` |
| `nif` | string | NIF/CIF or tax identification number; null if not recorded. |
| `commercialName` | string | Trade name; null if it matches the name or is not recorded. |
| `position` | string | Job title or position of the contact person; null if not recorded. |
| `contactNumber` | string | Contact number assigned by the account (internal reference); null if not recorded. |
| `emails` | object[] | List of email addresses of the contact. |
| `emails.id` | string | Internal identifier of the email within the contact. |
| `emails.label` | string | Descriptive label of the email; null if it has none. |
| `emails.email` | string | Email address. |
| `emails.isPrimary` | boolean | Whether this is the primary email of the contact. |
| `billingEmail` | string | Dedicated billing email; null means the primary email is used. |
| `phoneNumbers` | object[] | List of phone numbers of the contact. |
| `phoneNumbers.id` | string | Internal identifier of the phone number within the contact. |
| `phoneNumbers.label` | string | Descriptive label of the phone number; null if it has none. |
| `phoneNumbers.number` | string | Phone number. |
| `phoneNumbers.countryCode` | string | International country calling code (e.g. "+34"); null if not recorded. |
| `phoneNumbers.isPrimary` | boolean | Whether this is the primary phone number of the contact. |
| `websites` | object[] | List of websites of the contact. |
| `websites.id` | string | Internal identifier of the website within the contact. |
| `websites.label` | string | Descriptive label of the website; null if it has none. |
| `websites.url` | string | Website URL. |
| `addresses` | object[] | List of addresses of the contact. |
| `addresses.id` | string | Internal identifier of the address within the contact. |
| `addresses.label` | string | Descriptive label of the address; null if it has none. |
| `addresses.addressLine1` | string | First line of the address; null if not recorded. |
| `addresses.addressLine2` | string | Second line of the address; null if not recorded. |
| `addresses.city` | string | City; null if not recorded. |
| `addresses.province` | string | Province or region; null if not recorded. |
| `addresses.postcode` | string | Postcode; null if not recorded. |
| `addresses.country` | string | Country; null if not recorded. |
| `addresses.isMain` | boolean | Whether this is the main address of the contact. |
| `folder` | string | Folder or organizational grouping; null if the contact is not classified. |
| `discountPercentage` | number | General discount percentage of the contact (0-100); null if no discount is configured. |
| `preferredLanguage` | string | Preferred language of the contact; null if not recorded. |
| `currency` | string | Default currency of the contact as an ISO 4217 code; null if not recorded. |
| `paymentMethod` | object | Preferred payment method of the contact; null if not configured. |
| `paymentMethod.type` | string | Payment method type: bank_transfer, card, cash, sepa_direct_debit or other. `bank_transfer`, `card`, `cash`, `other`, `sepa_direct_debit` |
| `paymentMethod.customValue` | string | Free-text detail when the type is "other" (for example a method recorded before it was configured); null otherwise. |
| `paymentDays` | integer[] | Days of the month on which the contact makes payments; null if not configured. |
| `expirationDays` | integer | Default due days for the invoices of the contact; null if not configured. |
| `subscribedToMarketing` | boolean | Whether the contact is subscribed to marketing communications. |
| `isAppUser` | boolean | Whether the contact has access to the app. |
| `customFields` | object<string, any> | Custom field values by custom field identifier; the definitions are in `/api/v1/custom-fields`. |
| `createdAt` | string<date-time> | Creation date in ISO 8601 with offset. |
| `updatedAt` | string<date-time> | Last update date in ISO 8601 with offset. |
| `relatedContacts` | object[] | Contacts related to this contact (e.g. people of a company). |
| `relatedContacts.id` | string | Unique identifier of the related contact. |
| `relatedContacts.name` | string | Name of the related contact. |
| `relatedContacts.commercialName` | string | Trade name of the related contact; null if not recorded. |
| `relatedContacts.contactType` | string | Type of the related contact: person or company. `person`, `company` |
| `relatedContacts.role` | string | Role of the related contact. `client`, `provider`, `lead`, `debtor`, `creditor`, `student`, `teacher`, `unspecified` |
| `relatedContacts.status` | string | Status of the related contact: active, inactive or archived. `active`, `inactive`, `archived` |
| `relatedContacts.relationRole` | string | Role of the relationship between the two contacts (e.g. "employee of"); null if not recorded. |

## Values

| Field | Values |
| --- | --- |
| `contactType` | `person`, `company` |
| `role` | `client`, `provider`, `lead`, `debtor`, `creditor`, `student`, `teacher`, `unspecified` |
| `status` | `active`, `inactive`, `archived` |

## Example

*Contact · Generated from the schema*

```json
{
  "id": "id_8f2a1c",
  "name": "Example",
  "contactType": "person",
  "role": "client",
  "status": "active",
  "nif": "00000000T",
  "commercialName": "Example",
  "position": "string",
  "contactNumber": "string",
  "emails": [
    {
      "id": "id_8f2a1c",
      "label": "Example",
      "email": "ana@example.com",
      "isPrimary": true
    }
  ],
  "billingEmail": "ana@example.com",
  "phoneNumbers": [
    {
      "id": "id_8f2a1c",
      "label": "Example",
      "number": "string",
      "countryCode": "ES",
      "isPrimary": true
    }
  ],
  "websites": [
    {
      "id": "id_8f2a1c",
      "label": "Example",
      "url": "https://example.com"
    }
  ],
  "addresses": [
    {
      "id": "id_8f2a1c",
      "label": "Example",
      "addressLine1": "string",
      "addressLine2": "string",
      "city": "string",
      "province": "string",
      "postcode": "string",
      "country": "ES",
      "isMain": true
    }
  ],
  "folder": "string",
  "discountPercentage": 1,
  "preferredLanguage": "es-ES",
  "currency": "EUR",
  "paymentMethod": {
    "type": "bank_transfer",
    "customValue": "string"
  },
  "paymentDays": [
    1
  ],
  "expirationDays": 1,
  "subscribedToMarketing": true,
  "isAppUser": true,
  "customFields": {
    "key": "string"
  },
  "createdAt": "2026-09-01T08:00:00Z",
  "updatedAt": "2026-09-01T08:00:00Z",
  "relatedContacts": [
    {
      "id": "id_8f2a1c",
      "name": "Example",
      "commercialName": "Example",
      "contactType": "person",
      "role": "client",
      "status": "active",
      "relationRole": "string"
    }
  ]
}
```

## Returned by

- [`GET /api/v1/contacts`](https://docs.filmo.io/rest-api/endpoint-reference/contacts/list-contacts) — List contacts
- [`GET /api/v1/contacts/{contactId}`](https://docs.filmo.io/rest-api/endpoint-reference/contacts/get-a-contact) — Get a contact

## Modified by

- [`POST /api/v1/contacts`](https://docs.filmo.io/rest-api/endpoint-reference/contacts/create-a-contact) — Create a contact
- [`PATCH /api/v1/contacts/{contactId}`](https://docs.filmo.io/rest-api/endpoint-reference/contacts/update-a-contact) — Update a contact
- [`PATCH /api/v1/contacts/{contactId}/preferences`](https://docs.filmo.io/rest-api/endpoint-reference/contacts/update-the-commercial-terms-of-a-contact) — Update the commercial terms of a contact
- [`POST /api/v1/contacts/{contactId}/addresses`](https://docs.filmo.io/rest-api/endpoint-reference/contacts/add-an-address-to-a-contact) — Add an address to a contact
- [`PATCH /api/v1/contacts/{contactId}/addresses/{addressId}`](https://docs.filmo.io/rest-api/endpoint-reference/contacts/update-an-address-of-a-contact) — Update an address of a contact
- [`DELETE /api/v1/contacts/{contactId}/addresses/{addressId}`](https://docs.filmo.io/rest-api/endpoint-reference/contacts/remove-an-address-from-a-contact) — Remove an address from a contact
- [`POST /api/v1/contacts/{contactId}/related-contacts`](https://docs.filmo.io/rest-api/endpoint-reference/contacts/relate-two-contacts) — Relate two contacts
- [`PATCH /api/v1/contacts/{contactId}/related-contacts/{relatedContactId}`](https://docs.filmo.io/rest-api/endpoint-reference/contacts/change-the-role-of-a-relationship) — Change the role of a relationship
- [`DELETE /api/v1/contacts/{contactId}/related-contacts/{relatedContactId}`](https://docs.filmo.io/rest-api/endpoint-reference/contacts/unrelate-two-contacts) — Unrelate two contacts

---

Canonical URL: https://docs.filmo.io/rest-api/objects/contact  
Last updated: 2026-10-25