N-Ways
Developer docsContacts

Contacts

Your address book in one list: saved recipients (ben_…), your pickup places (plc_…, your stores and warehouses, to choose a delivery's pickup from with pickupPlaceId) and customers (cus_…, everyone your deliveries went to, kept from the deliveries). The older lists (/places, /customers, and /beneficiaries and /addresses) answer the same records and stay as deprecated aliases.

On this page
Note:

Send your key as key=YOUR_API_KEY on the address, or in the X-NWays-Api-Key header. API keys

Base address: https://nways.ng/maps/v1/fleet

Your address book (recipients, pickup places and customers)

GET https://nways.ng/maps/v1/fleet/contacts

One kind (kind=recipient|place|customer, each in its own order and pages), or all of them: your pickup places (the default first), then your saved recipients (by name, up to limit), then your customers (most recent delivery first, a page at a time: nextPageToken goes on through the customers only). q finds a name, phone, email, address, door code or tag; tag keeps one tag's recipients. recipients is how many recipients match; tags their tags, most used first.

Parameters

NameInTypeDescription
kindquerystringOne of: recipient, place, customer.
qquerystring
tagquerystringRecipients only.
limitqueryintegerRecipients: 100 (at most 1,000); customers: 25 (at most 100) a page. ≥ 1.
pageTokenquerystringCustomers: nextPageToken (or prevPageToken).
cURL
curl "https://nways.ng/maps/v1/fleet/contacts" \
  -H "X-NWays-Api-Key: YOUR_API_KEY"
JavaScript
const res = await fetch('https://nways.ng/maps/v1/fleet/contacts', {
  headers: { 'X-NWays-Api-Key': process.env.NWAYS_API_KEY },
})
const data = await res.json()
Python
import os
import requests

res = requests.get(
    "https://nways.ng/maps/v1/fleet/contacts",
    headers={"X-NWays-Api-Key": os.environ["NWAYS_API_KEY"]},
    timeout=10,
)
data = res.json()

Response

Contacts

FieldTypeDescription
contactsContact[]Required.
contacts[].idstringRequired. ben_… (recipient), plc_… (place) or cus_… (customer).
contacts[].kindstringRequired. One of: recipient, place, customer.
contacts[].namestringRequired.
contacts[].phonestringRequired.
contacts[].altPhonestring
contacts[].emailstring
contacts[].placeNamestringRecipients: the drop-off's name; customers: their latest drop-off's.
contacts[].addressstring
contacts[].doorCodestring
contacts[].latnumber | nullRequired. null for a customer with no address kept.
contacts[].lngnumber | nullRequired.
contacts[].notesstring
contacts[].itemDescriptionstring
contacts[].packageSizestring | null
contacts[].tagsstring[]
contacts[].regularsintegerRecipients: repeating deliveries to them that haven't ended.
contacts[].hoursstringPlaces
contacts[].defaultbooleanPlaces: new deliveries in the console start from it.
contacts[].deliveriesintegerCustomers
contacts[].addressesintegerCustomers
contacts[].lastDeliveryAtstring (date-time)Customers
contacts[].createdAtstring (date-time)
contacts[].updatedAtstring (date-time)
recipientsinteger
tagsobject[]
tags[].tagstring
tags[].countinteger
nextPageTokenstring
prevPageTokenstring
200 OK
{
  "contacts": [
    {
      "id": "ben_4fQ9xLm2Za",
      "kind": "recipient",
      "name": "string",
      "phone": "string",
      "altPhone": "string",
      "email": "string",
      "placeName": "string",
      "address": "string",
      "doorCode": "string",
      "lat": 0,
      "lng": 0,
      "notes": "string",
      "itemDescription": "string",
      "packageSize": "string",
      "tags": [
        "string"
      ],
      "regulars": 0,
      "hours": "string",
      "default": true,
      "deliveries": 0,
      "addresses": 0,
      "lastDeliveryAt": "2026-10-15T09:00:00+01:00",
      "createdAt": "2026-10-15T09:00:00+01:00",
      "updatedAt": "2026-10-15T09:00:00+01:00"
    }
  ],
  "recipients": 0,
  "tags": [
    {
      "tag": "string",
      "count": 0
    }
  ],
  "nextPageToken": "string",
  "prevPageToken": "string"
}

Errors

  • default Error

Save a recipient or add a pickup place

POST https://nways.ng/maps/v1/fleet/contacts

kind is recipient (a saved drop-off: name, phones, email, placeName, address, doorCode, lat, lng, notes, itemDescription, packageSize, tags; up to 5,000) or place (a pickup place: name, doorCode, address, lat, lng, phone, hours, default; up to 200; your first is the default). Customers come from deliveries and can't be made here. name, lat and lng are required.

Request body

kind (recipient or place) and that kind's fields; name, lat and lng are required to make one.

FieldTypeDescription
kindstringOne of: recipient, place.
namestringUp to 100 characters.
phonestring
altPhonestringRecipients
emailstringRecipients
placeNamestringRecipients
addressstringUp to 300 characters.
doorCodestringUp to 32 characters.
latnumber
lngnumber
notesstringRecipients
itemDescriptionstringRecipients
packageSizestring | nullRecipients
tagsstring[]Recipients At most 8 items.
hoursstringPlaces Up to 200 characters.
defaultbooleanPlaces
cURL
curl -X POST "https://nways.ng/maps/v1/fleet/contacts" \
  -H "X-NWays-Api-Key: YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"kind":"recipient","name":"Mama Put","phone":"+234 803 555 0101","address":"12 Herbert Macaulay Way","lat":6.5095,"lng":3.3711,"tags":["Shop"]}'
JavaScript
const res = await fetch('https://nways.ng/maps/v1/fleet/contacts', {
  method: 'POST',
  headers: { 'X-NWays-Api-Key': process.env.NWAYS_API_KEY, 'Content-Type': 'application/json' },
  body: JSON.stringify({
    "kind": "recipient",
    "name": "Mama Put",
    "phone": "+234 803 555 0101",
    "address": "12 Herbert Macaulay Way",
    "lat": 6.5095,
    "lng": 3.3711,
    "tags": [
      "Shop"
    ]
  }),
})
const data = await res.json()
Python
import os
import requests

res = requests.post(
    "https://nways.ng/maps/v1/fleet/contacts",
    headers={"X-NWays-Api-Key": os.environ["NWAYS_API_KEY"]},
    json={"kind": "recipient", "name": "Mama Put", "phone": "+234 803 555 0101", "address": "12 Herbert Macaulay Way", "lat": 6.5095, "lng": 3.3711, "tags": ["Shop"]},
    timeout=10,
)
data = res.json()

Response

Saved

FieldTypeDescription
idstringRequired. ben_… (recipient), plc_… (place) or cus_… (customer).
kindstringRequired. One of: recipient, place, customer.
namestringRequired.
phonestringRequired.
altPhonestring
emailstring
placeNamestringRecipients: the drop-off's name; customers: their latest drop-off's.
addressstring
doorCodestring
latnumber | nullRequired. null for a customer with no address kept.
lngnumber | nullRequired.
notesstring
itemDescriptionstring
packageSizestring | null
tagsstring[]
regularsintegerRecipients: repeating deliveries to them that haven't ended.
hoursstringPlaces
defaultbooleanPlaces: new deliveries in the console start from it.
deliveriesintegerCustomers
addressesintegerCustomers
lastDeliveryAtstring (date-time)Customers
createdAtstring (date-time)
updatedAtstring (date-time)
201 OK
{
  "id": "ben_4fQ9xLm2Za",
  "kind": "recipient",
  "name": "string",
  "phone": "string",
  "altPhone": "string",
  "email": "string",
  "placeName": "string",
  "address": "string",
  "doorCode": "string",
  "lat": 0,
  "lng": 0,
  "notes": "string",
  "itemDescription": "string",
  "packageSize": "string",
  "tags": [
    "string"
  ],
  "regulars": 0,
  "hours": "string",
  "default": true,
  "deliveries": 0,
  "addresses": 0,
  "lastDeliveryAt": "2026-10-15T09:00:00+01:00",
  "createdAt": "2026-10-15T09:00:00+01:00",
  "updatedAt": "2026-10-15T09:00:00+01:00"
}

Errors

  • default Error

Your own addresses first while a stop is typed

GET https://nways.ng/maps/v1/fleet/contacts/addresses

Your pickup places and the drop-offs you used before, matching q (every word, in the name, address or door code), the most recently used first; at most limit (5, up to 10).

Parameters

NameInTypeDescription
qquerystring
limitqueryintegerDefault: 5. ≥ 1, ≤ 10.
cURL
curl "https://nways.ng/maps/v1/fleet/contacts/addresses" \
  -H "X-NWays-Api-Key: YOUR_API_KEY"
JavaScript
const res = await fetch('https://nways.ng/maps/v1/fleet/contacts/addresses', {
  headers: { 'X-NWays-Api-Key': process.env.NWAYS_API_KEY },
})
const data = await res.json()
Python
import os
import requests

res = requests.get(
    "https://nways.ng/maps/v1/fleet/contacts/addresses",
    headers={"X-NWays-Api-Key": os.environ["NWAYS_API_KEY"]},
    timeout=10,
)
data = res.json()

Response

Addresses

FieldTypeDescription
addressesobject[]Required.
200 OK
{
  "addresses": [
    {}
  ]
}

Errors

  • default Error

Get a contact

GET https://nways.ng/maps/v1/fleet/contacts/{contactId}

Parameters

NameInTypeDescription
contactIdpathstringRequired. ben_… (recipient), plc_… (place) or cus_… (customer).
cURL
curl "https://nways.ng/maps/v1/fleet/contacts/ben_4fQ9xLm2Za" \
  -H "X-NWays-Api-Key: YOUR_API_KEY"
JavaScript
const res = await fetch('https://nways.ng/maps/v1/fleet/contacts/ben_4fQ9xLm2Za', {
  headers: { 'X-NWays-Api-Key': process.env.NWAYS_API_KEY },
})
const data = await res.json()
Python
import os
import requests

res = requests.get(
    "https://nways.ng/maps/v1/fleet/contacts/ben_4fQ9xLm2Za",
    headers={"X-NWays-Api-Key": os.environ["NWAYS_API_KEY"]},
    timeout=10,
)
data = res.json()

Response

Contact

FieldTypeDescription
idstringRequired. ben_… (recipient), plc_… (place) or cus_… (customer).
kindstringRequired. One of: recipient, place, customer.
namestringRequired.
phonestringRequired.
altPhonestring
emailstring
placeNamestringRecipients: the drop-off's name; customers: their latest drop-off's.
addressstring
doorCodestring
latnumber | nullRequired. null for a customer with no address kept.
lngnumber | nullRequired.
notesstring
itemDescriptionstring
packageSizestring | null
tagsstring[]
regularsintegerRecipients: repeating deliveries to them that haven't ended.
hoursstringPlaces
defaultbooleanPlaces: new deliveries in the console start from it.
deliveriesintegerCustomers
addressesintegerCustomers
lastDeliveryAtstring (date-time)Customers
createdAtstring (date-time)
updatedAtstring (date-time)
200 OK
{
  "id": "ben_4fQ9xLm2Za",
  "kind": "recipient",
  "name": "string",
  "phone": "string",
  "altPhone": "string",
  "email": "string",
  "placeName": "string",
  "address": "string",
  "doorCode": "string",
  "lat": 0,
  "lng": 0,
  "notes": "string",
  "itemDescription": "string",
  "packageSize": "string",
  "tags": [
    "string"
  ],
  "regulars": 0,
  "hours": "string",
  "default": true,
  "deliveries": 0,
  "addresses": 0,
  "lastDeliveryAt": "2026-10-15T09:00:00+01:00",
  "createdAt": "2026-10-15T09:00:00+01:00",
  "updatedAt": "2026-10-15T09:00:00+01:00"
}

Errors

  • default Error

Edit a recipient or a pickup place

PATCH https://nways.ng/maps/v1/fleet/contacts/{contactId}

The kind's fields as when made (kind may be left out; it can't change). A customer is the record of their deliveries and can't be edited (400): save them as a recipient.

