Add and manage your riders from your system
Create, list, update and remove your own riders with the delivery-executives endpoints, and what the rider does next.
4 min readUpdated Developers
Manage your own riders (outlet riders, delivery_mode: "OUTLET") through the API. Only riders mapped to your outlet are visible. Another outlet’s rider returns 404 NOT_FOUND. Every call needs Authorization: Bearer <access_token>; the outlet comes from the token. In every response, id is the rider id: use it in the /:id routes.
Set BASE_URL to the API address you were given. The examples below use $BASE_URL and $ACCESS_TOKEN.
Call | Purpose |
|---|---|
| Add a rider (new or existing account) |
| List your riders ( |
| Get one rider |
| Update name, phone or max orders per trip |
| Remove a rider from your outlet |
What the rider does#
Installs the MiniDrop Rider app (use
app_download_urlfrom the create response when it is set).Logs in with the email you sent and the temporary password from the onboarding email.
Changes the password when the app asks.
Goes Online. The rider then appears in
GET /api/delivery-executives?online=trueand can be selected for your trips.
If the email belongs to an existing MiniDrop rider, that rider keeps their current password and is only added to your outlet. Guide for the rider: Install the MiniDrop rider app and sign in.
Add a rider#
curl -X POST "$BASE_URL/api/delivery-executives" \ -H "Authorization: Bearer $ACCESS_TOKEN" \ -H "Content-Type: application/json" \ -d '{"name":"Ravi Kumar","phone":"+919876543210","email":"ravi@example.com","max_orders_per_trip":5}'Field | Details |
|---|---|
| string, required, 1 to 100 characters |
| string, required: |
| string, required. The rider’s login email |
| integer, optional, default |
Response 201 Created:
{ "success": true, "data": { "id": "7c1f0e9a-3b2d-4e8f-9a6b-1d2c3e4f5a6b", "name": "Ravi Kumar", "phone": "+919876543210", "email": "ravi@example.com", "status": "APPROVED", "max_orders_per_trip": 5, "is_existing_account": false, "work_online": false, "app_download_url": "https://example.com/rider-app" }}is_existing_account:falsemeans a new login was created and the temporary password was emailed.truemeans an existing rider was mapped and their password is unchanged.app_download_urlisnullwhen no rider app link is configured.
Errors: 400 VALIDATION_ERROR (invalid phone, email or fields), 409 EMAIL_ROLE_MISMATCH (the email belongs to a non-rider account), 409 ALREADY_MAPPED (the rider is already on your outlet; error.details.id holds the rider id).
List riders#
curl "$BASE_URL/api/delivery-executives?online=true" \ -H "Authorization: Bearer $ACCESS_TOKEN"online=true: riders withwork_online: trueand a location received in the last 5 minutes.online=false: all other riders.
{ "success": true, "data": [ { "id": "7c1f0e9a-3b2d-4e8f-9a6b-1d2c3e4f5a6b", "name": "Ravi Kumar", "phone": "+919876543210", "email": "ravi@example.com", "status": "APPROVED", "max_orders_per_trip": 5, "work_online": true, "location_fresh": true, "active_trip_id": null, "created_at": "2026-10-20T09:30:00.000Z" } ]}location_fresh: the rider’s location was received in the last 5 minutes.active_trip_id: the trip the rider is on now (statusPENDING_APPROVAL,CREATED,ASSIGNEDorSTARTED), otherwisenull.created_at: when the rider was added to your outlet.
Get, update and remove#
GET /api/delivery-executives/:id returns one rider with the same fields as the list (404 NOT_FOUND if the rider is not on your outlet).
PATCH /api/delivery-executives/:id: send at least one of name, phone, max_orders_per_trip. The phone is normalised as on create. The response is the updated rider. Errors: 400 VALIDATION_ERROR (no field sent, or an invalid value), 404 NOT_FOUND.
curl -X PATCH "$BASE_URL/api/delivery-executives/$DE_ID" \ -H "Authorization: Bearer $ACCESS_TOKEN" \ -H "Content-Type: application/json" \ -d '{"max_orders_per_trip":8}'DELETE /api/delivery-executives/:id removes the rider from your outlet. The rider’s login is deleted only when the rider belongs to no other outlet and has no delivery history.
{ "success": true, "data": { "deleted_completely": false, "message": "Rider removed from your outlet. Their platform account is unchanged because they are linked to other outlets or have delivery history." }}Errors: 404 NOT_FOUND, 409 RIDER_HAS_ACTIVE_TRIP (the rider has an active or pending trip for your outlet: complete it or release the orders first).
Why is my new rider not in the online list?
The rider must sign in, switch to Online and send a location. online=true needs work_online: true and a location received in the last 5 minutes.
Was this page helpful?
Related guides
Test safely in the sandbox
Use the practice server to test orders, trips and webhooks without real riders: how the simulation runs and which scenarios exist.
3 min readDevelopers
Plan and approve trips for your own riders
Turn queued OUTLET orders into trips for your online riders, approve them in one call or in the portal, and read the trips back.
3 min readDevelopers
Receive order updates with webhooks
Set your webhook URL, check the X-API-SECRET header, read the order.updated payload and handle retries.
4 min readDevelopers
Get your API credentials
Create your API key in the outlet portal, hand it over safely to your software team and make a new one when needed.
3 min readDevelopers
