1. Home
  2. Docs
  3. Documentation
  4. Personnel APIs – V1
  5. API: List Attendance Logs

API: List Attendance Logs

The purpose of this API is to retrieve employee attendance logs within a specified date range, with an optional employee filter. Results are ordered by log_date_time ascending.

Request

Property Value
API Name AttendanceLog
URL https://your_account.modulus.biz/api/hr/v1/AttendanceLog
Method GET
Source Third Party Server
Recipient modulus® Server
Accept application/json

Request Headers

Header Required Description
Authorization Yes Bearer token for authentication. Format: Bearer <token>
Accept Yes application/json

Query String Parameters

Parameter Required Type Description
employee_code No String Filter by employee code. If omitted, logs for all employees are returned.
date_from Yes Date Start date in YYYY-MM-DD format (inclusive).
date_to Yes Date End date in YYYY-MM-DD format (inclusive). May equal date_from.
page_number No Integer Page number. Default = 1.
page_size No Integer Number of records per page. Default = 50.

Responses

HTTP Status result title message object
200 OK true Success Attendance logs listed successfully. meta_data and data
200 OK true Success No attendance logs found matching your conditions. meta_data and empty data array
400 Bad Request false Invalid Request date_to is required.
date_from is required.
null
400 Bad Request false Invalid Request date_from must be earlier than or equal to date_to. null

Example 1 – All Employees

Request
curl --request GET 'https://your_account.modulus.biz/api/hr/v1/AttendanceLog?date_from=2026-09-01&date_to=2026-09-30&page_number=1&page_size=50' \
--header 'Accept: application/json' \
--header 'Authorization: Bearer <token>'
200 OK
{
  "result": true,
  "title": "Success",
  "message": "Attendance logs listed successfully.",
  "object": {
    "meta_data": {
      "page_count": 3,
      "page_number": 1,
      "page_size": 50,
      "record_count": 127
    },
    "data": [
      {
        "employee_code": "0001",
        "log_date_time": "2026-09-15 08:57",
        "collected_on": "2026-09-15 08:57:33",
        "source": "GPS",
        "status": "PROCESSED",
        "direction": "IN",
        "device": null,
        "location": {
          "id": 3,
          "name": "Cairo HQ"
        },
        "coordinate": {
          "longitude": 31.2357123,
          "latitude": 30.0444196
        },
        "notes": null
      },
      {
        "employee_code": "0002",
        "log_date_time": "2026-09-15 09:02",
        "collected_on": "2026-09-15 09:02:18",
        "source": "DEVICE",
        "status": "PROCESSED",
        "direction": "IN",
        "device": {
          "id": 8,
          "label": "Main Entrance"
        },
        "location": {
          "id": 3,
          "name": "Cairo HQ"
        },
        "coordinate": null,
        "notes": null
      }
    ]
  }
}

Example 2 – One Employee

Request
curl --request GET 'https://your_account.modulus.biz/api/hr/v1/AttendanceLog?employee_code=0001&date_from=2026-09-01&date_to=2026-09-30&page_number=1&page_size=50' \
--header 'Accept: application/json' \
--header 'Authorization: Bearer <token>'
200 OK
{
  "result": true,
  "title": "Success",
  "message": "Attendance logs listed successfully.",
  "object": {
    "meta_data": {
      "page_count": 1,
      "page_number": 1,
      "page_size": 50,
      "record_count": 1
    },
    "data": [
      {
        "employee_code": "0001",
        "log_date_time": "2026-09-15 08:57",
        "collected_on": "2026-09-15 08:57:33",
        "source": "GPS",
        "status": "PROCESSED",
        "direction": "IN",
        "device": null,
        "location": {
          "id": 3,
          "name": "Cairo HQ"
        },
        "coordinate": {
          "longitude": 31.2357123,
          "latitude": 30.0444196
        },
        "notes": null
      }
    ]
  }
}

Example 3 – No Matching Logs

Request
curl --request GET 'https://your_account.modulus.biz/api/hr/v1/AttendanceLog?employee_code=9999&date_from=2026-09-01&date_to=2026-09-30' \
--header 'Accept: application/json' \
--header 'Authorization: Bearer <token>'
200 OK
{
  "result": true,
  "title": "Success",
  "message": "No attendance logs found matching your conditions.",
  "object": {
    "meta_data": {
      "page_count": 0,
      "page_number": 1,
      "page_size": 50,
      "record_count": 0
    },
    "data": []
  }
}

Example 4 – Missing Date

Request
curl --request GET 'https://your_account.modulus.biz/api/hr/v1/AttendanceLog?date_from=2026-09-01' \
--header 'Accept: application/json' \
--header 'Authorization: Bearer <token>'
400 Bad Request
{
  "result": false,
  "title": "Invalid Request",
  "message": "date_to is required.",
  "object": null
}

Example 5 – Invalid Date Range

Request
curl --request GET 'https://your_account.modulus.biz/api/hr/v1/AttendanceLog?date_from=2026-09-30&date_to=2026-09-01' \
--header 'Accept: application/json' \
--header 'Authorization: Bearer <token>'
400 Bad Request
{
  "result": false,
  "title": "Invalid Request",
  "message": "date_from must be earlier than or equal to date_to.",
  "object": null
}

Response Fields

Field Type Nullable Description
employee_code String No Employee code; leading zeros are significant.
log_date_time DateTime No Effective log date/time, YYYY-MM-DD HH:mm.
collected_on DateTime No Collection/receipt date/time, YYYY-MM-DD HH:mm:ss.
source String No Attendance log source.
status String No Current processing status.
direction String No Punch direction.
device Object Yes Device reference {id, label}.
location Object Yes Location reference {id, name}.
coordinate Object Yes GPS coordinate {longitude, latitude}.
notes String Yes Log notes.

Allowed Values

Field Values
source DEVICE, IMPORT, MANUAL, GPS, APP
status PENDING, SKIPPED, PROCESSED, DISABLED, HOLD, SUSPECT
direction NA, IN, OUT

Integration Notes

  • Both date parameters are required and inclusive; single-day requests are valid.
  • Results are ordered by log_date_time ascending.
  • Date/time values use the configured modulus® account timezone.
  • device, location, and coordinate can be null.
  • Empty results return an empty data array with pagination metadata.