Search docs ⌘K
esc
Type to search across all documentation pages
Delivery

Delivery Resources

Manage drivers, customers, vehicles, zones, and hubs for your delivery operations. All routes live under /modules/delivery/*.

Drivers

Manage delivery drivers, their online/offline status, and location tracking via linked geo entities.

Create a driver

POST
/modules/delivery/drivers
delivery:write0.0000053 tokens

Create a new delivery driver.

curl
curl -X POST https://api.saasignal.saastemly.com/modules/delivery/drivers \
  -H "Authorization: Bearer sk_live_..." \
  -H "Content-Type: application/json" \
  -d '{"name":"example"}'
json — 201 Created
{ "status": "ok" }
typescript
const driver = await ss.delivery.drivers.create({
  name: 'Alex Rivera',
  phone: '+15551234567',
  vehicle_id: 'veh_01',
})
  1. Open Delivery and go to Drivers
  2. Click Add Driver
  3. Fill in the driver details and click Save
Body field
Type
Description
name required
string
1–256 chars
phone
string
email
string
pattern ^(?!\.)(?!.*\.\.)([A-Za-z0-9_'+\-\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\-]*\.)+[A-Za-z]{2,}$
status
string
values: offline, online, busy
vehicle_id
string
hub_id
string
capacity
integer
range ≥-9007199254740991 .. ≤9007199254740991
metadata
object
Error responses
401 Unauthorized
402 Insufficient tokens
429 Rate limited

List drivers

GET
/modules/delivery/drivers
delivery:read0.0000008 tokens

List delivery drivers for the active project, with optional status and cursor filters.

curl
curl https://api.saasignal.saastemly.com/modules/delivery/drivers \
  -H "Authorization: Bearer sk_live_..."
json — 200 OK
{ "status": "ok" }
typescript
const drivers = await ss.delivery.drivers.list()
  1. Open Delivery and go to Drivers
  2. Browse or filter the driver list
Query param
Type
Description
status
string
values: offline, online, busy
limit
integer
range ≥1 .. ≤100default 25
cursor
string
Error responses
401 Unauthorized
402 Insufficient tokens
429 Rate limited

Get a driver

GET
/modules/delivery/drivers/{driver_id}
delivery:read0.0000008 tokens

Retrieve a single driver.

curl
curl https://api.saasignal.saastemly.com/modules/delivery/drivers/{driver_id} \
  -H "Authorization: Bearer sk_live_..."
json — 200 OK
{ "status": "ok" }
typescript
const driver = await ss.delivery.drivers.get('drv_01')
  1. Open Delivery and go to Drivers
  2. Click on a driver to view their profile
Path param
Type
Description
driver_id required
string
Error responses
401 Unauthorized
402 Insufficient tokens
404 Not found
429 Rate limited

Update a driver

PATCH
/modules/delivery/drivers/{driver_id}
delivery:write0.0000053 tokens

Update a delivery driver.

curl
curl -X PATCH https://api.saasignal.saastemly.com/modules/delivery/drivers/{driver_id} \
  -H "Authorization: Bearer sk_live_..." \
  -H "Content-Type: application/json" \
  -d '{}'
json — 200 OK
{ "status": "ok" }
typescript
const updated = await ss.delivery.drivers.update('drv_01', {
  phone: '+15559876543',
})
  1. Open Delivery and go to Drivers
  2. Click on a driver, edit the fields, then click Save
Path param
Type
Description
driver_id required
string
Body field
Type
Description
name
string
1–256 chars
phone
string
email
string
pattern ^(?!\.)(?!.*\.\.)([A-Za-z0-9_'+\-\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\-]*\.)+[A-Za-z]{2,}$
status
string
values: offline, online, busy
vehicle_id
mixed
hub_id
mixed
capacity
integer
range ≥-9007199254740991 .. ≤9007199254740991
metadata
object
Error responses
401 Unauthorized
402 Insufficient tokens
404 Not found
429 Rate limited

Go online

POST
/modules/delivery/drivers/{driver_id}/online
delivery:track0.0000053 tokens

Set driver status to online.

curl
curl -X POST https://api.saasignal.saastemly.com/modules/delivery/drivers/{driver_id}/online \
  -H "Authorization: Bearer sk_live_..."
json — 200 OK
{ "status": "ok" }
typescript
await ss.delivery.drivers.online('drv_01')
  1. Open Delivery and go to Drivers
  2. Click on a driver, then toggle their status to Online
Path param
Type
Description
driver_id required
string
Error responses
401 Unauthorized
402 Insufficient tokens
404 Not found
429 Rate limited

Go offline

POST
/modules/delivery/drivers/{driver_id}/offline
delivery:track0.0000053 tokens

Set driver status to offline.

curl
curl -X POST https://api.saasignal.saastemly.com/modules/delivery/drivers/{driver_id}/offline \
  -H "Authorization: Bearer sk_live_..."
json — 200 OK
{ "status": "ok" }
typescript
await ss.delivery.drivers.offline('drv_01')
  1. Open Delivery and go to Drivers
  2. Click on a driver, then toggle their status to Offline
Path param
Type
Description
driver_id required
string
Error responses
401 Unauthorized
402 Insufficient tokens
404 Not found
429 Rate limited

Delete a driver

DELETE
/modules/delivery/drivers/{driver_id}
delivery:admin

Permanently remove a driver.

curl
curl -X DELETE https://api.saasignal.saastemly.com/modules/delivery/drivers/{driver_id} \
  -H "Authorization: Bearer sk_live_..."
json — 200 OK
{ "status": "ok" }
typescript
await ss.delivery.drivers.delete('drv_01')
  1. Open Delivery and go to Drivers
  2. Click on a driver, then click Delete
Path param
Type
Description
driver_id required
string
Error responses
401 Unauthorized
402 Insufficient tokens
404 Not found
429 Rate limited

Customers

Manage delivery customers and their saved addresses.

Create a customer

POST
/modules/delivery/customers
delivery:write0.0000053 tokens

Create a new delivery customer.

curl
curl -X POST https://api.saasignal.saastemly.com/modules/delivery/customers \
  -H "Authorization: Bearer sk_live_..." \
  -H "Content-Type: application/json" \
  -d '{"name":"example"}'
json — 201 Created
{ "status": "ok" }
typescript
const customer = await ss.delivery.customers.create({
  name: 'Jane Smith',
  email: 'jane@example.com',
  phone: '+15551234567',
})
  1. Open Delivery and go to Customers
  2. Click Add Customer
  3. Fill in the customer details and click Save
Body field
Type
Description
name required
string
1–256 chars
external_id
string
phone
string
email
string
pattern ^(?!\.)(?!.*\.\.)([A-Za-z0-9_'+\-\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\-]*\.)+[A-Za-z]{2,}$
metadata
object
Error responses
401 Unauthorized
402 Insufficient tokens
429 Rate limited

List customers

GET
/modules/delivery/customers
delivery:read0.0000008 tokens

List delivery customers.

curl
curl https://api.saasignal.saastemly.com/modules/delivery/customers \
  -H "Authorization: Bearer sk_live_..."
json — 200 OK
{ "status": "ok" }
typescript
const customers = await ss.delivery.customers.list()
  1. Open Delivery and go to Customers
  2. Browse or search the customer list
Query param
Type
Description
limit
integer
range ≥1 .. ≤100default 25
cursor
string
Error responses
401 Unauthorized
402 Insufficient tokens
429 Rate limited

Get a customer

GET
/modules/delivery/customers/{customer_id}
delivery:read0.0000008 tokens

Retrieve a single customer.

curl
curl https://api.saasignal.saastemly.com/modules/delivery/customers/{customer_id} \
  -H "Authorization: Bearer sk_live_..."
json — 200 OK
{ "status": "ok" }
typescript
const customer = await ss.delivery.customers.get('cust_01')
  1. Open Delivery and go to Customers
  2. Click on a customer to view their profile
Path param
Type
Description
customer_id required
string
Error responses
401 Unauthorized
402 Insufficient tokens
404 Not found
429 Rate limited

Update a customer

PATCH
/modules/delivery/customers/{customer_id}
delivery:write0.0000053 tokens

Update a delivery customer.

curl
curl -X PATCH https://api.saasignal.saastemly.com/modules/delivery/customers/{customer_id} \
  -H "Authorization: Bearer sk_live_..." \
  -H "Content-Type: application/json" \
  -d '{}'
json — 200 OK
{ "status": "ok" }
typescript
const updated = await ss.delivery.customers.update('cust_01', {
  phone: '+15559876543',
})
  1. Open Delivery and go to Customers
  2. Click on a customer, edit the fields, then click Save
Path param
Type
Description
customer_id required
string
Body field
Type
Description
name
string
1–256 chars
external_id
mixed
phone
string
email
string
pattern ^(?!\.)(?!.*\.\.)([A-Za-z0-9_'+\-\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\-]*\.)+[A-Za-z]{2,}$
metadata
object
Error responses
401 Unauthorized
402 Insufficient tokens
404 Not found
429 Rate limited

Delete a customer

DELETE
/modules/delivery/customers/{customer_id}
delivery:admin

Permanently remove a customer.

curl
curl -X DELETE https://api.saasignal.saastemly.com/modules/delivery/customers/{customer_id} \
  -H "Authorization: Bearer sk_live_..."
json — 200 OK
{ "status": "ok" }
typescript
await ss.delivery.customers.delete('cust_01')
  1. Open Delivery and go to Customers
  2. Click on a customer, then click Delete
Path param
Type
Description
customer_id required
string
Error responses
401 Unauthorized
402 Insufficient tokens
404 Not found
429 Rate limited

Add customer address

POST
/modules/delivery/customers/{customer_id}/addresses
delivery:write0.0000053 tokens

Add an address to a customer.

curl
curl -X POST https://api.saasignal.saastemly.com/modules/delivery/customers/{customer_id}/addresses \
  -H "Authorization: Bearer sk_live_..." \
  -H "Content-Type: application/json" \
  -d '{"address_line":"..."}'
json — 201 Created
{ "status": "ok" }
typescript
await ss.delivery.customers.addAddress('cust_01', {
  label: 'Home',
  address: '42 Elm St',
  lat: 40.71,
  lng: -74.01,
})
  1. Open Delivery and go to Customers
  2. Click on a customer, open the Addresses tab
  3. Click Add Address, fill in details, then click Save
Path param
Type
Description
customer_id required
string
Body field
Type
Description
label
string
address_line required
string
1–512 chars
lat
number
range ≥-90 .. ≤90
lng
number
range ≥-180 .. ≤180
metadata
object
Error responses
401 Unauthorized
402 Insufficient tokens
404 Not found
429 Rate limited

List customer addresses

GET
/modules/delivery/customers/{customer_id}/addresses
delivery:read0.0000008 tokens

List addresses for a customer.

curl
curl https://api.saasignal.saastemly.com/modules/delivery/customers/{customer_id}/addresses \
  -H "Authorization: Bearer sk_live_..."
json — 200 OK
{ "status": "ok" }
typescript
const addresses = await ss.delivery.customers.listAddresses('cust_01')
  1. Open Delivery and go to Customers
  2. Click on a customer, then open the Addresses tab
Path param
Type
Description
customer_id required
string
Error responses
401 Unauthorized
402 Insufficient tokens
429 Rate limited

Delete customer address

DELETE
/modules/delivery/customers/{customer_id}/addresses/{address_id}
delivery:write

Remove an address from a customer.

curl
curl -X DELETE https://api.saasignal.saastemly.com/modules/delivery/customers/{customer_id}/addresses/{address_id} \
  -H "Authorization: Bearer sk_live_..."
json — 200 OK
{ "status": "ok" }
typescript
await ss.delivery.customers.deleteAddress('cust_01', 'addr_01')
  1. Open Delivery and go to Customers
  2. Click on a customer, open the Addresses tab
  3. Click on an address, then click Delete
Path param
Type
Description
customer_id required
string
address_id required
string
Error responses
401 Unauthorized
402 Insufficient tokens
404 Not found
429 Rate limited

Vehicles

Manage delivery vehicles and assign them to drivers.

Create a vehicle

POST
/modules/delivery/vehicles
delivery:write0.0000053 tokens

Create a new delivery vehicle.

curl
curl -X POST https://api.saasignal.saastemly.com/modules/delivery/vehicles \
  -H "Authorization: Bearer sk_live_..." \
  -H "Content-Type: application/json" \
  -d '{}'
json — 201 Created
{ "status": "ok" }
typescript
const vehicle = await ss.delivery.vehicles.create({
  type: 'van',
  plate: 'ABC-1234',
  capacity: 500,
})
  1. Open Delivery and go to Vehicles
  2. Click Add Vehicle
  3. Fill in the vehicle details and click Save
Body field
Type
Description
type
string
plate
string
name
string
capacity
integer
range ≥-9007199254740991 .. ≤9007199254740991
driver_id
string
metadata
object
Error responses
401 Unauthorized
402 Insufficient tokens
429 Rate limited

List vehicles

GET
/modules/delivery/vehicles
delivery:read0.0000008 tokens

List delivery vehicles.

curl
curl https://api.saasignal.saastemly.com/modules/delivery/vehicles \
  -H "Authorization: Bearer sk_live_..."
json — 200 OK
{ "status": "ok" }
typescript
const vehicles = await ss.delivery.vehicles.list()
  1. Open Delivery and go to Vehicles
  2. Browse or filter the vehicle list
Query param
Type
Description
type
string
limit
integer
range ≥1 .. ≤100default 25
cursor
string
Error responses
401 Unauthorized
402 Insufficient tokens
429 Rate limited

Get a vehicle

GET
/modules/delivery/vehicles/{vehicle_id}
delivery:read0.0000008 tokens

Retrieve a single vehicle.

curl
curl https://api.saasignal.saastemly.com/modules/delivery/vehicles/{vehicle_id} \
  -H "Authorization: Bearer sk_live_..."
json — 200 OK
{ "status": "ok" }
typescript
const vehicle = await ss.delivery.vehicles.get('veh_01')
  1. Open Delivery and go to Vehicles
  2. Click on a vehicle to view its details
Path param
Type
Description
vehicle_id required
string
Error responses
401 Unauthorized
402 Insufficient tokens
404 Not found
429 Rate limited

Update a vehicle

PATCH
/modules/delivery/vehicles/{vehicle_id}
delivery:write0.0000053 tokens

Update a delivery vehicle.

curl
curl -X PATCH https://api.saasignal.saastemly.com/modules/delivery/vehicles/{vehicle_id} \
  -H "Authorization: Bearer sk_live_..." \
  -H "Content-Type: application/json" \
  -d '{}'
json — 200 OK
{ "status": "ok" }
typescript
const updated = await ss.delivery.vehicles.update('veh_01', {
  capacity: 750,
})
  1. Open Delivery and go to Vehicles
  2. Click on a vehicle, edit the fields, then click Save
Path param
Type
Description
vehicle_id required
string
Body field
Type
Description
type
string
plate
string
name
string
capacity
integer
range ≥-9007199254740991 .. ≤9007199254740991
driver_id
mixed
metadata
object
Error responses
401 Unauthorized
402 Insufficient tokens
404 Not found
429 Rate limited

Delete a vehicle

DELETE
/modules/delivery/vehicles/{vehicle_id}
delivery:admin

Permanently remove a vehicle.

curl
curl -X DELETE https://api.saasignal.saastemly.com/modules/delivery/vehicles/{vehicle_id} \
  -H "Authorization: Bearer sk_live_..."
json — 200 OK
{ "status": "ok" }
typescript
await ss.delivery.vehicles.delete('veh_01')
  1. Open Delivery and go to Vehicles
  2. Click on a vehicle, then click Delete
Path param
Type
Description
vehicle_id required
string
Error responses
401 Unauthorized
402 Insufficient tokens
404 Not found
429 Rate limited

Zones

Define delivery zones backed by logistics geofences.

Create a delivery zone

POST
/modules/delivery/zones
delivery:write0.0000053 tokens

Create a delivery zone with optional geofence.

curl
curl -X POST https://api.saasignal.saastemly.com/modules/delivery/zones \
  -H "Authorization: Bearer sk_live_..." \
  -H "Content-Type: application/json" \
  -d '{"name":"example"}'
json — 201 Created
{ "status": "ok" }
typescript
const zone = await ss.delivery.zones.create({
  name: 'Downtown',
  polygon: [
    { lat: 40.75, lng: -74.00 },
    { lat: 40.75, lng: -73.97 },
    { lat: 40.72, lng: -73.97 },
    { lat: 40.72, lng: -74.00 },
  ],
})
  1. Open Delivery and go to Zones
  2. Click Create Zone
  3. Draw the zone boundary on the map and click Save
Body field
Type
Description
name required
string
1–256 chars
description
string
max 1024 chars
color
string
max 32 chars
enabled
boolean
geofence_type
string
values: circle, polygon
lat
number
range ≥-90 .. ≤90
lng
number
range ≥-180 .. ≤180
radius_m
number
range ≥1 .. ≤100000
polygon
array
3–100 items
metadata
object
Error responses
401 Unauthorized
402 Insufficient tokens
429 Rate limited

List delivery zones

GET
/modules/delivery/zones
delivery:read0.0000008 tokens

List all delivery zones.

curl
curl https://api.saasignal.saastemly.com/modules/delivery/zones \
  -H "Authorization: Bearer sk_live_..."
json — 200 OK
{ "status": "ok" }
typescript
const zones = await ss.delivery.zones.list()
  1. Open Delivery and go to Zones
  2. Browse the list of delivery zones
Query param
Type
Description
limit
integer
range ≥1 .. ≤100default 25
cursor
string
Error responses
401 Unauthorized
402 Insufficient tokens
429 Rate limited

Get a delivery zone

GET
/modules/delivery/zones/{zone_id}
delivery:read0.0000008 tokens

Retrieve a single delivery zone.

curl
curl https://api.saasignal.saastemly.com/modules/delivery/zones/{zone_id} \
  -H "Authorization: Bearer sk_live_..."
json — 200 OK
{ "status": "ok" }
typescript
const zone = await ss.delivery.zones.get('zone_01')
  1. Open Delivery and go to Zones
  2. Click on a zone to view its details and boundary
Path param
Type
Description
zone_id required
string
Error responses
401 Unauthorized
402 Insufficient tokens
404 Not found
429 Rate limited

Update a delivery zone

PATCH
/modules/delivery/zones/{zone_id}
delivery:write0.0000053 tokens

Update delivery zone fields.

curl
curl -X PATCH https://api.saasignal.saastemly.com/modules/delivery/zones/{zone_id} \
  -H "Authorization: Bearer sk_live_..." \
  -H "Content-Type: application/json" \
  -d '{}'
json — 200 OK
{ "status": "ok" }
typescript
const updated = await ss.delivery.zones.update('zone_01', {
  name: 'Downtown Extended',
})
  1. Open Delivery and go to Zones
  2. Click on a zone, edit the fields or boundary, then click Save
Path param
Type
Description
zone_id required
string
Body field
Type
Description
name
string
1–256 chars
description
string
max 1024 chars
color
string
max 32 chars
enabled
boolean
metadata
object
Error responses
401 Unauthorized
402 Insufficient tokens
404 Not found
429 Rate limited

Delete a delivery zone

DELETE
/modules/delivery/zones/{zone_id}
delivery:admin

Permanently remove a delivery zone.

curl
curl -X DELETE https://api.saasignal.saastemly.com/modules/delivery/zones/{zone_id} \
  -H "Authorization: Bearer sk_live_..."
json — 200 OK
{ "status": "ok" }
typescript
await ss.delivery.zones.delete('zone_01')
  1. Open Delivery and go to Zones
  2. Click on a zone, then click Delete
Path param
Type
Description
zone_id required
string
Error responses
401 Unauthorized
402 Insufficient tokens
404 Not found
429 Rate limited

Hubs

Manage delivery hubs (warehouses, kitchens, pickup points).

Create a delivery hub

POST
/modules/delivery/hubs
delivery:write0.0000053 tokens

Create a delivery hub.

curl
curl -X POST https://api.saasignal.saastemly.com/modules/delivery/hubs \
  -H "Authorization: Bearer sk_live_..." \
  -H "Content-Type: application/json" \
  -d '{"name":"example"}'
json — 201 Created
{ "status": "ok" }
typescript
const hub = await ss.delivery.hubs.create({
  name: 'Warehouse A',
  lat: 40.74,
  lng: -73.99,
  address: '100 Main St',
})
  1. Open Delivery and go to Hubs
  2. Click Add Hub
  3. Fill in the hub details and click Save
Body field
Type
Description
name required
string
1–256 chars
address
string
max 512 chars
lat
number
range ≥-90 .. ≤90
lng
number
range ≥-180 .. ≤180
radius_km
number
range ≥0.1 .. ≤500
metadata
object
Error responses
401 Unauthorized
402 Insufficient tokens
429 Rate limited

List delivery hubs

GET
/modules/delivery/hubs
delivery:read0.0000008 tokens

List all delivery hubs.

curl
curl https://api.saasignal.saastemly.com/modules/delivery/hubs \
  -H "Authorization: Bearer sk_live_..."
json — 200 OK
{ "status": "ok" }
typescript
const hubs = await ss.delivery.hubs.list()
  1. Open Delivery and go to Hubs
  2. Browse the list of hubs
Query param
Type
Description
limit
integer
range ≥1 .. ≤100default 25
cursor
string
Error responses
401 Unauthorized
402 Insufficient tokens
429 Rate limited

Get a delivery hub

GET
/modules/delivery/hubs/{hub_id}
delivery:read0.0000008 tokens

Retrieve a single delivery hub.

curl
curl https://api.saasignal.saastemly.com/modules/delivery/hubs/{hub_id} \
  -H "Authorization: Bearer sk_live_..."
json — 200 OK
{ "status": "ok" }
typescript
const hub = await ss.delivery.hubs.get('hub_01')
  1. Open Delivery and go to Hubs
  2. Click on a hub to view its details
Path param
Type
Description
hub_id required
string
Error responses
401 Unauthorized
402 Insufficient tokens
404 Not found
429 Rate limited

Update a delivery hub

PATCH
/modules/delivery/hubs/{hub_id}
delivery:write0.0000053 tokens

Update delivery hub fields.

curl
curl -X PATCH https://api.saasignal.saastemly.com/modules/delivery/hubs/{hub_id} \
  -H "Authorization: Bearer sk_live_..." \
  -H "Content-Type: application/json" \
  -d '{}'
json — 200 OK
{ "status": "ok" }
typescript
const updated = await ss.delivery.hubs.update('hub_01', {
  name: 'Warehouse A — East Wing',
})
  1. Open Delivery and go to Hubs
  2. Click on a hub, edit the fields, then click Save
Path param
Type
Description
hub_id required
string
Body field
Type
Description
name
string
1–256 chars
address
string
max 512 chars
lat
number
range ≥-90 .. ≤90
lng
number
range ≥-180 .. ≤180
radius_km
number
range ≥0.1 .. ≤500
metadata
object
Error responses
401 Unauthorized
402 Insufficient tokens
404 Not found
429 Rate limited

Delete a delivery hub

DELETE
/modules/delivery/hubs/{hub_id}
delivery:admin

Permanently remove a delivery hub.

curl
curl -X DELETE https://api.saasignal.saastemly.com/modules/delivery/hubs/{hub_id} \
  -H "Authorization: Bearer sk_live_..."
json — 200 OK
{ "status": "ok" }
typescript
await ss.delivery.hubs.delete('hub_01')
  1. Open Delivery and go to Hubs
  2. Click on a hub, then click Delete
Path param
Type
Description
hub_id required
string
Error responses
401 Unauthorized
402 Insufficient tokens
404 Not found
429 Rate limited