# List contacts Retrieve contacts with optional filtering Endpoint: GET /contacts Version: 1.0.0 Security: ApiKeyAuth ## Query parameters: - `projectIds` (array) Filter by project IDs or aliases Example: ["nike-swoosh-commercial"] - `accountId` (any) Filter by account ID(s) or codes Example: ["2150"] - `origin` (array) Filter by contact origin Enum: "onboarding", "manual" - `hasLinkedUser` (boolean) Filter by linked user presence - `hasAttachments` (boolean) Filter by whether attachments are present Example: true - `hasTaxDocuments` (boolean) Filter by tax document presence Example: true - `email` (string) Filter by email (case-insensitive partial match) Example: "producer@saturation.io" - `title` (string) Filter by title (case-insensitive partial match) Example: "Producer" - `expands` (array) Include related data in the response Enum: "secureInfo", "origin", "projects", "projects.accounts", "startwork", "taxDocuments", "attachments", "bankInfo", "linkedUser" - `idMode` (string) ID interpretation mode. Controls how path and query parameter IDs (like lineId, accountId, phaseId) are interpreted - 'user' for human-readable IDs (account codes, phase names), 'system' for database IDs (UUIDs/nanoids). Also affects the format of IDs in responses. Enum: "user", "system" ## Response 200 fields (application/json): - `contacts` (array) - `contacts.id` (string, required) Contact identifier Example: "contact-studio-001" - `contacts.contactTitle` (string,null) Contact display title Example: "Sunset Studios - Production Company" - `contacts.name` (string,null) Contact name Example: "Alex Rivera" - `contacts.email` (string,null) Contact email address Example: "alex.rivera@sunsetstudios.com" - `contacts.company` (string,null) Contact company Example: "Sunset Studios Inc." - `contacts.type` (string,null) Contact type (Person, Company, etc.) Example: "Person" - `contacts.jobTitle` (string,null) Contact job title Example: "Director of Photography" - `contacts.rate` (number,null) Contact hourly rate Example: 150 - `contacts.secureInfo` (object) - `contacts.secureInfo.address` (string,null) Contact address Example: "123 Sunset Blvd, Los Angeles, CA 90028" - `contacts.secureInfo.phone` (string,null) Contact phone number Example: "310-555-1234" - `contacts.secureInfo.taxIdLast4` (string,null) Last 4 digits of tax ID Example: "4567" - `contacts.origin` (object) - `contacts.origin.origin` (string,null) How the contact was created Enum: "onboarding", "manual" - `contacts.origin.createdAt` (string,null) Contact creation timestamp Example: "2024-02-15T08:00:00Z" - `contacts.origin.createdByUser` (object) - `contacts.origin.createdByUser.id` (string, required) User identifier Example: "user-001" - `contacts.origin.createdByUser.name` (string, required) User name Example: "Sarah Chen" - `contacts.origin.createdByUser.email` (string, required) User email address Example: "sarah.chen@sunsetstudios.com" - `contacts.startwork` (array) Startwork agreements - `contacts.startwork.id` (string, required) Startwork agreement identifier Example: "startwork-001" - `contacts.startwork.title` (string, required) Agreement title Example: "Independent Contractor Agreement" - `contacts.startwork.signedOn` (string, required) Signature timestamp Example: "2024-03-01T10:00:00Z" - `contacts.linkedUser` (object) - `contacts.bankInfo` (array) Banking information - `contacts.bankInfo.id` (string, required) Bank account identifier Example: "bank-acc-001" - `contacts.bankInfo.bankName` (string, required) Bank name Example: "Chase Bank" - `contacts.bankInfo.accountType` (string, required) Account type (checking, savings, etc.) Example: "checking" - `contacts.bankInfo.accountLast4` (string, required) Last 4 digits of account number Example: "4567" - `contacts.taxDocuments` (array) Tax documents - `contacts.taxDocuments.id` (string, required) File identifier (DigitalOcean Spaces object key) Example: "files/2024/03/budget-report.pdf" - `contacts.taxDocuments.name` (string, required) Original filename Example: "call-sheet-day-3.pdf" - `contacts.taxDocuments.type` (string, required) MIME type Example: "application/pdf" - `contacts.taxDocuments.size` (integer, required) File size in bytes Example: 1048576 - `contacts.attachments` (array) File attachments - `contacts.projects` (object) Associated projects ## Response 401 fields (application/json): - `error` (string, required) Error message Example: "Invalid request parameters" - `details` (object) Additional error details Example: {"field":"projectId","reason":"Project not found"} - `code` (string) Error code Example: "VALIDATION_ERROR" ## Response 500 fields (application/json): - `error` (string, required) Error message Example: "Invalid request parameters" - `details` (object) Additional error details Example: {"field":"projectId","reason":"Project not found"} - `code` (string) Error code Example: "VALIDATION_ERROR"