API Documentation
Integrate HoltWalker pathfinding into your project. Generate an API key from your dashboard, then start making requests.
Quick Start#
Get up and running in three steps:
Sign in with Discord and go to your dashboard
Create an API key — copy it immediately, it's only shown once
Make a request with your key in the X-API-Key header
curl -X POST https://api.holtwalker.com/generatePaths \
-H "Content-Type: application/json" \
-H "X-API-Key: YOUR_API_KEY" \
-d '{
"player": {
"members": true,
"settings": [{ "key": 10, "value": 0 }],
"varbits": [{ "key": 357, "value": 9 }]
},
"requests": [{
"start": { "x": 3113, "y": 9908, "z": 0 },
"end": { "x": 3093, "y": 3491, "z": 0 }
}]
}'Authentication#
All API requests require an API key passed via the X-API-Key header.
API keys start with sk_ and are generated from your dashboard. You can create multiple keys, name them, and toggle them active/inactive. The number of keys available depends on your plan.
Endpoints#
Generate one or more paths between coordinates. Accounts for quest requirements, skill levels, equipment, and transport edges. This is the primary endpoint and handles ~70% of API traffic.
{
"player": {
"members": true,
"attack": 70, "strength": 60, "defence": 45,
"settings": [{ "key": 10, "value": 0 }],
"varbits": [{ "key": 357, "value": 9 }],
"equipment": [{ "key": 1161, "value": 1 }],
"inventory": [{ "key": 1323, "value": 1 }]
},
"requests": [
{
"start": { "x": 3113, "y": 9908, "z": 0 },
"end": { "x": 3093, "y": 3491, "z": 0 }
}
]
}Find the nearest accessible bank from any tile. Returns the top 5 reachable bank locations ranked by path distance, with full access validation against your player state.
{
"player": {
"members": true,
"settings": [{ "key": 10, "value": 0 }],
"varbits": [{ "key": 357, "value": 9 }]
},
"start": { "x": 3222, "y": 3218, "z": 0 }
}WebSocket endpoint for real-time API usage feed. Connect via the dashboard or programmatically with an authenticated ticket. Events include request counts, response times, and endpoint breakdowns.
Web Walker Engine Integration#
If you're using Dax's Web Walker Engine, integration is straightforward — you only need to change two things in WebWalkerServerApi.java:
Change the endpoint URL
Update the WALKER_ENDPOINT constant to point to HoltWalker. The /walker/generatePaths and /walker/generateBankPaths paths used by the engine are fully compatible:
// Before
private static final String WALKER_ENDPOINT = "https://walker.dax.cloud";
// After
private static final String WALKER_ENDPOINT = "https://api.holtwalker.com";Add your API key header
In the post() method, add the X-API-Key header alongside the existing request properties:
connection.setRequestProperty("Method", "POST");
connection.setRequestProperty("Content-Type", "application/json");
connection.setRequestProperty("Accept", "application/json");
// Add this line — use the API key from your HoltWalker dashboard
connection.setRequestProperty("X-API-Key", "YOUR_API_KEY");That's it. The HoltWalker API is fully compatible with the Web Walker Engine request/response format. The same PathResult andPathStatus types are returned — no other code changes needed.
Rate Limits#
Each plan has a per-minute request cap. Rate limit information is included in every API response via headers:
| Header | Description |
|---|---|
| X-RateLimit-Limit | Your plan's requests-per-minute cap |
| X-RateLimit-Remaining | Requests remaining in the current window |
| X-RateLimit-Reset | Unix timestamp when the window resets |
| Retry-After | Seconds to wait (only on 429 responses) |
When you exceed your limit, the API returns 429 Too Many Requests. Back off and retry after the Retry-After period. See pricing for per-plan limits.
Error Handling#
The API uses standard HTTP status codes. All error responses include a JSON body with a message field.
| Status | Meaning |
|---|---|
| 200 | Success — path(s) returned |
| 400 | Bad request — invalid coordinates or missing fields |
| 401 | Unauthorized — missing or invalid API key |
| 429 | Rate limited — exceeded your plan's per-minute cap |
| 500 | Server error — retry after a brief wait |
{
"message": "Invalid API key",
"statusCode": 401
}Need help?
Check your usage on the dashboard or reach out if you need a custom integration.