Sandbox
A real Keynetic workspace with a real fleet, a published key and no paperwork. It runs the same code as every operator account, so what passes here passes in production. Book what you like: the workspace is swept hourly and the cars come back.
Your key
Send it as X-Api-Key, or as MessagePassword on the XML gateway. It is public and shared, so treat the data in there as public too.
kpk_live_75b6b2489b74ab39a86c163c91ad3bfae3a40439a0f17011
Rate limit 60 requests per minute. A production key gets 240.
What is in the workspace
Two stations with separate fleets, so availability really is per station and one-way behaves like one-way.
| Station | Also accepts | Hours (local) | One-way |
|---|---|---|---|
| SBX-APT | AUA, SBXAPT | 07:00-22:00, weekends 08:00-20:00 | Allowed |
| SBX-CITY | SBXCITY | 08:00-18:00, Sat to 13:00, closed Sun | Refused, on purpose |
Classes: ECAR (ECMR), CCAR, IFAR and FVAR, a van with exactly one car in the fleet so a second overlapping booking sells it out. Minimum driver ages run from 21 to 25. Extras include SCDW, CHILD_SEAT (capped at 6 days), ADDITIONAL_DRIVER and GPS; the one-way, airport and young driver fees are mandatory where they apply. The timezone is America/Aruba, which has no daylight saving, and prices are USD with 8 percent tax.
A full cycle in five calls
export KEY=kpk_live_75b6b2489b74ab39a86c163c91ad3bfae3a40439a0f17011
export BASE=https://keynetic.online/api/v1/partner
# 1. Is the connection healthy?
curl -H "X-Api-Key: $KEY" $BASE/selftest
# 2. What can I sell, and for how much?
curl -H "X-Api-Key: $KEY" \
"$BASE/availability?pickup_location=SBX-APT&pickup_at=2026-10-01T10:00:00&return_at=2026-10-05T10:00:00&driver_age=23&extras=CHILD_SEAT:1"
# 3. Book it (partner_reference is yours, and is the idempotency key).
curl -X POST -H "X-Api-Key: $KEY" -H "Content-Type: application/json" \
$BASE/bookings -d '{
"class_code": "CCAR",
"pickup_location": "SBX-APT", "return_location": "SBX-APT",
"pickup_at": "2026-10-01T10:00:00", "return_at": "2026-10-05T10:00:00",
"customer": { "first_name": "Test", "last_name": "Broker",
"email": "[email protected]" },
"driver_age": 23, "extras": [{ "code": "CHILD_SEAT", "quantity": 1 }],
"partner_reference": "MY-REF-1"
}'
# 4. Price a change before you show it to the traveller.
curl -X PATCH -H "X-Api-Key: $KEY" -H "Content-Type: application/json" \
"$BASE/bookings/MY-REF-1?preview=1" -d '{ "return_at": "2026-10-07T10:00:00" }'
# 5. Cancel.
curl -X DELETE -H "X-Api-Key: $KEY" $BASE/bookings/MY-REF-1Cases worth testing here
- Book
FVARtwice over the same dates. The second answers 409unavailable, and availability shows it at 0 while still quoting a price. - Pick up at
SBX-APTand return atSBX-CITY: refused withone_way_return(XML 225). Reverse it forone_way_pickup(224). - Ask for a 20:00 pickup at
SBX-CITY: refused withclosed(XML 227). Sunday there is closed all day. - Quote with and without
driver_ageand compare the young driver fee: without an age it is listed with aconditionand left out of the total. - Send the same
partner_referencetwice. The second returns 200 withreplayed: trueand the original reference. - Book a 10-day rental with a child seat and check
charged_unitsstops at the 6-day cap. - Fetch a booking that is not yours, for example
KN-2026-00001: 404, never someone else's data.
House rules
- The key is public and shared. Do not put real traveller data in it, and expect other people's bookings in the workspace.
- Bookings are cancelled and the fleet released every hour. A booking you made can disappear; that is the sweep, not a bug.
- No email or WhatsApp leaves the sandbox, so use any address you like.
- 60 requests per minute. Over that you get 429 with Retry-After.
Ready for a real operator? The JSON API and the XML gateway are identical in production; only the key changes. Email [email protected].