Documentation Index
Fetch the complete documentation index at: https://docs.waysdrop.com/llms.txt
Use this file to discover all available pages before exploring further.
API module
Base URLs:- Live:
https://api.waysdrop.com - Staging:
https://staging-api.waysdrop.com
/api
This module is intended for third‑party integrations. All endpoints require the api-key header.
Response shapes
Success
No content
Some endpoints return204 No Content with an empty body.
Errors
Errors are returned using the global error envelope described in Errors.Endpoints
GET /api/regions
Fetch available regions. Querysearch(optional, string)
name: region namevalue: region code used internally for routing/pricingzone: broad grouping (e.g., North/South)
GET /api/states
Fetch available states. Querysearch(optional, string)
GET /api/cities
Fetch available cities. Querysearch(optional, string)
googlePlaceIdis the stable identifier used by routing and validation.locis the coordinate used for distance + ETA calculations.- If
searchis not provided, the API returns a limited slice (for fast autocomplete).
POST /api/route
Get route data between two addresses. Bodydistance.distanceKmanddistance.etaSecondsare computed using both line and road distance and then taking the max for safety.routeTypeis derived from the resolved system locations (region/state/city).
GET /api/fleet-types
Fetch available fleet types. 200 ResponsePOST /api/pricing
Get pricing for a delivery request. Bodyslot is required when urgencyType is SCHEDULED.
200 Response
distanceis computed from coordinates after geofencing.costsvalues are decimals and may be returned as strings.- If you pass a
fleetTypeIdthat is not compatible with the weight, the API will price using the first compatible recommendation.
POST /api/request
Create a delivery request (P2P). BodyoriginContactEmail,originContactPhone,originContactNameare optional. If omitted, they default to your user’s info. Destination contact fields are required.link3rdPartyByContactInfois optional (default:false). If set totrue, Waysdrop uses the destination contact info to link an existing user, so they can track the delivery in the mobile app.deliveryDateanddeliverySlotare only required ifurgencyTypeisSCHEDULED.typecan either bePICKUPorDROP_OFF.requireProofCodeis optional (default:false). If set totrue, codes will be sent to the origin and destination contact info. The user will need to provide proof of collection and delivery codes to the courier upon each interaction.courierSelectionis required and can either beANYONEorSPECIFIC. If set toSPECIFIC, you must provide acourierIdin the request body. This means you have your own courier in our system and want to assign them to the delivery.
422Insufficient balance400Invalid packages selection400Origin and destination cannot be the same404Fleet type not found
POST /api/request/:deliveryId/cancel
Cancel an eligible delivery request. Path paramsdeliveryId(uuid)
404Delivery request not found400Delivery request can not be canceled due to its current status400You can only cancel a delivery request twice every 5 hours
POST /api/package
Create or edit a package. Body Use this endpoint to create a new package or update an existing one.- To create, omit
packageIdand provide all required fields. - To update, include
packageIdand provide only the fields you want to change.
packageId(optional, uuid): include to update an existing packagepackageType(string): required when creatingimage(optional, https URL): must be hosted oncdn.waysdrop.comname(string): required when creatingdescription(optional, string)quantity(number, int): required when creatingweight(number): required when creating (up to 5 decimal places)value(number): required when creatingnote(optional, string)
DELETE /api/package/:packageId
Delete a package. Path paramspackageId(uuid)
- No content
GET /api/packages
Get packages that have not been assigned to a delivery (for the authenticated user). 200 ResponseGET /api/deliveries/:deliveryId
Get a delivery (for the authenticated user). Path paramsdeliveryId(uuid)
courierisnulluntil the delivery is assigned. When present, it contains an ETA window computed from live location.deliveryStepsare filtered to visible steps only (hidden steps are not returned).