Optimization API

A newer version of Route Optimization API is available.
A newer version of the API is available and is recommended for all users. Learn about the latest optimization features at Route Optimization Flexible API

Introduction

Nextbillion.ai Optimization API computes and returns an optimized route between an origin and destination which have multiple stop points in between. With NextBillion.ai's Route Optimization API you get.

  • Optimized routing between way points

  • Highly accurate ETAs with customized routes

  • Roundtrip optimization with customized destinations

A list of all parameters is specified in the next section.

Parameters

Loading..

Response Schema

Loading..

Query Limits

Nextbillion.ai allows a maximum rate limit of 6000 queries per minute or 100 queries/second for continuous requests.

Note: We can increase the quota if needed on request. Contact [email protected] for more details.

Examples

Sample API Request

{{base_url}}/optimization/json?coordinates=41.35544869444527,2.0747669962025292|41.37498154684205,2.103705 4530396886|41.38772862000152,2.1311887061315526&destination=last&key={{api_key}}&mode=4w&source=first& roundtrip=false&with_geometry=true

For the above example, here are the parameters we have used-

  • We have set 3 coordinates separated by pipe symbol.

  • We have set the destination property equal to last. This means that the last coordinate in our given list will be treated as the destination.

  • The source property is set to first, so the first coordinate pair in the coordinates object will be treated as the source.

  • We have set mode as 4w which will return a route pertaining to 4 wheelers only.

  • The roundtrip property is set to false, so there will be no roundtrip returned.

  • By setting the with_geometry property as true, we will ensure that the route geometry is returned for each leg of the journey.

