The Kilo Business Delivery API lets your server create and manage fleet deliveries the same way the public request form does.
Who this is for
- You run a business on Kilo.
- You have (or are building) a WhatsApp / AI bot that talks to customers.
- Your bot's backend will call Kilo with an API key.
Who this is NOT for
- Do not put your API key in a browser, mobile app, or WhatsApp client.
- Do not call Kilo directly from a customer's phone.
What you can do
- Discover what the business offers (services, warehouses, service locations, payments).
- Create a delivery (pickup, dropoff, package photos, payment method).
- Get one delivery by id.
- List deliveries.
- List riders and assign / unassign them (or let Kilo Auto-dispatch do it).
- Cancel a delivery when the rules allow it.
- Receive webhooks when something changes (created, cancelled, completed, OTP ready, …).
- Optionally turn off Kilo's customer SMS / WhatsApp / email and send those yourself from webhook events.
- Optionally send the delivery OTP yourself via webhook (if Meta WhatsApp / SMS from Kilo is a problem for you).
Own your customer notifications
If your bot already talks to customers (WhatsApp, SMS, in-app):
- Dashboard → Settings → Notifications.
- Turn Customer delivery messages off.
- Keep webhooks on (Settings → API & Webhooks) and send status updates from your side.
Kilo still runs the delivery. Rider ops messages are unchanged — only customer-facing status / tracking / feedback messages stop.
Want to send the delivery code (OTP) yourself too?
That is a separate switch (only applies when drop-off OTP is still required — see Delivery settings → Require OTP at drop-off, on by default):
- Dashboard → Settings → API & Webhooks.
- Turn OTP via webhook only on.
- Subscribe your webhook to
delivery.otp_issued.
Then Kilo will not WhatsApp/SMS the code. You get data.otp.code on the webhook and send it in your own chat. Details: Webhooks → Send the delivery OTP yourself.
If Require OTP at drop-off is off, there is no code to send — riders complete with photo proof only.
Auto-assign riders (optional)
Two ways to get a rider on a job:
- Kilo Auto-dispatch — turn it on in Delivery settings; Kilo picks a nearby active rider on create. Guide: Auto-assign riders.
- Your own agent — listen for
delivery.created,GET /riders, thenPOST /deliveries/{id}/assign. Guide: Assign riders and the Auto-assign agent prompt.
Mental model (read this twice)
Think of three boxes:
- Your bot — talks to the human in natural language.
- Your backend — turns that chat into a clean JSON body + downloads/hosts package images.
- Kilo — creates the delivery for your fleet, applying your coverage, pricing, and settings.
Kilo does not parse the WhatsApp text for you. Your backend must send complete data.
Next step
Prefer building with an AI coding agent? Start at Build with AI — copy a ready-made implementation prompt (WhatsApp bot, store fulfillment, auto-assign agent) that includes the API reference and a human setup checklist.
Otherwise start with Capabilities & locations — that page is the allow-list mirror of Dashboard → Settings → Delivery (what this fleet may offer). Then Authentication and Rate limits. For exact JSON shapes, see API reference.
For AI agents & crawlers
This site publishes a complete page catalog so agents know every URL and what it contains before opening pages:
- Plain-text index (llms.txt): /llms.txt — if a path is not listed there, it does not exist in Kilo Docs.
- Full markdown dump: /llms-full.txt
- Search sitemap: /sitemap.xml