Start with a request
that actually runs.
The Toolbox Minute API answers one question over plain REST: did this worker finish today's minute? These docs ship with a public sandbox key, so the sample on the right works as-is. No account, no ticket, no waiting on a key.
Read the quickstart Explore the sandbox# Runs as-is: this sandbox key is public by design curl https://toolboxminute.com/api/v1/employees/E-1001/today \ -H "X-Api-Key: tbm_test_wWlSr6q-BPXUN67BPbzyVhR703QGmSlk34EEWGqRBtA" # 200 OK { "externalId": "E-1001", "lessonDate": "2026-07-15", "status": "not_started", "lesson": { "lessonId": "5b0c9c6e-2d7a-4f3e-9b1a-6c8d4e2f7a90", "title": "Pedestrian Awareness", "videoDurationSeconds": 90 }, "subTopic": "Forklift Safety", "topic": "Powered Equipment", "launchUrl": "https://toolboxminute.com/viewer/start?token=..." }
Three steps, no signup
The sandbox is a real tenant with real data behind the same API your live key will use. Everything below is safe to try right now.
Grab the sandbox key
Copy the tbm_test_ key from the sample above. It only ever resolves to the
sandbox tenant, Acme Logistics, which is why it can live in the docs.
Call today's status
E-1001 is one of eight seeded employees (E-1001 to E-1008). Send the key as
X-Api-Key or Authorization: Bearer, whichever your stack prefers.
Act on the answer
status is always one of completed, in_progress,
not_started, or no_lesson_scheduled. Incomplete responses include
a single-use launchUrl you can redirect the worker to.
Find your way around
Quickstart
From the sandbox key to a live integration: sync your roster, check status at clock-in, and hand workers into the lesson.
Authentication
Key format, test and live prefixes, the two accepted headers, and how keys are stored, rotated, and revoked.
Sandbox
Acme Logistics: eight employees, a scheduled week of forklift lessons, and a public key. Resets nightly at 04:00 UTC.
API reference
Every endpoint with real request and response shapes: employee status, directory management, reports, and curriculum.
Webhooks
Signed lesson.completed and badge.expiring events pushed to your endpoint with retries, so you do not have to poll.
Base URL
All requests go to:
https://toolboxminute.com/api
Versioning
Every endpoint lives under /v1. Additive changes land in place; breaking changes would get a new version prefix.
Rate limits
Live keys get 300 requests per minute per key; the sandbox key gets 60 per minute per IP. A 429 includes Retry-After.
Errors
Errors are RFC 7807 problem JSON with a stable machine-readable code. See the errors guide.