# `api.contacts.get_details` > `GET /contacts/{contactId}/editdetails` — ACPortal **Python** ```python api.contacts.get_details(contact_id: str) -> ContactDetailedInfo ``` **CLI** ```bash ab contacts get_details ``` GET /contacts/{contactId}/editdetails ## Response Returns `ContactDetailedInfo`. | Field | Type | Required | Description | |---|---|---|---| | `isActive` | `Optional[bool]` | no | Whether the record is active | | `createdDate` | `Optional[datetime]` | no | Creation timestamp | | `modifiedDate` | `Optional[datetime]` | no | Last modification timestamp | | `createdBy` | `Optional[str]` | no | Creator identifier | | `modifiedBy` | `Optional[str]` | no | Last modifier identifier | | `id` | `str \| int \| None` | no | Unique identifier | | `firstName` | `Optional[str]` | no | First name | | `lastName` | `Optional[str]` | no | Last name | | `email` | `Optional[str]` | no | Email address | | `phone` | `Optional[str]` | no | Phone number | | `contactDisplayId` | `Optional[str]` | no | Display ID | | `fullName` | `Optional[str]` | no | Full display name | | `contactTypeId` | `Optional[int]` | no | Contact type identifier | | `careOf` | `Optional[str]` | no | Care-of / attention line | | `bolNotes` | `Optional[str]` | no | BOL notes | | `taxId` | `Optional[str]` | no | Tax ID | | `isBusiness` | `Optional[bool]` | no | Whether this is a business contact | | `isPayer` | `Optional[bool]` | no | Whether this contact is a payer | | `isPrefered` | `Optional[bool]` | no | Whether this contact is preferred | | `isPrivate` | `Optional[bool]` | no | Whether this contact is private | | `isPrimary` | `Optional[bool]` | no | Whether this is the primary contact | | `companyId` | `Optional[str]` | no | Associated company UUID | | `rootContactId` | `Optional[int]` | no | Root contact identifier | | `ownerFranchiseeId` | `Optional[str]` | no | Owner franchisee UUID | | `company` | `Optional[dict]` | no | Full company object | | `legacyGuid` | `Optional[str]` | no | Legacy system GUID | | `assistant` | `Optional[str]` | no | Assistant name | | `department` | `Optional[str]` | no | Department name | | `webSite` | `Optional[str]` | no | Website URL | | `birthDate` | `Optional[str]` | no | Birth date | | `jobTitleId` | `Optional[int]` | no | Job title identifier | | `jobTitle` | `Optional[str]` | no | Job title | | `emailsList` | `Optional[list[ContactEmailEntry]]` | no | Typed email entries | | `phonesList` | `Optional[list[ContactPhoneEntry]]` | no | Typed phone entries | | `addressesList` | `Optional[list[ContactAddressEntry]]` | no | Typed address entries | | `fax` | `Optional[str]` | no | Fax number | | `primaryPhone` | `Optional[str]` | no | Primary phone number | | `primaryEmail` | `Optional[str]` | no | Primary email address | | `editable` | `Optional[bool]` | no | Whether the contact is editable | | `addresses` | `Optional[list[dict]]` | no | Contact addresses (legacy, untyped) | | `phones` | `Optional[list[dict]]` | no | Phone numbers (legacy, untyped) | | `emails` | `Optional[list[dict]]` | no | Email addresses (legacy, untyped) | | `companyInfo` | `Optional[dict]` | no | Associated company info | | `contactDetailsCompanyInfo` | `Optional[dict]` | no | Rich company details with address and branding | | `fullNameUpdateRequired` | `Optional[bool]` | no | Whether full name needs update | | `isEmpty` | `Optional[bool]` | no | Whether the contact record is empty | --- [← Back to api.contacts](../contacts.md)