Developer Documentation

    REST API for aggregators & partners

    Receive bookings, push status updates, assign drivers, stream live GPS, return quotes and handle cancellations — all through a clean REST API with HMAC-signed webhooks. 24/7, 99.95% uptime.

    Everything aggregators ask — answered

    Direct answers to the six most common questions from Booking.com, Trip.com, Viator and other partner integration teams.

    Can you receive bookings via API?

    Yes. POST /v1/bookings creates a booking from any aggregator, OTA or partner platform with idempotency-key support.

    Can you update booking status?

    Yes. GET /v1/booking-status returns live state, and webhooks push updates (assigned, on-the-way, arrived, on-board, completed, cancelled).

    Can you provide driver details?

    Yes. POST /v1/driver-assigned and GET /v1/bookings/:id return driver name, phone, photo, vehicle make/model, plate and licence number.

    Can you provide live GPS tracking?

    Yes. Real-time lat/lng via webhook stream or a signed passenger tracking URL (Driver Event Link) — no app required.

    Can you return pricing?

    Yes. GET /v1/quotes returns fare breakdown (base, distance, time, surcharges, taxes, commission) in any currency.

    Can you handle cancellations?

    Yes. DELETE /v1/bookings/:id with a reason code. Cancellation policy and fees returned in the response.

    Base URL

    https://api.taxi-webdesign.com/v1

    Authentication

    Authorization: Bearer <access_token>

    OAuth 2.0 client-credentials. Scoped keys per partner. HMAC-signed webhooks.

    API Endpoints

    Core REST endpoints and webhooks for aggregator integrations.

    POST/v1/bookingsCreate a booking

    Receive bookings from aggregators, OTAs or partner platforms.

    Request
    {
      "external_id": "BKD-998123",
      "pickup": {
        "address": "JFK Terminal 4, New York, NY",
        "lat": 40.6413,
        "lng": -73.7781,
        "datetime": "2026-07-12T18:30:00Z",
        "flight_number": "BA178"
      },
      "dropoff": {
        "address": "The Plaza Hotel, 768 5th Ave, New York, NY",
        "lat": 40.7644,
        "lng": -73.9744
      },
      "passenger": {
        "name": "Jane Smith",
        "phone": "+14155551234",
        "email": "jane@example.com",
        "pax": 2,
        "luggage": 3
      },
      "vehicle_class": "business",
      "currency": "USD",
      "commission_pct": 18
    }
    Response
    {
      "id": "bkg_01HZ8Y3Q1V",
      "external_id": "BKD-998123",
      "status": "confirmed",
      "fare": { "total": 142.50, "currency": "USD" },
      "tracking_url": "https://track.taxi-webdesign.com/t/abc123"
    }
    GET/v1/booking-statusGet live booking status

    Returns current status, ETA, driver and vehicle position.

    Request
    GET /v1/booking-status?id=bkg_01HZ8Y3Q1V
    Authorization: Bearer <token>
    Response
    {
      "id": "bkg_01HZ8Y3Q1V",
      "status": "on_the_way",
      "eta_minutes": 7,
      "driver": {
        "name": "Marco R.",
        "phone": "+14155559911",
        "rating": 4.96
      },
      "vehicle": {
        "make": "Mercedes",
        "model": "E-Class",
        "plate": "ABC-1234",
        "lat": 40.7128,
        "lng": -74.0060
      }
    }
    POST/v1/driver-assignedDriver assignment webhook

    Pushed to your endpoint when a driver is dispatched to the booking.

    Request
    POST <your_webhook_url>
    X-Signature: sha256=<hmac>
    
    {
      "event": "driver.assigned",
      "booking_id": "bkg_01HZ8Y3Q1V",
      "external_id": "BKD-998123",
      "driver": {
        "name": "Marco R.",
        "phone": "+14155559911",
        "photo_url": "https://cdn.../m.jpg",
        "licence_no": "NY-D-998812"
      },
      "vehicle": {
        "make": "Mercedes",
        "model": "E-Class",
        "year": 2024,
        "color": "Black",
        "plate": "ABC-1234"
      },
      "assigned_at": "2026-07-12T17:55:21Z"
    }
    Response
    HTTP/1.1 200 OK
    POST/v1/trip-completedTrip completed webhook

    Pushed when the trip finishes — includes final fare, distance, duration and receipt URL.

    Request
    POST <your_webhook_url>
    X-Signature: sha256=<hmac>
    
    {
      "event": "trip.completed",
      "booking_id": "bkg_01HZ8Y3Q1V",
      "external_id": "BKD-998123",
      "started_at": "2026-07-12T18:32:10Z",
      "completed_at": "2026-07-12T19:14:02Z",
      "distance_km": 28.4,
      "duration_min": 42,
      "fare": {
        "base": 25.00,
        "distance": 88.50,
        "time": 14.00,
        "surcharges": 5.00,
        "taxes": 10.00,
        "total": 142.50,
        "currency": "USD",
        "commission": 25.65
      },
      "receipt_url": "https://receipts.taxi-webdesign.com/r/abc123.pdf"
    }
    Response
    HTTP/1.1 200 OK
    GET/v1/quotesGet a quote

    Real-time fare quote for a trip — used before creating a booking.

    Request
    GET /v1/quotes?pickup_lat=40.6413&pickup_lng=-73.7781
      &dropoff_lat=40.7644&dropoff_lng=-73.9744
      &datetime=2026-07-12T18:30:00Z
      &vehicle_class=business&pax=2&currency=USD
    Authorization: Bearer <token>
    Response
    {
      "quote_id": "qt_01HZ8X9KLM",
      "expires_at": "2026-07-12T18:25:00Z",
      "distance_km": 28.4,
      "duration_min": 42,
      "fare": {
        "base": 25.00,
        "distance": 88.50,
        "time": 14.00,
        "surcharges": 5.00,
        "taxes": 10.00,
        "total": 142.50,
        "currency": "USD"
      },
      "vehicle_class": "business",
      "cancellation_policy": {
        "free_until": "2026-07-12T17:30:00Z",
        "fee_after": 50.00
      }
    }

    Webhook Events

    booking.created

    Booking accepted into dispatch.

    driver.assigned

    Driver and vehicle allocated.

    driver.on_the_way

    Driver moving to pickup with ETA.

    driver.arrived

    Driver at pickup location.

    trip.started

    Passenger on-board, trip started.

    trip.completed

    Trip finished with fare + receipt.

    trip.cancelled

    Cancellation with reason + fee.

    gps.update

    Live lat/lng stream during trip.

    All webhooks HMAC-SHA256 signed. Retries with exponential backoff up to 24h.

    99.95% Uptime

    Redundant data centers, multi-region failover.

    OAuth 2.0 + HMAC

    Scoped keys, signed webhooks, IP allow-listing.

    24/7 Support

    Live human partner-integration engineers on-call.

    FAQ

    OAuth 2.0 client-credentials flow with scoped API keys, plus HMAC-SHA256 signed webhooks (X-Signature header) and optional IP allow-listing.

    REST + JSON over HTTPS, OpenAPI 3.1 spec available on request. ISO-8601 timestamps, IATA airport codes, ISO-4217 currency codes.

    99.95% uptime, redundant data centers, 24/7 on-call engineering and live human support for partner integration teams.

    Failed webhooks are retried with exponential backoff for up to 24 hours. All payloads are HMAC-signed and idempotent via event ID.

    Yes. Every account ships with sandbox and live API keys. Sandbox bookings flow through a simulated dispatch with mocked driver assignment and completion events.

    1,000 requests/minute per API key by default. Higher limits available for enterprise aggregators on request.

    Ready to integrate?

    Request sandbox keys, the OpenAPI 3.1 spec and a partner engineer to walk you through a live booking flow.

    Use the buttons in the top navigation to request a quote or book a live demo.

    Quick Answer

    What is Taxi Web Design?

    Taxi Web Design is a white-label taxi, limo, chauffeur and private hire dispatch platform used by 250+ operators across the UK, US, EU, Canada and the UAE. One flat Enterprise plan from $8,500 gives you a branded passenger app, driver app, dispatcher console, online booking website, corporate account billing, DVSA-compliant PHV audit trails, GNet-style farm-in/farm-out and source code ownership — with no per-trip commission and no per-driver seat fees. Setup is measured in days, not months. Explore the site for pricing, migration guides and vertical-specific solutions, or book a demo to see the platform running on your fleet.

    This website uses cookies

    This website uses cookies to ensure you get the best experience on our website. Read Our Cookies Policy