API Docs
Dashboard

Quickstart

Go from zero to your first booked trip in a few minutes.

1. Create an API key

Sign in to your dashboard and open Settings → Integration. Give the key a label (for example, Dispatch server) and create it. Copy the token — you'll send it with every request.

Keep it secret. Treat an API key like a password. It grants full access to your business's data. If a key leaks, delete it and create a new one.

2. Make an authenticated request

Every request sends the key in the Authorization header. Ping the API to confirm the key works and see the business it resolves to:

Request

curl https://app.destination.dev/api/v1/ping \
  -H "Authorization: Bearer YOUR_API_KEY"

3. Check your fleet and drivers

Before you book a trip, list the cars and drivers you can assign to it:

Request

curl https://app.destination.dev/api/v1/cars \
  -H "Authorization: Bearer YOUR_API_KEY"

curl https://app.destination.dev/api/v1/drivers \
  -H "Authorization: Bearer YOUR_API_KEY"

4. Create a trip

Book a job with a pickup, drop-off, date/time and passenger count. You can assign a car and driver up front, or leave them unset and dispatch later. The response contains the created trip, including its reference and status.

curl -X POST https://app.destination.dev/api/v1/trips \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "customer_name": "Ada Lovelace",
    "customer_email": "[email protected]",
    "customer_phone": "+353871234567",
    "pickup_at": "2026-08-02 09:15:00",
    "pickup_address": "Dublin Airport T2, Dublin",
    "dropoff_address": "The Shelbourne, Dublin 2",
    "passengers": 2,
    "car_id": 12,
    "driver_id": 7
  }'
const res = await fetch(
  "https://app.destination.dev/api/v1/trips",
  {
    method: "POST",
    headers: {
      "Authorization": "Bearer YOUR_API_KEY",
      "Content-Type": "application/json",
    },
    body: JSON.stringify({
      customer_name: "Ada Lovelace",
      customer_email: "[email protected]",
      customer_phone: "+353871234567",
      pickup_at: "2026-08-02 09:15:00",
      pickup_address: "Dublin Airport T2, Dublin",
      dropoff_address: "The Shelbourne, Dublin 2",
      passengers: 2,
      car_id: 12,
      driver_id: 7,
    }),
  },
);
const trip = await res.json();

5. Dispatch and complete the trip

Assign or reassign a driver, then move the trip through its lifecycle:

Request

# Confirm and assign a driver
curl -X PATCH https://app.destination.dev/api/v1/trips/4821 \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{ "status": "confirmed", "driver_id": 7 }'

# Mark completed once the passenger is dropped off
curl -X PATCH https://app.destination.dev/api/v1/trips/4821 \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{ "status": "completed" }'

Conventions worth knowing

  • Authentication — API keys and user tokens, one key per integration.
  • Errors — a single error envelope and a small set of error types.
  • Paginationpage and per_page on list endpoints.
  • Rate limits — default 120 requests/minute.

When you're ready, browse the full API reference.