Skip to content
Track That Ride
Menu

For developers

Developer hub

Track That Ride gives logistics and delivery platforms a REST API for deliveries, drivers, zones and customers, signed webhooks for status changes, and Server-Sent Events streams of live driver positions. Authenticate with an API key, create a delivery, and your customer can follow it on a hosted tracking page or inside your own app.

What the API does

  • Deliveries: create, list, filter, assign, change status, message the customer, and read the GPS trail and timeline.
  • Drivers and zones: manage the people who deliver and the areas they cover.
  • Customers: search records built automatically from deliveries, and export them.
  • Webhooks: receive signed POSTs when deliveries are created, started, delivered or fail.
  • Real-time: stream driver positions, status changes and ETAs over Server-Sent Events.

The reference lists 45 endpoints, read from the API’s router when this site is built.

Quickstart in under five minutes

  1. Sign up and create an API key in the dashboard under API keys.
  2. Call GET https://trackthatride.com/api/v1/rides with Authorization: Bearer <key>.
  3. Create a delivery with POST /api/v1/rides; read public_tracking_token from the response.
  4. Send your customer https://trackthatride.com/track/<token>, or open its stream in your own app.

The API quickstart has every command.

Using the SDK

The JavaScript packages on npm wrap the same API: @trackthatride/core 2.0.1 (REST client), @trackthatride/realtime 1.1.2 (live stream), @trackthatride/react-map 1.1.2 and @trackthatride/react-native-map 1.1.0 (live maps). Create the delivery on your server:

// npm install @trackthatride/core
import { createClient } from '@trackthatride/core';

// baseUrl is optional and defaults to https://trackthatride.com
const client = createClient({ apiKey: process.env.TTR_API_KEY });

const { data: ride } = await client.createRide({
  customer_name: 'Ada Lovelace',
  phone_number: '+447700900123',
  pickup_address: '1 Broad St, London',
  pickup_contact_name: 'Front desk',
  pickup_phone: '+447700900456',
  estimated_pickup_time: new Date(Date.now() + 15 * 60_000).toISOString(),
  address: '5 Marina Rd, London',
});

// Give this to the page that follows the delivery (no API key needed there)
console.log(ride.public_tracking_token);

Then follow it in the browser, directly from the page:

// npm install @trackthatride/realtime
import { TrackingSSEClient } from '@trackthatride/realtime';

// In the browser the built-in EventSource is used and baseUrl defaults to https://trackthatride.com.
// In Node, pass one: new TrackingSSEClient({ eventSource: EventSource }) with EventSource from 'eventsource'.
const stream = new TrackingSSEClient();

stream.on('ride-update', (e) => showStatus(e.status));
stream.on('location-update', (e) => moveDriver(e.latitude, e.longitude));
stream.on('eta-update', (e) => showArrival(e.estimatedArrival));
stream.on('delivered', () => stream.disconnect());
stream.on('error', (e) => console.error(e.code, e.message));

stream.connectToPublicTracking(publicTrackingToken);

The JavaScript and React quickstarts show the same with and without the packages.

Authentication and limits

Keys are Bearer tokens scoped to one company, with read, write and delete permissions per resource and their own rate limit. Browser streams use short-lived tokens so keys never appear in URLs. Details in authentication and errors and rate limits.

Building blocks

  • REST API

    Create and manage deliveries, drivers, zones, webhooks and customer records over HTTPS with an API key.

  • Scoped API keys

    Keys are stored hashed, carry per-resource permissions and their own rate limit, and can be rotated or revoked.

  • Signed webhooks

    Get an HTTPS POST when a delivery is created, assigned, started, delivered or fails, signed with HMAC-SHA256 so you can verify it came from us.

  • Real-time stream

    Server-Sent Events stream live driver positions, status changes and ETAs. A delivery’s public stream can be opened straight from a web page on any domain; the company-wide stream is opened from your server.

  • Customer tracking links

    Every delivery gets a private, signed link. Your customer opens it in any browser to see the driver on the map, the ETA and each status change. No app to install.

  • OpenAPI specification

    A machine-readable OpenAPI 3 description of the API.

  • JavaScript SDKs

    Four packages on npm: @trackthatride/core 2.0.1 (API client), @trackthatride/realtime 1.1.2 (live stream), @trackthatride/react-map 1.1.2 and @trackthatride/react-native-map 1.1.0 (live maps).

Quickstarts and guides

API reference

Developer questions

Is there a sandbox or test environment?

Not a public one. Use a real account on the Free plan: there is no monthly fee, and you only pay for deliveries that are actually started, so creating and cancelling test deliveries costs nothing.

Which languages are supported?

Any language that can make HTTPS requests and parse JSON. Our examples use Node.js and browser JavaScript; the API itself has no language-specific parts.

Can I show the live map inside my own app?

Yes. Each delivery has a public Server-Sent Events stream authorised by its tracking token, and the public tracking endpoints allow cross-origin reads, so your page can open the stream directly and draw it on any map library. You can still proxy it through your own server if you prefer.

Do the npm SDKs work?

Yes. @trackthatride/core 2.0.1, @trackthatride/realtime 1.1.2, @trackthatride/react-map 1.1.2 and @trackthatride/react-native-map 1.1.0 match the current API. The 1.0.0 releases from September 2025 are deprecated: upgrade all four together.

How is the API priced?

API calls are not billed separately. You pay per delivery started, the same as deliveries created in the dashboard. Plans set how many API keys and webhook endpoints you can have.

Get an API key

Sign up free with no card, create a key under API keys, and make your first request in minutes.

Sign-up happens on trackthatride.com.