REST API & webhooks, v1.3.0

Your workforce data, one request away

Workers, clocks, approved timesheets, payroll by pay week, bookings and who is on site now, plus signed webhooks the moment anything changes.

Talk to us Read the docs
# Who is on site right now? (your TempClock address, your key)
curl -s "https://tempclock.com/api/v1/on-site-now.php?location_id=37" \
  -H "Authorization: Bearer tc_live_..."

{
  "data": {
    "as_of": "2026-10-02T06:33:35Z",
    "totals": {
      "clocked_in": 1,
      "on_site": 1,
      "off_site": 0,
      "geofence_unknown": 1,
      "low_gps_confidence": 0
    },
    "locations": [
      {
        "location_id": 37,
        "location_name": "London HQ",
        "clocked_in": 1,
        "on_site": 1,
        "off_site": 0,
        "geofence_unknown": 1,
        "workers": [
          {
            "worker_id": 409,
            "name": "Jordan Example",
            "employee_id": "DOCS-77E88",
            "entry_id": 40785,
            "clock_in": "2026-10-02 07:19:35",
            "clock_in_utc": "2026-10-02T06:19:35Z",
            "minutes_on_shift": 14,
            "within_geofence": null,
            "distance_meters": null,
            "gps_accuracy": null,
            "low_gps_confidence": false
          }
        ]
      }
    ],
    "unassigned": []
  }
}

GET /api/v1/on-site-now.php 200 OK a real reply from a test copy (fake demo data)

REST API

31 operations on 21 resources, JSON over HTTPS under /api/v1, described in OpenAPI 3.0.3.

Self-serve, scoped keys

Your admins create, rotate and revoke keys, each with only the scopes it needs, from 19. Pay data needs its own scope.

Signed webhooks

27 events, from approvals to locked pay weeks, signed with HMAC-SHA256 and retried four times over about two and a half hours.

Safe to retry

Idempotency keys on every POST and PUT, 60 requests a minute per key by default, and the count left on every reply.

Getting started

Connected in three steps

Switch API access on

Ask your TempClock administrator to switch API access on for your account. It is done once.

Create a key

In Setup > API keys, name the key after the system that will use it and give it only the access it needs.

Make a request

Base URL https://<your TempClock address>/api/v1. Test the key with GET /me.php.