Frequently Asked Questions
Account
How can I start using the PTV Developer APIs?
You need to sign up for a PTV account and then activate your free subscription of PTV Developer. If you already have a PTV account, you can directly activate your free product. No payment details are needed to activate your free product.
Can I activate more than one free subscription?
No. Every account can only activate one free subscription of PTV Developer but multiple paid subscriptions.
Where can I update my personal data?
You can use the avatar menu on the top right corner to reach the Manage Profile section and update your personal information.
Where can I delete my account?
In the Manage Profile section you have the possibility to delete your account. Please note that you can only delete your account if no subscription is active.
Developer Support
How can I generate API keys to start developing?
Within your product instance you can create, rename and delete API keys in the API Keys App.
How many API keys can I create using a free subscription?
For the free subscription one API key is included. If you need more API keys, please contact us and we will find a solution that fits best to your needs.
How do I use the API keys?
The API keys are needed to authenticate against PTV Developer APIs. Check the Quick Start of the API documentations for more details on the authentication options.
How can I run performance tests on PTV Developer APIs?
If you want to run performance or load tests, please contact us and we will find a solution that fits best to your needs.
How can I generate client classes for PTV Developer APIs?
What does the version number of PTV Developer APIs mean?
The version number consists of three fields, namely major.minor.bugfix, e.g. 1.2.3. The exact version number can be found in the API Changes of each PTV Developer API, the first two fields can also be found in the API specification.
All PTV Developer APIs will be backward compatible as long as the major version does not change (e.g. 1.x.x).
Changing the minor version (e.g. 1.2.x) denotes compatible API extensions so that there will be a benefit from updating the clients.
Changing the bugfix version (e.g. 1.2.3) denotes fixes which do not affect the API such as functional bugfixes, documentation etc.
How do PTV Developer APIs handle compatiblity?
Clients should follow some rules which are common practice in the communication with APIs to guarantee compatibility. We handle the following changes as being compatible:
- New operations.
- New optional properties in requests. There will never be new required properties in requests.
- New optional and required properties in responses, the client should be robust against these changes and be tolerant with unknown fields. Response properties marked as required give the client a hint that this property will always be present so that checks for existence can be omitted.
- New values in enumerations used only in requests.
- New values in enumerations used in responses if being sent only when explicitly requested by a new property introduced in the same version.
- New values in string properties flagged as 'x-extensible-enum', the client should implement a fallback mechanism for unknown values.
- Relaxing constraints of properties such as increasing array lengths, extending value ranges or removing string patterns.
Compatibility is guaranteed only for the messages sent and received (sometimes referred to as 'on the wire'). Any code generated from the API specification is not covered. The semantics of the properties will be stable, but the contents of properties may change as algorithms evolve, results will improve and data will be updated regularly.
Properties may be marked as deprecated. That means that they will still be supported but their use is discouraged. See the documentation for information on which property to use instead.
What does the experimental tag for PTV Developer APIs mean?
The term "experimental" denotes a service or feature that is still in the early phases of development. It could still be going through extensive testing and not be completely stable.
- API stability: An experimental feature or service's API may be unstable. This implies that depending on the input or the direction of the work, it could alter regularly or, in certain cases, it might be entirely removed.
- Completeness: A feature or service that is still being tested may not be fully functioning. It offers a sneak preview of something that is still in the development stage.
- Documentation: It is labelled with the tagline [EXPERIMENTAL].
What does the preview tag for PTV Developer APIs mean?
The term "preview" refers to a service or feature that is more developed than an experimental one. Although the core functions are established and reliable, it could still be missing some features that are planned for the full release.
- API Stability: A preview feature or service's API is stable, indicating users may anticipate predictable behavior and replies.
- Completeness: A feature or service is more comprehensive than an experimental one. The majority of the functions are available, however certain intended features could be absent at this time; these features will be introduced in the future.
- Documentation: It is labelled with the tagline [PREVIEW].
How do I allow PTV Developer in my firewall?
If your company requires manual approval of outgoing connections for security reasons, you can add the following DNS names to your firewall:
- PTV Developer API Usage: api.myptv.com
- PTV Developer Documentation: developer.myptv.com
- PTV Developer Code Samples: developer-applications.myptv.com
- PTV Logistics Account: myptv.com / login.myptv.com / account.myptv.com / gateway.myptv.com / legal.myptv.com / curie-static.myptv.com
- PTV Logistics Helpdesk Portal: support.ptvlogistics.com
Note that the IPs these DNS names resolve might change at any time and can differ depending on the geographical region. Specific functionality can require allowing additional third party services (e.g. initial sign up in the browser requires reCAPTCHA (google.com) to be accessible).
Licensing & Terms
Can I use a free subscription for productive/commercial use of my application?
The free subscription is only for testing and integration purposes. If you want to roll out your application for commercial use, you need to contact us and we will find a solution that fits best to your needs.
What are the terms of use?
You can find the terms of use for different regions by using the according link below.
EU - English
EU - German
US - English
What are the limits for the free and standard subscriptions?
The Free Plan is intended for testing of the API services and can be used free of charge with a simplified registration. The Standard Plan offers productive use for simple applications. This plan can easily be extended with a pay-as-you-go model. All limits of our freely bookable plans are listed below. For more complex use cases, we provide our customers with individual pricing plans that have no separate limits. Please get in touch with us for further information.
API | Method | Free Plan | Standard Plan |
---|---|---|---|
Geocoding & Places API | - | No additional limit | No additional limit |
Geocoding & Places OSM API | - | No additional limit | No additional limit |
Raster Maps API | - | No additional limit | No additional limit |
Vector Maps API | - | No additional limit | No additional limit |
Vector Maps OSM API | - | No additional limit | No additional limit |
Map Matching API | - | 16.200 positions per track | No additional limit |
Routing API | - | No additional limit | No additional limit |
Routing OSM API | - | No additional limit | No additional limit |
Matrix Routing API | calculateMatrix (sync) | 250 matrix relations per request | 2000 origins and 2000 destinations per request |
startMatrixCalculation (async) | 250 matrix relations per request | 2000 origins and 2000 destinations per request | |
Matrix Routing OSM API | calculateMatrix (sync) | 250 matrix relations per request | No additional limit |
startMatrixCalculation (async) | 250 matrix relations per request | No additional limit | |
EWS Road Distance API | getRelation | 100 requests per month | 100 requests per month |
Route Optimization API | createPlan | 25 transports per request | No additional limit |
Route Optimization OptiFlow API | startOptimization | 20 locations per request 20 orders per request 5 vehicles per request 5 minutes runtime per request | 25 locations per request 25 orders per request 5 vehicles per request 5 minutes runtime per request |
Sequence Optimization API | startAndCreateOptimizedRoute | 25 transports per request | No additional limit |
Loading Space Optimization API | startBinPacking (async) | 5 bins per request 100 items per request | No additional limit |
Data API | - | No additional limit | No additional limit |
Account API | - | No additional limit | No additional limit |
What are request limits?
Request limits define a maximum amount of objects in a single call of the services (e.g. number of waypoints per routing request). If the limits are reached it is recommended to split up the amount of objects into multiple requests. For some APIs there are no request limits because the endpoints handle only single objects (e.g. map tiles, addresses or coordinates). Depending on your current subscription lower or higher limits may apply.
Find the request limits per service in the table below.
API | Method | Request limits |
---|---|---|
Geocoding & Places API | - | No request limits |
Geocoding & Places OSM API | - | No request limits |
Raster Maps API | - | No request limits |
Vector Maps API | - | No request limits |
Vector Maps OSM API | - | No request limits |
Map Matching API | createMatchedTrack | 32,000 positions per request |
Routing API | calculateRoute | 25 waypoints per request |
calculateRoutePost | 250 waypoints per request | |
Routing OSM API | calculateRoute | 25 waypoints per request |
Matrix Routing API | calculateMatrix (sync) | 250,000 matrix relations per request 10,000 origins and 10,000 destinations per request |
startMatrixCalculation (async) | 4,000,000 matrix relations per request 200,000 origins and 200,000 destinations per request | |
Matrix Routing OSM API | calculateMatrix (sync) | 250,000 matrix relations per request |
startMatrixCalculation (async) | 4,000,000 matrix relations per request (250,000 matrix relations for time-dependent matrices) | |
EWS Road Distance API | - | No request limits |
Route Optimization API | createPlan | 3,000 transports per request |
Route Optimization OptiFlow API | startOptimization | 50,000 locations per request Depending on your current subscription lower or higher limits may apply. |
Sequence Optimization API | startAndCreateOptimizedRoute | 500 transports per request |
Loading Space Optimization API | packBins (sync) | 2 bins per request 100 items per request |
startBinPacking (async) | 100 bins per request 10,000 items per request | |
Data API | - | No request limits |
Account API | - | No request limits |
What are rate limits?
Rate limits are the number of requests per given time period a single API key can make. If those limits are exceeded, the error code 'GENERAL_RATE_LIMIT_EXCEEDED' is returned and further requests will temporarily be rejected (sliding window based). Please note that the rejection in one API does not affect other APIs.
Find the rate limits per service in the table below.
API | Method | Rate limits |
---|---|---|
Geocoding & Places API | searchLocationsByText | 2,000 requests per minute |
getSuggestionsByText | 2,000 requests per minute | |
searchLocationsByAddress | 2,000 requests per minute | |
getSuggestionsByAddress | 2,000 requests per minute | |
searchLocationsByPosition | 10,000 requests per minute | |
All other methods | 600 requests per minute | |
Geocoding & Places OSM API | All methods | 600 requests per minute |
Raster Maps API | getSatelliteTile | 2,500 requests per minute |
All other methods | 10,000 requests per minute | |
Vector Maps API | All methods | 10,000 requests per minute |
Vector Maps OSM API | All methods | 10,000 requests per minute |
Map Matching API | matchPosition | 10,000 requests per minute |
All other methods | 300 requests per minute | |
Routing API | startAndCreateReachableAreas (async) | 50 requests per minute |
startAndCreateReachableLocations (async) | 50 requests per minute | |
All other methods | 500 requests per minute | |
Routing OSM API | startAndCreateReachableAreas (async) | 50 requests per minute |
All other methods | 500 requests per minute | |
Matrix Routing API | calculateMatrix (sync) | 500 requests per minute |
startMatrixCalculation (async) | 50 requests per minute | |
getStatus | 3,000 requests per minute | |
All other methods | 100 requests per minute | |
Matrix Routing OSM API | calculateMatrix (sync) | 500 requests per minute |
startMatrixCalculation (async) | 50 requests per minute | |
getStatus | 3,000 requests per minute | |
All other methods | 100 requests per minute | |
EWS Road Distance API | All methods | 600 requests per minute |
Route Optimization API | startOptimization | 50 requests per minute |
getOperationStatus | 3,000 requests per minute | |
All other methods | 100 requests per minute | |
Route Optimization OptiFlow API | startOptimization | 250 requests per minute 1 optimization at a time |
All other methods | 5000 requests per minute | |
Sequence Optimization API | startAndCreateOptimizedRoute | 50 requests per minute |
getOptimizedRoute | 3,000 requests per minute | |
All other methods | 100 requests per minute | |
Loading Space Optimization API | packBins (sync) | 20 requests per minute |
startBinPacking (async) | 50 requests per minute | |
getStatus | 3,000 requests per minute | |
All methods | 100 requests per minute | |
Data API | All methods | 300 requests per minute |
Account API | All methods | 300 requests per minute |
How are transactions calculated?
To measure the transactions 1k packages are used as measurement unit. Your usage of all offered services is simply added up.
API | Method | 1k transactions correspond to... |
---|---|---|
Geocoding & Places API | searchLocationsByText | 1,000 texts |
getSuggestionsByText | 100,000 suggestions | |
searchLocationsByAddress | 1,000 addresses | |
getSuggestionsByAdress | 100,000 suggestions | |
searchLocationsByPosition | 1,000 positions | |
searchPlacesByText | 1,000 texts | |
searchPlacesByPosition | 1,000 positions | |
searchPlacesByArea | 1,000 areas | |
Geocoding & Places OSM API | searchPlacesByText | 1,000 texts |
searchPlacesByAddress | 1,000 addresses | |
searchPlacesByPosition | 1,000 positions | |
Raster Maps API | getImageTile | 15,000 image tiles |
getDataTile | 15,000 data tiles | |
getSatelliteTile | 5,000 satellite tiles | |
Vector Maps API | getVectorTile | 15,000 vector tiles |
getTile (overlays) | 15,000 vector tiles | |
Vector Maps OSM API | getVectorTile | 15,000 vector tiles |
Map Matching API | matchPosition | 10,000 positions 5,000 positions with segment attributes |
createMatchedTrack | 1,000 tracks | |
getMatchedTrack | 250 tracks with segment attributes | |
Routing API | calculateRoute | 1,000 routes |
calculateRoutePost | 1,000 routes | |
getRouteByRouteId | 1,000 routes | |
getEstimatedTimeOfArrival | 4,000 requests | |
calculateReachableAreas (sync) | 500 waypoints | |
startAndCreateReachableAreas (async) | 500 waypoints | |
startAndCreateReachableLocations | 500 waypoints | |
Routing OSM API | calculateRoute | 1,000 routes |
calculateReachableAreas (sync) | 500 waypoints | |
startAndCreateReachableAreas (async) | 500 waypoints | |
Matrix Routing API | calculateMatrix (sync) | 1,000 matrix relations |
startMatrixCalculation (async) | 1,000 matrix relations | |
Matrix Routing OSM API | calculateMatrix (sync) | 1,000 matrix relations |
startMatrixCalculation (async) | 1,000 matrix relations | |
EWS Road Distance API | getRelation | 1,000 relations |
Route Optimization API | startOptimization | 60 transports 30 transports when using Optimization Premium |
Route Optimization OptiFlow API | startOptimization | 30 orders |
Sequence Optimization API | startAndCreateOptimizedRoute | 120 transports |
Loading Space Optimization API | packBins (sync) | 10 bins |
startBinPacking (async) | 10 bins | |
Data API | - | No transactions charged |
Account API | - | No transactions charged |
Please note that the error code 'GENERAL_QUOTA_EXCEEDED' is returned, if the transaction limit of your subscription is exceeded. If you need more transactions, please contact us and we will find a solution that fits best to your needs.