# Upload actual attachment Upload a receipt or other supporting document for an actual. Accepts PDF or image files up to 10 MB. Endpoint: POST /projects/{projectId}/actuals/{actualId}/attachment Version: 1.0.0 Security: ApiKeyAuth ## Path parameters: - `projectId` (string, required) Project identifier (alias or ID) Example: "nike-spring-2024" - `actualId` (string, required) Actual ID Example: "actual-001" ## Request fields (multipart/form-data): - `file` (string, required) Attachment file ## Response 201 fields (application/json): - `id` (string, required) File identifier (DigitalOcean Spaces object key) Example: "files/2024/03/budget-report.pdf" - `name` (string, required) Original filename Example: "call-sheet-day-3.pdf" - `type` (string, required) MIME type Example: "application/pdf" - `size` (integer, required) File size in bytes Example: 1048576 ## Response 400 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 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"