General FAQs

Q: How do I authenticate

A: All requests to the Bestmile APIs have to be authenticated with an API key.

You can create and manage API keys in the Bestmile Dashboard. To authenticate a request to the Bestmile REST APIs, send an API key as the apikey http header:

  curl --request GET '' --header 'apiKey: d3dc...'

Q: How can I know if the API is available?

A: You can see the current availability of the Bestmile platform on the status page.

On-Demand Services Booking API

Q: Is it possible to permanently delete bookings?

A: No, it’s not possible

We designed it in such a way so that booking history is never lost.

Q: What are the possible state transitions for booking status?

A: The list of possible state transitions are available in the Booking API guide

Q: Is there a push interface for travelers to get notified their status has changed or do I have to busy pull?

A: Yes, we provide a Webhook API to notify your application when an event happens in your account.

Webhooks are particularly useful for asynchronous events. See the Webhook API reference for more details.

Technical Details

Q: Are there any recommendations in terms of minimum required network speed in MB/sec, minimum data processing speed for the data sent and received, or any other recommended hardware or software specs you want us to be aware of?

A: We don’t have minimum required network speeds or data processing speed defined yet.

The only thing is that we suggest vehicles to send their state to the supervisor at a frequency of 4Hz, and Bestmile’s supervision engine currently doesn’t have timeouts on message answers. Additionally, Bestmile TCP connections are set to time out if nothing has been sent for more than 20 seconds.

Q: What is the size of the data packets sent and received and how many packets are sent/received each minute on average?

A: Packets sent by the vehicle weigh approximately 200 bytes and are sent at a frequency of 4Hz, i.e. 240 packets sent per minute.

Packets sent by the Bestmile supervision engine are very occasional. For example, the size of packets defining missions depends on the length of the missions we send and the granularity of the waypoints required by the vehicle. A 500-meters-long mission weighs approximately 2 kB, and is sent by the supervisor every time you reach a pick-up/drop-off location. Other messages are mostly triggers, very lightweight, weighing less than 200 bytes.

Q: Can you briefly mention the security protocols you follow?

A: Bestmile backend is cloud-based and currently hosted on AWS, but this is not a necessity.

Only vehicles and our authentication proxy are allowed to directly access it. Vehicles do it via VPN or TCP over SSL. User interfaces use the authentication proxy via HTTPS, which check the rights to access the requested data before forwarding the requests to the backend. What can you say about availability and downtime of Bestmile’s supervision engine? Our platform has a very high availability. Once every 2 weeks, we release new versions which result in less than 5 seconds of downtime. However, the environment we provide to our partners for development purposes have slightly different requirements and their availability is not guaranteed to be as high as our production environment.

Q: What is the probability of errors/exceptions during communication (at your end such as in network or in code/programming aspects etc.)?

A: All our software releases go through several steps of quality assurance, including automated unit and integration tests, automated end-to-end tests, and the final go is always done through a final human check to minimize risks of regression.

In terms of communication errors, we developed several recovery strategies to handles edge-cases that could result from connection losses, corrupted messages or incoherent states between the vehicle and its supervisor, in order to re-establish as quickly as possible healthy synchronized states on both sides.