# Get budget line Retrieve a specific budget line by its identifier. The lineId parameter accepts both user-friendly IDs and system IDs: - With (default): Use account codes like "1100" or "camera-dept" - With : Use UUIDs/nanoids like "abc123xyz" or "550e8400-e29b-41d4-a716" Endpoint: GET /projects/{projectId}/budget/line/{lineId} Version: 1.0.0 Security: ApiKeyAuth ## Path parameters: - `projectId` (string, required) Project identifier (alias or ID) Example: "nike-spring-2024" - `lineId` (string, required) Budget line identifier. Can be either a user-friendly ID (e.g., account code) or a system ID (UUID/nanoid), depending on the idMode parameter ## Query parameters: - `tags` (any) Filter budget line by tag names (can be single tag or array of tags) Example: ["Marketing","Engineering"] - `tagFilterMode` (string) How to apply the tag filter Enum: "contains", "excludes" - `expands` (array) Include related data in the response Enum: "contact", "phaseData" - `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): - `type` (string, required) Type of budget line Enum: "line", "account", "subtotal", "markup", "fringes" - `id` (string, required) Budget line identifier (system ID) Example: "line-001" - `accountId` (string,null) Account identifier (user-friendly ID like account code) Example: "2150" - `description` (string,null) Budget line description Example: "RED Camera Package Rental" - `path` (string, required) Hierarchical path in budget tree (e.g., /2000/2150) Example: "/production/equipment/cameras" - `totals` (object, required) Calculated totals for each phase Example: {"estimate":25000,"actual":22500,"variance":2500} - `tags` (array) Tags for categorization and filtering Example: ["Day-1","A-Camera","Equipment"] - `contact` (object) - `contact.id` (string, required) Contact identifier Example: "contact-studio-001" - `contact.contactTitle` (string,null) Contact display title Example: "Sunset Studios - Production Company" - `contact.name` (string,null) Contact name Example: "Alex Rivera" - `contact.email` (string,null) Contact email address Example: "alex.rivera@sunsetstudios.com" - `contact.company` (string,null) Contact company Example: "Sunset Studios Inc." - `contact.type` (string,null) Contact type (Person, Company, etc.) Example: "Person" - `contact.jobTitle` (string,null) Contact job title Example: "Director of Photography" - `contact.rate` (number,null) Contact hourly rate Example: 150 - `contact.secureInfo` (object) - `contact.secureInfo.address` (string,null) Contact address Example: "123 Sunset Blvd, Los Angeles, CA 90028" - `contact.secureInfo.phone` (string,null) Contact phone number Example: "310-555-1234" - `contact.secureInfo.taxIdLast4` (string,null) Last 4 digits of tax ID Example: "4567" - `contact.origin` (object) - `contact.origin.origin` (string,null) How the contact was created Enum: "onboarding", "manual" - `contact.origin.createdAt` (string,null) Contact creation timestamp Example: "2024-02-15T08:00:00Z" - `contact.origin.createdByUser` (object) - `contact.origin.createdByUser.id` (string, required) User identifier Example: "user-001" - `contact.origin.createdByUser.name` (string, required) User name Example: "Sarah Chen" - `contact.origin.createdByUser.email` (string, required) User email address Example: "sarah.chen@sunsetstudios.com" - `contact.startwork` (array) Startwork agreements - `contact.startwork.id` (string, required) Startwork agreement identifier Example: "startwork-001" - `contact.startwork.title` (string, required) Agreement title Example: "Independent Contractor Agreement" - `contact.startwork.signedOn` (string, required) Signature timestamp Example: "2024-03-01T10:00:00Z" - `contact.linkedUser` (object) - `contact.bankInfo` (array) Banking information - `contact.bankInfo.id` (string, required) Bank account identifier Example: "bank-acc-001" - `contact.bankInfo.bankName` (string, required) Bank name Example: "Chase Bank" - `contact.bankInfo.accountType` (string, required) Account type (checking, savings, etc.) Example: "checking" - `contact.bankInfo.accountLast4` (string, required) Last 4 digits of account number Example: "4567" - `contact.taxDocuments` (array) Tax documents - `contact.taxDocuments.id` (string, required) File identifier (DigitalOcean Spaces object key) Example: "files/2024/03/budget-report.pdf" - `contact.taxDocuments.name` (string, required) Original filename Example: "call-sheet-day-3.pdf" - `contact.taxDocuments.type` (string, required) MIME type Example: "application/pdf" - `contact.taxDocuments.size` (integer, required) File size in bytes Example: 1048576 - `contact.attachments` (array) File attachments - `contact.projects` (object) Associated projects - `phaseData` (object) Detailed phase-specific data (expandable) ## 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 404 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"