# Batch create actuals Create multiple actual entries in a single request Endpoint: POST /projects/{projectId}/actuals/batch Version: 1.0.1 Security: ApiKeyAuth ## Path parameters: - `projectId` (string, required) Project identifier (alias or ID) Example: "nike-spring-2024" ## Request fields (application/json): - `replace` (boolean) Replace existing project actuals before inserting new items - `actuals` (array, required) - `actuals.type` (string) Type of actual transaction indicating payment method or source Enum: "SaturationACH", "SaturationPCard", "SaturationWire", "ACH", "Cash", "Check", "CreditCard", "Wire", "ETransfer", "Invoice", "Projection", "TimeCard" - `actuals.description` (string, required) Human-readable name for the actual entry Example: "Camera rental invoice payment" - `actuals.contactId` (string) Associated contact ID Example: "contact-studio-001" - `actuals.date` (string) Actual date (ISO 8601) Example: "2024-03-25T11:00:00Z" - `actuals.amount` (number) Actual amount Example: 7500 - `actuals.accountId` (string) Account ID or alias to assign the actual to Example: "/production/camera" - `actuals.status` (string) Workflow status to set on the new actual entry Enum: "Unpaid", "Pending", "Paid", "Refund", "NeedsReview" - `actuals.notes` (string) Additional notes Example: "Week 1 camera rental" - `actuals.number` (string) External reference number or user-supplied actual number Example: "ACT-2024-0315" - `actuals.tags` (array) Associated tags Example: ["equipment","week-1"] - `actuals.payId` (string) Payment identifier Example: "pay-abc-456" - `actuals.suggestedTotal` (number) Suggested total amount for validation purposes Example: 7500 - `actuals.split` (boolean) Whether to create the actual in split mode with sub-actuals - `actuals.subActuals` (array) Sub-actual line items to create with the parent actual - `actuals.subActuals.number` (string) Line reference number Example: "SA-001" - `actuals.subActuals.description` (string) Sub-actual description Example: "Weekly camera package rental" - `actuals.subActuals.amount` (number) Amount for the line item Example: 3500 - `actuals.subActuals.accountId` (string) Account ID or alias for this line item Example: "/production/camera" - `actuals.subActuals.notes` (string) Additional notes for the line item Example: "Includes insurance add-on" - `actuals.subActuals.quantity` (number) Quantity used for the line item Example: 5 - `actuals.subActuals.unit` (string) Supported unit of measure for quantity-based line items Enum: "Allow", "Day", "HalfDay", "Each", "Episodes", "Fare", "Flat", "Foot", "Hour", "Minute", "Month", "Night", "Percent", "Person", "SQFT", "Unit", "Week" - `actuals.subActuals.rate` (number) Rate applied to the quantity Example: 700 - `actuals.after` (string) Position the new actual after the specified actual ID Example: "actual-002" - `actuals.before` (string) Position the new actual before the specified actual ID Example: "actual-005" ## Response 200 fields (application/json): - `summary` (object, required) Aggregate statistics captured during batch processing - `summary.inserted` (integer, required) Number of items inserted without field drops Example: 8 - `summary.deleted` (integer, required) Number of existing actuals deleted when replace=true Example: 10 - `summary.errors` (integer, required) Number of items that failed and were not written Example: 1 - `summary.processed` (integer, required) Number of items processed (successful, partial, or failed) Example: 11 - `summary.received` (integer, required) Number of items received in the request payload Example: 11 ## 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 413 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"