Sample API Response

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
{
  "code": "Ok",
  "waypoints": [
    {
      "name": "",
      "location": {
        "latitude": 41.35544869444527,
        "longitude": 2.0747669962025292
      },
      "trips_index": 0,
      "waypoint_index": 0
    },
    {
      "name": "",
      "location": {
        "latitude": 41.37498154684205,
        "longitude": 2.1037054530396886
      },
      "trips_index": 0,
      "waypoint_index": 1
    },
    {
      "name": "",
      "location": {
        "latitude": 41.38772862000152,
        "longitude": 2.1311887061315526
      },
      "trips_index": 0,
      "waypoint_index": 2
    }
  ],
  "trips": [
    {
      "geometry": "sjc{mA_hs}BtDcGlHkMrEgIpD}H~A}ErAqGj@iFRaHYwI_AsJi@_GcB_PIw@c@_JK{HJwHp@{LHwGAkFr@so@ VuYTcYNsJXqG|@wLdC}PhAmEbB_ExDaIzPmKx@dArAr@v@N^@f@GXE^Sn@m@|@_Bd@oBNiBUmCc@oBi@m@iAi@{@ [mAIkNqe@eTix@iHqXeOod@gC{Hy`@cmAiOme@}D{LoEgNqJeZ}Ii\\cM}e@oEyPsHkWcDiNsAyFk@cDi@aDk@eF{DcYg@ cF{@oFWyBiDuRq@{LhD}Ava@yQ`HrA~Al@~ApAbBhB~ArBlA|BbCxH~AzJElFOfGi@nEsAlFoB|EiBfDyHtGeEnD{ElCuDjAa F~AwD`AiDbAyAx@{@~Bc@V{@^}A\\uGdB_Ex@_@DgNdC{@NyOzCwMlAgCHoHXwFPsLFkQKcBGsLc@_Mq@oLcAoJcAuG w@yHuAwJuBwFkAgHeBcJuB}IqBgAWwFoAsu@wP{G}AaASiB]}WeFeGmAiCg@mMwCaJaCkEiAqFeAkB_@qB_@gFaAaOi Di@KiSmEeNsC_NgCiJgBkZcGqUcFsMkCaB]kAW{KwByA[_Ey@qAYaWsFmXuH{JoD}QaHuEaCmNqHyOsIkM{IwGsF_WyRyH _Hg[}WyJeJ_[kV}LkIaEaCwG{DiN}HqQyHgE_B_EyAe@Q}@]eKuDiAe@eA[qUiGeMkCcAQuFuDsAq@sC{A{As@_LaEuKwD_Jy C{LaFmLoF{KyFwHcEgIeEiFoCkGoEoYcTeB{AwEcF_BmByAkBaAiCsAwDYsBgRl@e_@nAb@iQrAgj@d@uRr@oYlDc|@\\yMt @uZlAuZJwCFqBf@{F?eFzDu}ATgIHuINqH`@aMb`@e]tZkXdNoMfBuAvI}GbJwI|@^p@L~@L|BUbCoBjA{CRqD?gAi@aBu@iBa Ak@gBQu@?cCVkA|@_AxAi@dBM~ACnCwJtIiLpKeUbS{o@jl@yG|FQzI?bDQ|CIvFOvCUnIuEf_BUzFEtAOdHu@dTMfJi@jQaB| l@sBbu@iAt`@mHlGgA~@u@^kA^gARaAHkBCmAU_Cq@{Aq@}A}@gBeA}AsA_CiCiByBqAiBgAqA}@yAi@}@aGuIwEiHg@y @yBkDyEiH{FwJiEoHcHsHkB}CeBuCwIoNsE}GqDmFmFyHcEaF}CoDg@yC{FqGmEaGeEwFsJqM{AaCmByCqD_Hi@mAq@{AyB iG}@yC_A}Dc@}B}@sE_@aCy@oFgAoHmA}HkB}I_@oAQo@a@cAk@}AwAwBgFqGeCcCo@e@cAk@iAg@{CwA[QqCo@kD w@aAOkEo@sNaCuF_BmCqA{DsCm@{@gBsB_@i@w@cBg@cAi@sA_AaDk@mC[oBiAkBsH{_@{D_SsC{Ni@gDUsAmGoYqK{ i@[aBuAeFo@qBaAgBcAoA{@yDmC}NmC{D_CcNkEcWgAeGy@gD_AeGeAwF]uBu@wDOcAsCaOgF_Xi@mGoBmIwDcVo@iFm _@oaCiEmQmAsH{AqJYgBaDgT{AcIaEwX_CkU|DqZ^mMgJcl@uCiReUwyAeQ_z@gOg_AaAoFuB_MkEsVgCkQIg@SiAmA{GmFq ZoE_WmByKk@qDmRgmAoEmYuB}M_BmKcHae@eBgL{AuJeMcx@k@eESwA_A}FwEuVwB}Kk@sDw@sF}DaX_FqXmJog@_BuI sBuMuAyIa@mCwIuk@oBaLU{A}AyJk@sDgCiPiAkH_DcScEyW`ZaK|WcJ|d@eQs@_FeFi^wCg[kQzN",
      "legs": [
        {
          "distance": 4777.4,
          "duration": 561.1064897726275,
          "summary": "Carretera del Hospitalet, Ronda de Dalt",
          "steps": [
            {
              "distance": 547.3,
              "duration": 64.28048349574225,
              "geometry": "sjc{mA_hs}BtDcGlHkMrEgIpD}H~A}ErAqGj@iFRaHYwI_AsJi@_GcB_PIw@c@_JK{HJwHp@{LHwGAkFr@so@V uYTcYNsJXqG|@wLdC}PhAmEbB_ExDaIzPmK"
            },
            {
              "distance": 23.4,
              "duration": 2.7483342112193836,
              "geometry": "}fa{mAq|~}Bx@dArAr@v@N^@f@GXE^Sn@m@"
            },
            {
              "distance": 21,
              "duration": 2.4664537792994468,
              "geometry": "e{`{mAuz~}B|@_Bd@oBNiBUmC"
            },
            {
              "distance": 872.7,
              "duration": 102.49877205688702,
              "geometry": "gx`{mA}h_~Bc@oBi@m@iAi@{@[mAIkNqe@eTix@iHqXeOod@gC{Hy`@cmAiOme@}D{LoEgNqJeZ}Ii\\cM} e@oEyPsHkWcDiNsAyFk@cDi@aDk@eF{DcYg@cF{@oFWyBiDuRq@{L"
            },
            {
              "distance": 77,
              "duration": 9.043663857431305,
              "geometry": "ksg{mAckq~BhD}Ava@yQ"
            },
            {
              "distance": 252.5,
              "duration": 29.656170441576684,
              "geometry": "ikf{mA{`r~B`HrA~Al@~ApAbBhB~ArBlA|BbCxH~AzJElFOfGi@nEsAlFoB|EiBfDyHtGeEnD{ElCuDjAaF~ AwD`AiDbAyAx@{@~Bc@V{@^"
            },
            {
              "distance": 1817.2,
              "duration": 213.4304670353788,
              "geometry": "kng{mAcln~B}A\\uGdB_Ex@_@DgNdC{@NyOzCwMlAgCHoHXwFPsLFkQKcBGsLc@_Mq@oLcAoJcAuGw @yHuAwJuBwFkAgHeBcJuB}IqBgAWwFoAsu@wP{G}AaASiB]}WeFeGmAiCg@mMwCaJaCkEiAqFeAkB_@qB_@gFaAaOiDi@K iSmEeNsC_NgCiJgBkZcGqUcFsMkCaB]kAW{KwByA[_Ey@qAYaWsFmXuH{JoD}QaHuEaCmNqHyOsIkM{IwGsF_WyRyH_Hg[}Wy JeJ_[kV}LkIaEaCwG{DiN}HqQyHgE_B_EyAe@Q}@]eKuDiAe@eA[qUiGeMkCcAQ"
            },
            {
              "distance": 364.5,
              "duration": 42.810590597840395,
              "geometry": "mue|mAmfy~BuFuDsAq@sC{A{As@_LaEuKwD_JyC{LaFmLoF{KyFwHcEgIeEiFoCkGoEoYcTeB{AwEcF_BmB yAkBaAiCsAwDYsB"
            },
            {
              "distance": 91.7,
              "duration": 10.770181502940918,
              "geometry": "qgk|mAcd}~BgRl@e_@nA"
            },
            {
              "distance": 327.1,
              "duration": 38.41795386708805,
              "geometry": "_{l|mAe`}~Bb@iQrAgj@d@uRr@oYlDc|@\\yMt@uZlAuZJwC"
            },
            {
              "distance": 211.7,
              "duration": 24.864203098937757,
              "geometry": "qil|mA_td_CFqBf@{F?eFzDu}ATgIHuINqH`@aM"
            },
            {
              "distance": 171.3,
              "duration": 20.11921582828549,
              "geometry": "s_l|mA{qi_Cb`@e]tZkXdNoMfBuA"
            },
            {
              "distance": 0,
              "duration": 0,
              "geometry": "kpi|mAszk_C"
            }
          ]
        },
        {
          "distance": 4335.4,
          "duration": 509.1935102273724,
          "summary": "Avinguda Diagonal, Avenida Diagonal",
          "steps": [
            {
              "distance": 47,
              "duration": 5.520158458432095,
              "geometry": "kpi|mAszk_CvI}GbJwI"
            },
            {
              "distance": 44.2,
              "duration": 5.191297954525503,
              "geometry": "ozh|mAinl_C|@^p@L~@L|BUbCoBjA{CRqD?gA"
            },
            {
              "distance": 55.5,
              "duration": 6.518484988148538,
              "geometry": "}ih|mAi}l_Ci@aBu@iBaAk@gBQu@?cCVkA|@_AxAi@dBM~ACnC"
            },
            {
              "distance": 208.1,
              "duration": 24.44138245105785,
              "geometry": "i~h|mAmul_CwJtIiLpKeUbS{o@jl@"
            },
            {
              "distance": 233.4,
              "duration": 27.412872004213853,
              "geometry": "m~k|mAu|i_CyG|FQzI?bDQ|CIvFOvCUnIuEf_BUzFEtAOdH"
            },
            {
              "distance": 247.5,
              "duration": 29.06891954174348,
              "geometry": "}ql|mAytd_Cu@dTMfJi@jQaB|l@sBbu@iAt`@"
            },
            {
              "distance": 367.3,
              "duration": 43.13945110174699,
              "geometry": "k~l|mAg|~~BmHlGgA~@u@^kA^gARaAHkBCmAU_Cq@{Aq@}A}@gBeA}AsA_CiCiByBqAiBgAqA}@yAi@} @aGuIwEiHg@y@yBkDyEiH{FwJiEoHcHsHkB}CeBuCwIoNsE}GqDmFmFyHcEaF}CoD"
            },
            {
              "distance": 688,
              "duration": 80.80572381704854,
              "geometry": "syq|mAqoc_Cg@yC{FqGmEaGeEwFsJqM{AaCmByCqD_Hi@mAq@{AyBiG}@yC_A}Dc@}B}@sE_@aCy@o FgAoHmA}HkB}I_@oAQo@a@cAk@}AwAwBgFqGeCcCo@e@cAk@iAg@{CwA[QqCo@kDw@aAOkEo@sNaCuF_BmCqA{DsCm@ {@gBsB_@i@w@cBg@cAi@sA_AaDk@mC[oBiAkBsH{_@{D_SsC{Ni@gDUsAmGoYqK{i@[aBuAeFo@qBaAgBcAoA"
            },
            {
              "distance": 274.2,
              "duration": 32.20483934685278,
              "geometry": "gvx|mAyro_C{@yDmC}NmC{D_CcNkEcWgAeGy@gD_AeGeAwF]uBu@wDOcAsCaOgF_Xi@mGoBmIwDcV"
            },
            {
              "distance": 366.1,
              "duration": 42.99851088578703,
              "geometry": "emz|mAuqu_Co@iFm_@oaCiEmQmAsH{AqJYgBaDgT{AcIaEwX_CkU"
            },
            {
              "distance": 805.1,
              "duration": 94.55913989114212,
              "geometry": "qm||mA{u}_C|DqZ^mMgJcl@uCiReUwyAeQ_z@gOg_AaAoFuB_MkEsVgCkQIg@SiAmA{GmFqZoE_WmB yKk@qDmRgmAoEmY"
            },
            {
              "distance": 291,
              "duration": 34.17800237029233,
              "geometry": "so`}mA{po`CuB}M_BmKcHae@eBgL{AuJeMcx@k@eESwA_A}FwEuVwB}Kk@sD"
            },
            {
              "distance": 407.6,
              "duration": 47.8726933544026,
              "geometry": "qcb}mAo_v`Cw@sF}DaX_FqXmJog@_BuIsBuMuAyIa@mCwIuk@oBaLU{A}AyJk@sDgCiPiAkH_DcScEyW"
            },
            {
              "distance": 169.3,
              "duration": 19.88431546835221,
              "geometry": "_md}mAq`_aC`ZaK|WcJ|d@eQ"
            },
            {
              "distance": 92.2,
              "duration": 10.828906592924238,
              "geometry": "asa}mA}i`aCs@_FeFi^wCg["
            },
            {
              "distance": 39,
              "duration": 4.580557018698973,
              "geometry": "s`b}mAolbaCkQzN"
            },
            {
              "distance": 0,
              "duration": 0,
              "geometry": "_sb}mAs|aaC"
            }
          ]
        }
      ],
      "duration": 1070.3,
      "distance": 9112.8
    }
  ]
}

API Error Codes

Response CodeDescriptionAdditional Notes
200Normal success case.

Normal success case.

400Input validation failed.

Such as missing parameter or parameter with invalid value type (for example value cannot be parsed into number).

401APIKEY not supplied or invalid.

This error occurs when the wrong API key is passed in the request or the key is missing altogether

403APIKEY is valid but does not have access to requested resources.

You might be querying for a geographical region which is not valid for your account, or requesting a service which is not enabled for you.

404Requested host/path not found.

This error occurs when there is a malformed host name used.

422Could not process the request.

There is an underlying map issue which prevents the processing of the request.

429Too many requests.

QPM reached or API request count quota reached.

500Internal Service error.

There was an internal issue with NextBillion.ai services. You can reach out to [email protected] for an explanation.