Skip to content
MiJornada

Operations

Working days and clock events

Each day's figures and the raw record.

List working days

GET /v1/workdays

One row per person and day, with approved corrections already applied. These are the figures shown in MiJornada and in the inspection report, so this is the endpoint to use for payroll. Requires the time:read scope.

Parameters

from required string (date) First day, in the company's time zone.
to required string (date) Last day, included. At most 93 days after from, or a year for absences.
employeeId optional string
include optional timeline Pass timeline to add the day's movements.
limit optional integer
cursor optional string The nextCursor of the previous page.

Response 200

Each item in data:

id string
employeeId string
employeeName string
employeeCode string | null
dayKey string (date)
workedMinutes integer Minutes that count as worked, including paid breaks.
breakMinutes integer
paidBreakMinutes integer
breakOverAllowanceMinutes integer
firstInAt string (date-time) | null
lastOutAt string (date-time) | null
lastAction NONE | IN | BREAK_START | BREAK_END | OUT
state string
corrected boolean True when an approved correction applies to this day.
timeline object[] Only with include=timeline.

Possible errors: 401, 403, 422, 429.

Example

curl "https://api.mijornada.app/v1/workdays?from=2026-10-01&to=2026-10-31" \
  -H "Authorization: Bearer mj_live_…"

Example response

{
  "data": [
    {
      "id": "abc123",
      "employeeId": "abc123",
      "employeeName": "Ana García López",
      "employeeCode": "E014",
      "dayKey": "2026-10-15",
      "workedMinutes": 480,
      "breakMinutes": 30,
      "paidBreakMinutes": 0,
      "breakOverAllowanceMinutes": 0,
      "firstInAt": "2026-10-15T07:02:11Z",
      "lastOutAt": "2026-10-15T07:02:11Z",
      "lastAction": "OUT",
      "state": "FINISHED",
      "corrected": false,
      "timeline": [
        {
          "action": "IN",
          "at": "2026-10-15T07:02:11Z",
          "origin": "PUNCH"
        }
      ]
    }
  ],
  "nextCursor": null
}

List clock events

GET /v1/time-events

The raw record of clock events, oldest first. Approved corrections do not change these rows: use /workdays for the figures in force. A clock event appears here about 90 seconds after it is made, once it can no longer be undone. Requires the time:read scope.

Parameters

from required string (date) First day, in the company's time zone.
to required string (date) Last day, included. At most 93 days after from, or a year for absences.
employeeId optional string
source optional MOBILE | KIOSK | ADMIN | IMPORT | SYSTEM
limit optional integer
cursor optional string The nextCursor of the previous page.

Response 200

Each item in data:

id string
employeeId string
employeeName string
employeeCode string | null
action IN | BREAK_START | BREAK_END | OUT
source string
clockingMethod string | null
occurredAt string (date-time) When it happened. An offline clock event keeps its original time.
receivedAt string (date-time) | null When the server received it. Empty for events older than this field.
dayKey string (date)
worksiteId string | null
autoClosed boolean True when MiJornada closed a forgotten shift.

Possible errors: 401, 403, 422, 429.

Example

curl "https://api.mijornada.app/v1/time-events?from=2026-10-01&to=2026-10-31" \
  -H "Authorization: Bearer mj_live_…"

Example response

{
  "data": [
    {
      "id": "abc123",
      "employeeId": "abc123",
      "employeeName": "Ana García López",
      "employeeCode": "E014",
      "action": "IN",
      "source": "MOBILE",
      "clockingMethod": "MOBILE",
      "occurredAt": "2026-10-15T07:02:11Z",
      "receivedAt": "2026-10-15T07:02:11Z",
      "dayKey": "2026-10-15",
      "worksiteId": "centro-1",
      "autoClosed": false
    }
  ],
  "nextCursor": null
}

Last updated: .