Parameters

NameInTypeDescription
contactIdpathstringRequired. ben_… (recipient), plc_… (place) or cus_… (customer).

Request body

kind (recipient or place) and that kind's fields; name, lat and lng are required to make one.

FieldTypeDescription
kindstringOne of: recipient, place.
namestringUp to 100 characters.
phonestring
altPhonestringRecipients
emailstringRecipients
placeNamestringRecipients
addressstringUp to 300 characters.
doorCodestringUp to 32 characters.
latnumber
lngnumber
notesstringRecipients
itemDescriptionstringRecipients
packageSizestring | nullRecipients
tagsstring[]Recipients At most 8 items.
hoursstringPlaces Up to 200 characters.
defaultbooleanPlaces
cURL
curl -X PATCH "https://nways.ng/maps/v1/fleet/contacts/ben_4fQ9xLm2Za" \
  -H "X-NWays-Api-Key: YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"kind":"recipient","name":"string","phone":"string","altPhone":"string","email":"string","placeName":"string","address":"string","doorCode":"string","lat":0,"lng":0,"notes":"string","itemDescription":"string","packageSize":"string","tags":["string"],"hours":"string","default":true}'
JavaScript
const res = await fetch('https://nways.ng/maps/v1/fleet/contacts/ben_4fQ9xLm2Za', {
  method: 'PATCH',
  headers: { 'X-NWays-Api-Key': process.env.NWAYS_API_KEY, 'Content-Type': 'application/json' },
  body: JSON.stringify({
    "kind": "recipient",
    "name": "string",
    "phone": "string",
    "altPhone": "string",
    "email": "string",
    "placeName": "string",
    "address": "string",
    "doorCode": "string",
    "lat": 0,
    "lng": 0,
    "notes": "string",
    "itemDescription": "string",
    "packageSize": "string",
    "tags": [
      "string"
    ],
    "hours": "string",
    "default": true
  }),
})
const data = await res.json()
Python
import os
import requests

