For WorldWide Transfers Click here
REST API

Fleet API

Integrate your fleet operations with a Bearer token — manage bookings, assign drivers, and sync status updates programmatically. No email or password login required.

Base URL https://walatour.com/api/driver
Bearer token Bearer token

Getting started

Authenticate every request with the Fleet API Bearer token we issue for your fleet. Do not use email and password. Include these headers on every call:

Headers
Accept: application/json
Content-Type: application/json
Authorization: Bearer 3757|Zj1EVDhKnrLAx0V1rsSmlzU2loolWKpS35A2qtRtc9e3d716

Authentication — Bearer token

Your 7Transfers contact issues a long-lived Bearer token for your fleet. Store it securely on your server and send it on every request as Authorization: Bearer {token}. There is no login step and no password for API access. If a token is lost or rotated, ask us for a new one.

Fleet API integrations must not call /api/driver/login and must not send email or password. Use only the Bearer token.

Example request

curl
curl -H 'Accept: application/json' \
     -H 'Authorization: Bearer 3757|Zj1EVDhKnrLAx0V1rsSmlzU2loolWKpS35A2qtRtc9e3d716' \
     'https://walatour.com/api/driver/bookings?status=assigned'

Sandbox — try the API

Use this public sandbox Bearer token to explore the Fleet API. It always has 20 demo bookings in status assigned (ref numbers FAPISB-01 and up). Accepting or cancelling them is fine — they are reset automatically every hour.

Sandbox data belongs to the Fleet API Sandbox fleet only. Production partners receive their own private Bearer token; bookings for a partner are always assigned to that partner fleet.

Sandbox Bearer token

Bearer
3757|Zj1EVDhKnrLAx0V1rsSmlzU2loolWKpS35A2qtRtc9e3d716

Example request

curl
curl -H 'Accept: application/json' \
     -H 'Authorization: Bearer 3757|Zj1EVDhKnrLAx0V1rsSmlzU2loolWKpS35A2qtRtc9e3d716' \
     'https://walatour.com/api/driver/bookings?status=assigned'
POST /api/driver/login

App login — not used by Fleet API integrations

This endpoint is only for the native driver/fleet mobile app (email, password and 2FA). Server integrations must ignore it and use the Bearer token above.

Fleet API integrations must not call /api/driver/login and must not send email or password. Use only the Bearer token.
GET /api/driver/bookings

List bookings assigned to the fleet

Query parameters optional

statusall or assigned, accepted, onroute, arrived, onboard, completed, canceled, noshow, rejected, market
from_dateYYYY-MM-DD
to_dateYYYY-MM-DD
per_page1–100 (default 20)

Example

GET
https://walatour.com/api/driver/bookings?status=assigned&from_date=2026-04-11&per_page=50

Response 200

JSON
{
  "success": true,
  "data": [
    {
      "id": 9876,
      "ref_number": "T2S-12345",
      "status": "assigned",
      "status_label": "Assigned",
      "date": "2026-04-15 10:30:00",
      "from_address": "Malaga Airport (AGP)",
      "to_address": "Hotel Marbella Club",
      "passengers": 3,
      "vehicle_list": "Business Van",
      "luggage": 4,
      "hand_luggage": 3,
      "assigned_driver": null,
      "commission": 0,
      "flight_number": "FR1234",
      "meet_and_greet": true,
      "coordinate_start_lat": 36.6749,
      "coordinate_start_lon": -4.4991,
      "coordinate_end_lat": 36.5098,
      "coordinate_end_lon": -4.8826
    }
  ],
  "meta": {
    "current_page": 1,
    "last_page": 3,
    "per_page": 20,
    "total": 47
  }
}
Cancellations are not pushed to your system. Include status=canceled (or use status=all) in your polling to detect bookings cancelled by the office, and remove them on your side.
GET /api/driver/bookings/{id}

Booking details

Returns the full booking: passenger, contact, addresses, coordinates, status history, action buttons, extras (child seats, wheelchair, waiting time, etc.) and attached files.

Passenger phone numbers (contact_mobile, lead_passenger_mobile) are only returned by this endpoint — never in the bookings list — and only while the booking is in an active state (accepted, onroute, arrived, onboard). While the booking is still assigned, or after it is completed or cancelled, the phone fields are returned as null. Accept the booking first, then fetch the details to get the phone number.
PATCH /api/driver/bookings/{id}/status

Update booking status

Request

JSON body
{
  "status": "accepted",
  "status_notes": "Optional note"
}
Valid status values: accepted, rejected, onroute, arrived, onboard, noshow, completed, canceled
  • status_notes is required when status is rejected.
  • Statuses onroute, arrived, onboard, noshow, completed require a recent driver GPS location (within 5 minutes). Send lat and lng in this same request, or share the location from the driver app. For office-side integration without GPS, use accepted, rejected, or canceled.
