Developer portal
A public API, an OpenAPI spec and a CLI for Visit Dzaleka
Everything on this page is free to use and needs no key. The read-only API serves live tour pricing, camp zones, meeting points, community events and blog content. Use it to answer questions about visiting Dzaleka, or to build a booking flow into your own product.
Quickstart
No signup, no key, no client library. Fetch current prices:
curl https://visit.dzaleka.com/api/public/pricingPrices are integers in Malawi Kwacha (MWK). Read them live rather than caching a figure — rates are edited by administrators and change without notice.
[
{ "groupSize": "individual", "basePrice": 20000, "currency": "MWK" },
{ "groupSize": "small_group", "basePrice": 55000, "currency": "MWK" },
{ "groupSize": "large_group", "basePrice": 85000, "currency": "MWK" }
]Machine-readable files
Every operation has a unique operationId, a description and a typed response schema, so it converts straight into LLM function-calling definitions.
What this site is authoritative for, when an agent should reach for it, and the etiquette to pass on to visitors.
A short JSON index of every public operation.
RFC 9727 link set pointing at the spec and these docs.
Command line
Query the API without writing an integration:
npx visit-dzaleka pricing
npx visit-dzaleka zones
npx visit-dzaleka events --upcoming
npx visit-dzaleka verify DVS-2024-001
npx visit-dzaleka pricing --json | jq '.[0].basePrice'Endpoints
All operations are GET and require no authentication. Rate limit is 100 requests per minute per IP.
Tours
/api/public/pricingList current tour prices
getTourPricing/api/public/special-offersList active public discounts
listSpecialOffers/api/public/feeds/things-to-doGet the Google Things to Do product feed
getThingsToDoFeedPlaces
/api/public/zonesList camp zones
listZones/api/public/meeting-pointsList tour meeting points
listMeetingPoints/api/public/points-of-interestList points of interest
listPointsOfInterest/api/public/transport-partnersList transport partners
listTransportPartnersCommunity
/api/public/community-listingsList community businesses and experiences
listCommunityListings/api/public/community-listings/{id}Get one community listing
getCommunityListing/api/community/eventsList community events
listCommunityEvents/api/community/servicesList community services
listCommunityServices/api/community/resourcesList community resources
listCommunityResources/api/community/newsList community news
listCommunityNews/api/community/searchSearch community content
searchCommunityContent
/api/public/reviewsList published visitor reviews
listPublicReviews/api/blogList published blog posts
listBlogPosts/api/blog/{slug}Get one blog post
getBlogPostBookings
/api/public/bookings/verify/{reference}Verify a booking reference
verifyBookingErrors
Failures return JSON, never an HTML page. Branch on code, which is stable; treat message as human-facing.
{
"error": true,
"code": "not_found",
"message": "No API endpoint matches GET /api/nope.",
"status": 404,
"hint": "Fetch https://visit.dzaleka.com/openapi.json for available operations.",
"requestId": "01M10T0C3P30ZRD86HME55NQEA",
"documentation": "https://visit.dzaleka.com/developers"
}Markdown content
Every public page has a markdown representation. Ask for it with an Accept header — responses carry Vary: Accept, so caches keep the two variants apart.
curl -H "Accept: text/markdown" https://visit.dzaleka.com/plan-your-tripWriting data
Creating bookings, managing guides and pulling reports need an API key. There is no self-service signup: keys are issued to partner organisations individually, after a conversation about what you are building. Email bakari@mail.dzaleka.com to request access.
curl https://visit.dzaleka.com/api/bookings \
-H "Authorization: Bearer dvz_your_api_key_here"Questions about the API, or want a key? Email bakari@mail.dzaleka.com.