res = requests.patch(
    "https://nways.ng/maps/v1/fleet/contacts/ben_4fQ9xLm2Za",
    headers={"X-NWays-Api-Key": os.environ["NWAYS_API_KEY"]},
    json={"kind": "recipient", "name": "string", "phone": "string", "altPhone": "string", "email": "string", "placeName": "string", "address": "string", "doorCode": "string", "lat": 0, "lng": 0, "notes": "string", "itemDescription": "string", "packageSize": "string", "tags": ["string"], "hours": "string", "default": True},
    timeout=10,
)
data = res.json()

Response

Contact

FieldTypeDescription
idstringRequired. ben_… (recipient), plc_… (place) or cus_… (customer).
kindstringRequired. One of: recipient, place, customer.
namestringRequired.
phonestringRequired.
altPhonestring
emailstring
placeNamestringRecipients: the drop-off's name; customers: their latest drop-off's.
addressstring
doorCodestring
latnumber | nullRequired. null for a customer with no address kept.
lngnumber | nullRequired.
notesstring
itemDescriptionstring
packageSizestring | null
tagsstring[]
regularsintegerRecipients: repeating deliveries to them that haven't ended.
hoursstringPlaces
defaultbooleanPlaces: new deliveries in the console start from it.
deliveriesintegerCustomers
addressesintegerCustomers
lastDeliveryAtstring (date-time)Customers
createdAtstring (date-time)
updatedAtstring (date-time)
200 OK
{
  "id": "ben_4fQ9xLm2Za",
  "kind": "recipient",
  "name": "string",
  "phone": "string",
  "altPhone": "string",
  "email": "string",
  "placeName": "string",
  "address": "string",
  "doorCode": "string",
  "lat": 0,
  "lng": 0,
  "notes": "string",
  "itemDescription": "string",
  "packageSize": "string",
  "tags": [
    "string"
  ],
  "regulars": 0,
  "hours": "string",
  "default": true,
  "deliveries": 0,
  "addresses": 0,
  "lastDeliveryAt": "2026-10-15T09:00:00+01:00",
  "createdAt": "2026-10-15T09:00:00+01:00",
  "updatedAt": "2026-10-15T09:00:00+01:00"
}

