Enter once. Keep it in sync.
Connect the WMS and TMS to the dock without double entry.
Connect a warehouse’s WMS, TMS and carrier systems through the dock appointment and the trailer.
driver.arrived01door.assigned02shipment.loaded03driver.departed04Connect the WMS and TMS to the dock without double entry.
Follow gate and yard activity as it happens through webhooks.
Warehouse-controlled permissions for every connected system.
Explore what your connector can do. The reference is generated from the production API schema.
Facilities with address, coordinates, timezone, hours and inbound/outbound slot capacity.
Explore reference →Open dock slots from the same capacity engine as the warehouse screens: customer slot contracts, capacity blocks and the shared pool.
Explore reference →Book, look up, reschedule, amend and cancel. Every write re-checks capacity atomically. Full slots return 409 with nearest open times. Expand the full load with ?expand=load.
Explore reference →Attach and list BOL, POD and other documents via JSON base64 or multipart. PDF, JPEG, PNG, WebP and HEIC, up to 10 MB each. Check-in seal photos and signatures appear automatically.
Explore reference →Announce ASN or released-order freight. Match appointments by external_ref + direction, and carry your own WMS order or TMS trip ids on records and webhooks.
Explore reference →HMAC-SHA256 signed notifications, automatic delivery retries and a test-delivery endpoint. Keep every connected system up to date.
Explore reference →Read a carrier’s open LTL freight at a building and record that a pickup request was sent.
Explore reference →Check API health and discover the OpenAPI 3.1 schema that ships with every API deploy.
Explore reference →thisDock issues one key per connector. Use the same appointment record to connect booking and warehouse execution.
Examples retain the spec’s sample dates and abbreviated ids. Replace them with your building id, appointment id and booking date before use.
Base URL
https://api.thisdock.com/v1Authenticate with Authorization: Bearer tdk_live_…. Never put a key in browser code.
curl "https://api.thisdock.com/v1/availability?building_id=3f1c%E2%80%A6&date=2026-07-20&direction=outbound" \
-H "Authorization: Bearer tdk_live_YOUR_KEY"curl -X POST "https://api.thisdock.com/v1/appointments" \
-H "Authorization: Bearer tdk_live_YOUR_KEY" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: YOUR_UNIQUE_REQUEST_ID" \
--data '{
"building_id": "3f1c…",
"date": "2026-07-20",
"time": "14:00",
"direction": "outbound",
"external_ref": "PO-123456",
"external_ids": {
"wms_order_id": "S-4471",
"tms_trip_id": "1234"
},
"carrier": "Example Carrier",
"trailer_number": "T-4471",
"service_type": "drop",
"pallet_count": 24,
"weight_lbs": 42000,
"contact_email": "[email protected]"
}'curl "https://api.thisdock.com/v1/appointments/APPOINTMENT_ID?expand=load" \
-H "Authorization: Bearer tdk_live_YOUR_KEY"Slim notifications tell your connector what changed. Fetch GET /v1/appointments/{id}?expand=load for the full record.
driver.arriveddoor.assigneddriver.dockedshipment.loaded / shipment.unloadeddriver.departedAlso subscribe to appointment.created, appointment.updated, appointment.cancelled and trailer.requested. Use ping for tests.
Driver and yard events include appointment_id once matched to a truckload appointment, and always include your external_ref.
Deliveries retry after 1m, 5m, 30m, 2h and 12h.
X-ThisDock-Signature: sha256=<hex> is an HMAC-SHA256 of the raw body using the subscription secret. Verify before parsing or processing the event.
import { createHmac, timingSafeEqual } from "node:crypto";
// rawBody must be the original request bytes, before JSON parsing.
export function verifyThisDock(rawBody, signatureHeader, secret) {
if (!/^sha256=[a-f0-9]{64}$/i.test(signatureHeader ?? "")) {
return false;
}
const expected = createHmac("sha256", secret)
.update(rawBody)
.digest();
const received = Buffer.from(signatureHeader.slice(7), "hex");
return received.length === expected.length &&
timingSafeEqual(received, expected);
}
// After verification, deduplicate on X-ThisDock-Delivery.
// Keep the subscription secret on your server.Separate WMS, TMS and agent keys, each with its own scopes and optional building scope. Keys are stored only as SHA-256 hashes, revoked instantly, and rotated with an overlap period.
The key resolves the tenant server-side. Company ids in request bodies are ignored. Every call is audit-logged.
sensitive:read is off by default. Without it, driver/contact details, customs numbers and inspection records are omitted entirely from responses.
Send an Idempotency-Key with writes. Replays within 24 hours return the original result. A retry cannot double-book an appointment.
Per-key rate limits default to 60 requests per minute. Wall-clock times use the building’s local timezone and include an IANA timezone field.
REST and JSON at the Cloudflare edge, backed by Supabase Edge Functions. OpenAPI 3.1 describes the production interface.
appointments:readappointments:writeshipments:readshipments:writecheckins:readwebhooks:manageltl:pickupssensitive:read · off by defaultInbound and outbound. Live and drop. Floor-loaded freight, hazmat, FTZ and bonded customs fields, seal photos and detention-relevant timestamps.
Connect WMS, TMS and carrier booking agents. Expanded load records include pallets, cases, floor-loaded and hazmat details, door and WMS status, plus customs data when the key permits it.
Keys are issued per connector. Tell us what you want to connect.