Developer Guide
HelloRoute integration reference
Complete endpoint details, payload examples, auth patterns, and response behavior for engineering teams.
Overview
HelloRoute gives your operations team one integration layer for daily delivery work: send deliveries in, receive live delivery event alerts in your own system, and share secure tracking links with customers. Under the hood, this is powered by a versioned REST JSON API.
- Push delivery tasks in bulk from OMS/ERP systems.
- Receive route-started, upcoming, completed, and failed delivery alerts in your admin system.
- Offer customer tracking links without exposing staff credentials.
- Optionally enable direct customer SMS/email updates when messaging is configured.
Current scope
HelloRoute is API-first today: integrations are built through REST APIs and webhooks. Prebuilt marketplace connectors (for example Shopify/Zapier plug-and-play apps) are not included in this release.
Base URL
{YOUR_API_HOST}/api/v1
Replace {YOUR_API_HOST} with the origin your operations team uses for the API (for example your Railway or private deployment URL).
Partner integration endpoints
These are the routes most teams wire first: four under a single X-API-Key (see below), plus a read-only public tracking call for custom recipient experiences.
| Auth | Method | Path | Purpose |
|---|---|---|---|
| API key | POST | /delivery-tasks/push | Import many tasks (JSON array) |
| API key | POST | /delivery-tasks/push/cancel-or-delete | Cancel or delete one task |
| API key | POST | /delivery-tasks/push/reschedule | Change date or time window for one task |
| API key | GET | /delivery-tasks/push/export | Paginated raw export for KPI pipelines |
| Public | GET | /public/tracking/{token} | Tracking payload (token from SMS/email link) |
Paths are relative to {YOUR_API_HOST}/api/v1.
Available integrations
Start from a business integration page first, then open technical setup details only when your operations and engineering teams are ready to implement.
Shopify
Convert Shopify orders into HelloRoute delivery tasks and keep your delivery workflow centralized.
View Shopify integrationWooCommerce
Push WooCommerce orders to HelloRoute for dispatch planning, live tracking, and delivery completion.
View WooCommerce integrationIntegrations API reference
ReDoc at /redoc documents only the endpoints in the table above (push, export, channel adapters, and public tracking). It does not list dispatch, routing, drivers, or other staff-only APIs.
HelloRoute operators: full internal API is at /docs on the API host (Swagger, staff sign-in).
Authentication
HelloRoute supports two common patterns, depending on whether a person or a system is calling the API.
Staff and back-office (Bearer JWT)
Use this when you are building internal tools or automation that acts on behalf of a signed-in user.
POST {YOUR_API_HOST}/api/v1/auth/loginwith JSON body{ "email": "...", "password": "..." }.- Read
access_tokenfrom the JSON response. - Send
Authorization: Bearer <access_token>on subsequent requests to protected routes.
Treat tokens like passwords. Rotate credentials if they leak. Token lifetime is configured on the server; request a fresh token before expiry for long-running jobs.
Order feed & ERP (API key)
The delivery tasks push integration uses a shared secret so your OMS, ERP, or script can create and update stops without a user password.
- Header:
X-API-Key: <your-configured-key> - Configure the key on the server as environment variable
DELIVERY_TASKS_PUSH_API_KEY. - Generate a long random secret (for example with OpenSSL), set it once in env, and share it only with the integrating system.
Delivery event alerts (webhooks)
HelloRoute can notify your admin system whenever important delivery milestones happen. Your platform stays in sync in near real time and can decide how to notify customers (SMS, email, push, or internal workflows).
| Event type | When it happens |
|---|---|
| route_started_initial | Route starts (first two stops are notified) |
| stops_upcoming | Driver is approaching upcoming stops |
| delivery_completed | Delivery is completed |
| delivery_failed | Delivery attempt fails |
Webhook authentication
- Method:
POST - Headers:
Content-Type: application/json - Headers:
X-API-Key: <your-configured-key> - Headers:
User-Agent: HelloRoute/1.0
Each alert includes order, customer, and route context so your downstream systems can automate follow-up actions. For payload details and headers, refer to the internal document docs/ADMIN_SYSTEM_INTEGRATION.md.
Bulk push
POST {YOUR_API_HOST}/api/v1/delivery-tasks/push — push batches of stops in JSON. Behaviour matches the spreadsheet import your planners already trust, including time-window parsing from delivery_time when paired with delivery_date.
Request
Content-Type: application/jsonX-API-Keyas described above- Body: a JSON array of task objects (same fields as the Excel import).
Required fields
Each object must include customer_name. The importer also requires a valid delivery_date on every row — it must be today or a future date in the server's calendar. Other columns (address, coordinates, AWB, delivery_time, box counts, and more) follow the same field names as your Excel template; unknown keys are ignored after validation.
Successful response
200 OK with a summary object: total_rows, imported_rows, failed_rows, and optional errors (per-row messages). Partial success still returns 200 — always inspect failed_rows and errors.
Example
curl -X POST "{YOUR_API_HOST}/api/v1/delivery-tasks/push" \
-H "Content-Type: application/json" \
-H "X-API-Key: YOUR_SECRET_KEY" \
-d '[
{
"customer_name": "Jane Doe",
"phone_no": "971501234567",
"address": "123 Main St, Dubai",
"city_name": "Dubai",
"delivery_date": "2025-02-21",
"delivery_time": "Evening 7pm - 9pm",
"order_id": 1001,
"awb": "HLC-0000779942",
"no_of_delivery_boxes": 2
}
]'Cancel, delete & export
The same API key can maintain parity when orders are cancelled in your source system, and can export raw rows for BI or SLA reporting.
| Method | Path | Purpose |
|---|---|---|
| POST | /api/v1/delivery-tasks/push/cancel-or-delete | Cancel or delete one task by task_id, awb, or order_id + delivery_id. Behaviour depends on assignment and route state (see internal docs for edge cases). |
| GET | /api/v1/delivery-tasks/push/export | Paginated export for KPI pipelines. Query params include delivery_date_from, delivery_date_to, status, skip, limit (defaults and caps apply). |
Cancel or delete — request body
Send exactly one lookup strategy: task_id, or awb, or both order_id and delivery_id. Optional reason is stored when the action is a cancellation on an in-progress route.
By task id
{
"task_id": 12345,
"reason": "Cancelled in OMS"
}By AWB
{
"awb": "HLC-0000779942"
}By order id + delivery id
{
"order_id": 1001,
"delivery_id": 2001
}Cancel or delete — example
curl -X POST "{YOUR_API_HOST}/api/v1/delivery-tasks/push/cancel-or-delete" \
-H "Content-Type: application/json" \
-H "X-API-Key: YOUR_SECRET_KEY" \
-d '{"task_id":12345,"reason":"Cancelled in OMS"}'Success returns 200 with action either deleted or cancelled, plus task_id and was_assigned.
Export — query parameters
Optional filters: delivery_date_from, delivery_date_to (YYYY-MM-DD), status, pagination skip (default 0), limit (default 500, max 2000). Response shape: total, skip, limit, items (array of task snapshots for KPI use).
Export — example
curl -X GET "{YOUR_API_HOST}/api/v1/delivery-tasks/push/export?delivery_date_from=2025-02-01&delivery_date_to=2025-02-29&skip=0&limit=500" \
-H "X-API-Key: YOUR_SECRET_KEY"Reschedule one task
POST {YOUR_API_HOST}/api/v1/delivery-tasks/push/reschedule — same X-API-Key as push. Use when the delivery date or service window changes in your source system. Provide the same identifier rules as cancel/delete, and at least one of delivery_date, complete_after, or complete_before. Completed or delivered tasks are rejected with 400.
Example bodies
New delivery date (by AWB)
{
"awb": "HLC-0000779942",
"delivery_date": "2025-02-25T00:00:00"
}Explicit window (by task id)
{
"task_id": 12345,
"complete_after": "2025-02-21T19:00:00",
"complete_before": "2025-02-21T21:00:00"
}Example request
curl -X POST "{YOUR_API_HOST}/api/v1/delivery-tasks/push/reschedule" \
-H "Content-Type: application/json" \
-H "X-API-Key: YOUR_SECRET_KEY" \
-d '{"awb":"HLC-0000779942","delivery_date":"2025-02-25T00:00:00"}'Success 200 returns message, task_id, route_status, and smart_reoptimized (whether an in-progress route was queued for smart re-optimization).
Customer tracking (public)
Recipients open a tracking link in the browser. If you are building a custom experience, you can read the same payload programmatically — no API key or login required; the opaque token is the credential.
Endpoint
GET {YOUR_API_HOST}/api/v1/public/tracking/{token}
Returns structured tracking data while the link is active and not expired. Inactive or expired links return410; unknown tokens return 404.
Response shape (JSON)
Top-level keys match the public contract: stop (the recipient's stop, nested status and delivery_task summary), route (route metadata and ordered stops), optional live driver_location and eta, is_active, expires_at, and optional survey_status. Field-by-field types and examples are in /docs on your API host under the public tracking schema.
Customer updates
Customers can always be updated through secure tracking links. If you want HelloRoute to send notifications directly, optional SMS and email channels are supported when operator messaging is enabled and configured.
- Tracking links work without a staff login and can power your customer-facing experience.
- Direct SMS delivery uses Twilio when SMS messaging is enabled.
- Direct email delivery uses Resend when email messaging is enabled.
- You can keep full control in your own admin stack by using webhook alerts instead.
Staff, dispatch & driver APIs
Beyond the push feed, HelloRoute exposes many routes used by the web planner, dispatch console, dashboards, and driver clients — for example routes, stops, assignments, dispatch boards, insights, and configuration. Those endpoints expect a valid Bearer token and the same role rules as the product UI.
For partner engineering, treat OpenAPI as the contract: generate clients, mock servers, or contract tests from the published schema, and validate each flow in a staging tenant before production traffic.
Errors & status codes
| HTTP | Typical meaning (push API) |
|---|---|
| 401 | Missing or invalid X-API-Key |
| 503 | Push API not configured on the server (key not set) |
| 400 | Malformed JSON or fatal processing error — read body for detail |
| 200 | Request accepted; check failed_rows / errors for per-row validation issues |
| 404 | Cancel, delete, or reschedule: task not found for the identifiers you sent |
| 409 | Cancel, delete, or reschedule: multiple tasks matched — use task_id |
Cancel, delete, and reschedule also return 400 for validation, delivered tasks, or route-state conflicts — error bodies are JSON with a detail string; exact shapes are listed in OpenAPI.
Next steps
- Open
/docson your API host and authenticate once with a staff user. - Provision
DELIVERY_TASKS_PUSH_API_KEYin staging and run a dry-run push from curl or Postman. - Configure your admin-system webhook URL and API key to receive delivery event alerts.
- Align field names with your OMS export so planners see the same columns they already validate in Excel.
- For architecture reviews or SLAs, book a demo or contact us.