Once a booking has been cancelled by the office it can no longer be re-activated: any attempt to change its status (e.g. to accepted) returns a 422 error. Always re-check the current status before accepting bookings queued from an earlier poll.

Driver location optional

Send the driver's current GPS position with the status, in the same request. We store it on the driver assigned to this booking, and the passenger sees it in live tracking. Send it with every status that requires GPS. Requests without lat and lng keep working as before.
JSON body
{
  "status": "arrived",
  "lat": -34.8150,
  "lng": -58.5348,
  "accuracy": 12,
  "heading": 270,
  "speed": 0
}
  • lat, lng — Latitude and longitude in decimal degrees. Send both or neither.
  • accuracy — GPS accuracy in meters (optional)
  • heading — Direction of travel in degrees, 0 to 360 (optional)
  • speed — Speed in meters per second (optional)

Response 200

JSON
{
  "success": true,
  "data": { "id": 9876, "status": "accepted" }
}
GET /api/driver/fleet/drivers

List fleet's own drivers

Response

JSON
{
  "success": true,
  "data": [
    { "id": 55, "name": "Juan Perez", "email": "juan@example.com" }
  ]
}
PATCH /api/driver/fleet/bookings/{id}/assign-driver

Assign a driver to a booking

Request

Send driver_id, or a driver object when your drivers live in your own system. commission and fleet_commission are optional.

JSON body
{
  "driver_id": 55,
  "commission": 10.00,
  "fleet_commission": 5.00,
  "driver_name": "Juan Perez",
  "driver_phone": "+905551112233",
  "vehicle_make": "Mercedes-Benz",
  "vehicle_model": "Vito",
  "vehicle_license_plate": "34 ABC 123"
}

Driver and vehicle optional

These fields are optional. Send them when you assign a driver and we store them on that booking, so we can share the driver and vehicle with the passenger later. Leave them out and the assignment still succeeds. Existing integrations do not need to change.
  • driver_name — Driver full name
  • driver_phone — Driver phone number
  • vehicle_make — Vehicle make
  • vehicle_model — Vehicle model
  • vehicle_license_plate — Vehicle license plate

Drivers from your own system

If you manage your drivers in your own system, send a driver object instead of driver_id. It takes the same data as creating a driver, without email or password. We match it by phone number with the drivers you sent before, or create a new one. These drivers have no login and get no emails: booking emails go to your fleet. The response returns our driver_id. If you send both, driver_id is used.
JSON body
{
  "commission": 10.00,
  "fleet_commission": 5.00,
  "driver": {
    "first_name": "Juan",
    "last_name": "Perez",
    "mobile_no": "+5491155551234",
    "vehicle_make": "Mercedes-Benz",
    "vehicle_model": "Vito",
    "vehicle_year": 2022,
    "vehicle_color": "black",
    "vehicle_license_plate": "AB 123 CD",
    "country": "AR",
    "city": "Buenos Aires"
  }
}

Required fields:

  • driver.first_name — Driver first name
  • driver.last_name — Driver last name
  • driver.mobile_no — Driver mobile number, with country code. We use it to recognize the same driver on later bookings.
  • driver.vehicle_make — Vehicle make
  • driver.vehicle_model — Vehicle model
  • driver.vehicle_year — Vehicle year (4 digits)
  • driver.vehicle_color — Vehicle color, one of: white, black, silver, gray, blue, red, green, beige, brown, gold, orange, yellow, navy, burgundy
  • driver.vehicle_license_plate — Vehicle license plate

Optional fields:

  • driver.telephone_no, driver.address, driver.city, driver.postcode, driver.country

Response

JSON
{
  "success": true,
  "message": "Driver assigned.",
  "data": {
    "id": 9876,
    "driver_id": 55,
    "driver_name": "Juan Perez",
    "driver_phone": "+905551112233",
    "vehicle_make": "Mercedes-Benz",
    "vehicle_model": "Vito",
    "vehicle_license_plate": "34 ABC 123",
    "commission": 10.00,
    "fleet_commission": 5.00
  }
}
POST /api/driver/logout

Logout

Revokes the current Bearer token. Service tokens issued by 7Transfers should not be logged out in normal operation; ask us to revoke a token if you need to rotate credentials.

Error format

All errors return JSON with a human-readable message.

JSON
{ "success": false, "message": "Human-readable message" }
401 Missing, invalid or revoked Bearer token
403 Not a fleet user / booking not owned by fleet
404 Booking not found
422 Validation error or invalid state transition