For developers
Build on the diver identity layer.
Public REST API for shop websites, partner platforms, and bespoke builds. TypeScript SDK, OpenAPI spec, signed webhooks. Scoped keys, immediate revocation, per-tier rate limits.
What's available
A REST API shaped for dive operations
Activities
Bookings
Customers
Waivers
Cylinders + gear
Webhooks
Authentication
Scoped API keys, no OAuth dance
API key format
mdt_live_AbCdEf0123456789AbCdEf0123
mdt_test_XyZ0987654321XyZ0987654321 Test keys use the test Stripe environment and a sandbox dataset. Live keys hit production with full audit logging.
Sending the key
curl https://api.mydivetag.com/v1/bookings \
-H "Authorization: Bearer mdt_live_..." \
-H "Content-Type: application/json" Keys are argon2id-hashed at rest. Last-used IP recorded; new-IP-block alerts go to the business owner. Revocation effective within 30 seconds platform-wide.
Scopes
Each key is scoped to a subset of permissions
(read_activities, write_bookings,
read_customers, write_customers,
send_marketing, etc.) and bound to a single business. Cross-business
access is impossible at the database layer thanks to Postgres Row-Level Security.
Rate limits
Predictable, per-key, configurable per tier
| Tier | Default limit | Burst |
|---|---|---|
| Service | 60 req/min | 120 req/min for 60 s |
| Bookings | 100 req/min | 200 req/min for 60 s |
| Multi-shop | Configurable on request | Configurable on request |
Limits return 429 Too Many Requests with a Retry-After
header.
Ready to build?
Grab a test key in your shop dashboard, hit the sandbox, then ask for live access when you're ready.