Developer documentation

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=..."
}
First call in 5 minutes

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.

1

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.

2

Call today's status

GET/api/v1/employees/E-1001/today

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.

3

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.

Documentation

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.

Roadmap

What is planned for the API next, and how to tell us what your integration is missing.

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.