Errors

  • default Error

Delete a contact (a customer is forgotten with their addresses)

DELETE https://nways.ng/maps/v1/fleet/contacts/{contactId}

Deliveries already made keep what they were given; a forgotten customer's deliveries stay with your fleet's retention.

Parameters

NameInTypeDescription
contactIdpathstringRequired. ben_… (recipient), plc_… (place) or cus_… (customer).
cURL
curl -X DELETE "https://nways.ng/maps/v1/fleet/contacts/ben_4fQ9xLm2Za" \
  -H "X-NWays-Api-Key: YOUR_API_KEY"
JavaScript
const res = await fetch('https://nways.ng/maps/v1/fleet/contacts/ben_4fQ9xLm2Za', {
  method: 'DELETE',
  headers: { 'X-NWays-Api-Key': process.env.NWAYS_API_KEY },
})
const data = await res.json()
Python
import os
import requests

res = requests.delete(
    "https://nways.ng/maps/v1/fleet/contacts/ben_4fQ9xLm2Za",
    headers={"X-NWays-Api-Key": os.environ["NWAYS_API_KEY"]},
    timeout=10,
)
data = res.json()

Response

Deleted

No content.

Errors

  • default Error

A contact's addresses

GET https://nways.ng/maps/v1/fleet/contacts/{contactId}/addresses

