Quickstart

Read a day of attendance in one request.

ProposedNot yet callable

This documents a design under review. Endpoints, payloads and field names may change before release.

Get a key

Create a key from the dashboard under Settings → API keys. For a first integration, issue one with attendance:read only — a key that cannot write cannot corrupt a roll while you are still experimenting.

export ONETAP_KEY=sk_live_4bc19...

Your first request

curl "https://api.onetaplabs.com/v1/attendance?from=2026-07-19&to=2026-07-19" \
  -H "Authorization: Bearer $ONETAP_KEY"

Every request is authenticated the same way: a bearer token in the Authorization header. There are no session cookies and no unauthenticated endpoints.

Response shape

Lists share one envelope, so the same pagination code works against every collection.

{
  "object": "list",
  "has_more": true,
  "next_cursor": "cur_9f21bd",
  "data": [
    {
      "id": "att_7d3e91",
      "status": "present",
      "recorded_at": "2026-07-19T09:14:58Z",
      "method": "device",
      "student": { "id": "stu_2a77c1", "external_id": "2024CS118" },
      "session": { "id": "ses_55ab20", "course_code": "CS101" }
    }
  ]
}

Follow next_cursor until has_more is false. Do not construct cursors yourself — they are opaque and their format will change.