Create Time Entry
Create a complete time entry by hand — e.g. when someone forgot to clock in. Manual entries are stamped with source manager.
Endpoint
POST /v1/staff/time-entries
Authentication
Requires an API key with the staff:write scope.
Request Body
| Field | Type | Required | Description |
|---|---|---|---|
staff_id | integer | Yes | The staff member |
clock_in_at | string (ISO 8601) | Yes | Actual start of work |
clock_out_at | string (ISO 8601) | No | Actual end of work; omit for a still-open entry |
break_minutes | integer | No | Break time to deduct (default 0) |
notes | string | No | Free-text note (max 255 chars) |
Response
Success (201 Created)
{
"data": {
"id": 14,
"staff_id": 5,
"clock_in_at": "2026-06-12T09:00:00+00:00",
"clock_out_at": "2026-06-12T17:00:00+00:00",
"break_minutes": 30,
"worked_minutes": 450,
"source": "manager",
"notes": "Forgot to clock in"
},
"meta": { "request_id": "req_abc123", "timestamp": "2026-06-13T10:00:00+00:00" }
}
Errors
| Status | Code | Description |
|---|---|---|
| 422 | validation_failed | Missing/invalid fields, or cross-supplier staff_id |
| 422 | entry_invalid | Clock out before clock in, break longer than the entry, or staff already clocked in (open entry) |
Example Request
curl -X POST "https://app.equipdash.com/api/v1/staff/time-entries" \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"staff_id": 5,
"clock_in_at": "2026-06-12T09:00:00Z",
"clock_out_at": "2026-06-12T17:00:00Z",
"break_minutes": 30,
"notes": "Forgot to clock in"
}'