A customer's drop-offs, last used first, a page at a time (q, limit, pageToken); a recipient's or place's one address.

Parameters

NameInTypeDescription
contactIdpathstringRequired.
qquerystring
limitqueryintegerDefault: 25. ≥ 1, ≤ 100.
pageTokenquerystring
cURL
curl "https://nways.ng/maps/v1/fleet/contacts/string/addresses" \
  -H "X-NWays-Api-Key: YOUR_API_KEY"
JavaScript
const res = await fetch('https://nways.ng/maps/v1/fleet/contacts/string/addresses', {
  headers: { 'X-NWays-Api-Key': process.env.NWAYS_API_KEY },
})
const data = await res.json()
Python
import os
import requests

res = requests.get(
    "https://nways.ng/maps/v1/fleet/contacts/string/addresses",
    headers={"X-NWays-Api-Key": os.environ["NWAYS_API_KEY"]},
    timeout=10,
)
data = res.json()

Response

Addresses

FieldTypeDescription
addressesAddress[]Required.
addresses[].idstringRequired.
addresses[].namestringRequired.
addresses[].addressstringRequired.
addresses[].doorCodestringRequired. The NIPOST or GhanaPost code the address starts with ("" for none).
addresses[].latnumberRequired.
addresses[].lngnumberRequired.
addresses[].usesintegerRequired. Deliveries that went there.
addresses[].lastUsedAtstring (date-time)Required.
totalintegerRequired.
nextPageTokenstring
prevPageTokenstring
200 OK
{
  "addresses": [
    {
      "id": "adr_8KwP2nVd5T",
      "name": "string",
      "address": "string",
      "doorCode": "string",
      "lat": 0,
      "lng": 0,
      "uses": 0,
      "lastUsedAt": "2026-10-15T09:00:00+01:00"
    }
  ],
  "total": 0,
  "nextPageToken": "string",
  "prevPageToken": "string"
}

Errors

  • default Error