Introduction

The EzyRunners API allows you to integrate our delivery services directly into your application. With our RESTful API, you can create deliveries, track orders in real-time, and receive webhook notifications.

API Version: v1 | Base URL: https://api.ezyrunners.com/v1

Authentication

All API requests require authentication using an API key. Include your API key in the request header:

Authorization: Bearer YOUR_API_KEY
Content-Type: application/json

You can obtain your API key from the Enterprise Dashboard under Settings → API Keys.

Base URL

Environment Base URL
Production https://api.ezyrunners.com/v1
Sandbox https://sandbox.ezyrunners.com/v1

Rate Limits

Plan Requests/Minute Requests/Day
Starter301,000
Growth605,000
Business12020,000
EnterpriseCustomUnlimited

Create Delivery

Create a new delivery request.

POST /deliveries

Request Body

{
  "pickup": {
    "address": "123 Main Street, City",
    "latitude": 17.4239,
    "longitude": 78.4738,
    "contact_name": "Store Manager",
    "contact_phone": "+919876543210",
    "instructions": "Ask for order #123"
  },
  "dropoff": {
    "address": "456 Customer Lane, City",
    "latitude": 17.4456,
    "longitude": 78.4892,
    "contact_name": "John Doe",
    "contact_phone": "+919876543211",
    "instructions": "Leave at door"
  },
  "package": {
    "description": "Food order",
    "weight_kg": 2.5,
    "value": 450.00
  },
  "vehicle_type": "bike",
  "payment_method": "prepaid",
  "external_id": "ORDER-12345"
}

Response

{
  "success": true,
  "delivery_id": "DEL-2026011012345",
  "status": "pending",
  "estimated_pickup": "2026-01-10T14:30:00Z",
  "estimated_delivery": "2026-01-10T15:00:00Z",
  "fare": {
    "base": 25.00,
    "distance": 40.00,
    "total": 65.00
  },
  "tracking_url": "https://track.ezyrunners.com/DEL-2026011012345"
}

Get Delivery

Retrieve details of a specific delivery.

GET /deliveries/{delivery_id}

Response

{
  "delivery_id": "DEL-2026011012345",
  "status": "in_transit",
  "runner": {
    "id": "RUN-123",
    "name": "Rahul K",
    "phone": "+91987654****",
    "rating": 4.8,
    "vehicle": "Two Wheeler"
  },
  "pickup": { ... },
  "dropoff": { ... },
  "timeline": [
    { "status": "pending", "time": "2026-01-10T14:00:00Z" },
    { "status": "assigned", "time": "2026-01-10T14:05:00Z" },
    { "status": "picked_up", "time": "2026-01-10T14:25:00Z" }
  ]
}

Cancel Delivery

Cancel a pending or assigned delivery.

DELETE /deliveries/{delivery_id}

Request Body

{
  "reason": "Customer cancelled order"
}
Cancellation fees may apply if the runner has already picked up the order.

List Deliveries

Get a list of all deliveries with optional filters.

GET /deliveries?status=pending&limit=20

Query Parameters

Parameter Type Description
statusstringFilter by status (pending, assigned, picked_up, delivered, cancelled)
from_datestringStart date (ISO 8601)
to_datestringEnd date (ISO 8601)
limitintegerResults per page (max 100)
offsetintegerPagination offset

Track Delivery

Get real-time tracking information for a delivery.

GET /deliveries/{delivery_id}/track

Response

{
  "delivery_id": "DEL-2026011012345",
  "status": "in_transit",
  "runner_location": {
    "latitude": 17.4350,
    "longitude": 78.4820,
    "updated_at": "2026-01-10T14:45:00Z"
  },
  "eta_minutes": 8,
  "distance_remaining_km": 1.5
}

Webhook Setup

Configure webhooks to receive real-time notifications about delivery status changes.

POST /webhooks
{
  "url": "https://yourapp.com/webhooks/ezyrunners",
  "events": ["delivery.assigned", "delivery.picked_up", "delivery.delivered"],
  "secret": "your_webhook_secret"
}

Webhook Events

Event Description
delivery.createdNew delivery request created
delivery.assignedRunner assigned to delivery
delivery.picked_upPackage picked up by runner
delivery.in_transitRunner is en route to destination
delivery.deliveredPackage delivered successfully
delivery.cancelledDelivery cancelled
delivery.failedDelivery failed

Get Quote

Get a price estimate without creating a delivery.

POST /quote

Request Body

{
  "pickup_lat": 17.4239,
  "pickup_lng": 78.4738,
  "dropoff_lat": 17.4456,
  "dropoff_lng": 78.4892,
  "vehicle_type": "bike"
}

Response

{
  "distance_km": 5.2,
  "estimated_time_minutes": 18,
  "fare": {
    "base": 25.00,
    "distance": 41.60,
    "surge": 0.00,
    "total": 66.60
  },
  "currency": "INR"
}

SDKs & Libraries

Use our official SDKs for faster integration.