Getting started with Navico API

Navico APIs (Application Programming Interfaces) are designed to help in efficient development of software applications, which can be used by professional mariners and leisure boaters.

With Navico APIs you can build your own applications for:

Through these APIs you can get access to Navico product catalogues, nautical charts and value added data (such as weather, ports and routes, etc.), communication protocols and data, analytics services, smart data processing algorithms (e.g. weather-based route optimization) and much more.

About This Service

Navico APIs allow for programmatic access to Navico data and services via RESTful HTTP protocol,

Typically APIs can be used with one of the following plans:

Standard plan is free but may impose some limitations on use (e.g. quota on number of calls, accessibility of detailed data, etc.). Premium plans are not free but provide full access to the information.

Typically you can Sign-up and implement your application with the Standard plan and upgrade to the Premium when the need arises (e.g. facilitate development with Free plan and upgrade to Premium before going public).

Authentication

Access to most of APIs requires an access token that connects web requests to your account.

  1. Please email api.support@navico.com to get registered. A unique client id and secret will be sent to you.
  2. Request an access token by performing a POST request to the /oauth/client_credential/accesstoken endpoint with the grant_type set to the client_credentials and Authorization header set to combination of client_id and client_secret obtained at the previous step Authorization: Basic Base64($CLIENT_ID:$CLIENT_SECRET).

Example (fictional secrets/bearer)

_CLIENT_ID_ = 6TXAv4h0n9mmi8gdgx4zRyPeMdusnrcH
_CLIENT_SECRET_ = W7l1hdIx0TBz3yjs
_AUTH_HEADER_ = Basic NlRYQXY0aDBuOW1taThnZGd4NHpSeVBlTWR1c25yY0g6VzdsMWhkSXgwVEJ6M3lqcw==

curl -X POST 'https://api.navico.com/v1/oauth/client_credential/accesstoken?grant_type=client_credentials' -H 'Authorization: Basic NlRYQXY0aDBuOW1taThnZGd4NHpSeVBlTWR1c25yY0g6VzdsMWhkSXgwVEJ6M3lqcw=='

N.B. "Secrets" must never be exposed in the client application (settings, UI, plain-text code, etc.). Specifically, for web application do not use client_id and client_secret in html, instead perform server-side processing to obtain accesstoken and then inject that token into the client page. Here how this server-side code may look like (JavaScript, substitute _CLIENT_ID_ and _CLIENT_SECRET_ with your pair of secrets):

    const options = {
        url: 'https://api.navico.com/v1/oauth/client_credential/accesstoken?grant_type=client_credentials',
        method: 'POST',
        auth: {  client_id: _CLIENT_ID_,  client_secret: _CLIENT_SECRET_  }
    };

    request(options, (error, response, body) => {

        if (response.statusCode === 200 && body) {

            let oAuthResp = JSON.parse(body);
            let access_token = oAuthResp.access_token; // this is the token string to be used in further requests
            let expires_in = oAuthResp.expires_in; // generated token validity in seconds

            // pass access_token and other params to callback  
            // e.g. template your html with token value or do other processing per your needs...
        }
    });

Note:

Versioning

Each Navico API is versioned with a version string specified in the base URL (e.g. /v1). The version can be incremented independently from other APIs. Using the newest available API is always encouraged.

Rate limits

Navico APIs have rate limits that cap the number of requests that can be made against an endpoint. If you exceed a rate limit, your request will be throttled and you will receive HTTP 429 Too Many Requests responses from the API.

CORS

Navico web services support Cross-Origin Requests.

HTTPS

All requests to Navico APIs must be made via HTTPS.

Next

Browse list of avilable APIs.