Discover travel destinations accessible from your departure airports
curl --request POST \
--url https://api.example.com/v1/find_destination \
--header 'Content-Type: application/json' \
--header 'X-API-Key: <api-key>' \
--data '
{
"origins": [
"NYC"
],
"trip_type": "roundtrip",
"departure_date_ranges": [
{
"start": "2026-09-01",
"end": "2026-09-30"
}
],
"stay_days": 7,
"cabin_class": "economy",
"adults": 1,
"max_total": 800,
"currency": "USD",
"flights_per_destination": 1
}
'import requests
url = "https://api.example.com/v1/find_destination"
payload = {
"origins": ["NYC"],
"trip_type": "roundtrip",
"departure_date_ranges": [
{
"start": "2026-09-01",
"end": "2026-09-30"
}
],
"stay_days": 7,
"cabin_class": "economy",
"adults": 1,
"max_total": 800,
"currency": "USD",
"flights_per_destination": 1
}
headers = {
"X-API-Key": "<api-key>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {'X-API-Key': '<api-key>', 'Content-Type': 'application/json'},
body: JSON.stringify({
origins: ['NYC'],
trip_type: 'roundtrip',
departure_date_ranges: [{start: '2026-09-01', end: '2026-09-30'}],
stay_days: 7,
cabin_class: 'economy',
adults: 1,
max_total: 800,
currency: 'USD',
flights_per_destination: 1
})
};
fetch('https://api.example.com/v1/find_destination', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.example.com/v1/find_destination",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'origins' => [
'NYC'
],
'trip_type' => 'roundtrip',
'departure_date_ranges' => [
[
'start' => '2026-09-01',
'end' => '2026-09-30'
]
],
'stay_days' => 7,
'cabin_class' => 'economy',
'adults' => 1,
'max_total' => 800,
'currency' => 'USD',
'flights_per_destination' => 1
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json",
"X-API-Key: <api-key>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.example.com/v1/find_destination"
payload := strings.NewReader("{\n \"origins\": [\n \"NYC\"\n ],\n \"trip_type\": \"roundtrip\",\n \"departure_date_ranges\": [\n {\n \"start\": \"2026-09-01\",\n \"end\": \"2026-09-30\"\n }\n ],\n \"stay_days\": 7,\n \"cabin_class\": \"economy\",\n \"adults\": 1,\n \"max_total\": 800,\n \"currency\": \"USD\",\n \"flights_per_destination\": 1\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("X-API-Key", "<api-key>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://api.example.com/v1/find_destination")
.header("X-API-Key", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"origins\": [\n \"NYC\"\n ],\n \"trip_type\": \"roundtrip\",\n \"departure_date_ranges\": [\n {\n \"start\": \"2026-09-01\",\n \"end\": \"2026-09-30\"\n }\n ],\n \"stay_days\": 7,\n \"cabin_class\": \"economy\",\n \"adults\": 1,\n \"max_total\": 800,\n \"currency\": \"USD\",\n \"flights_per_destination\": 1\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.example.com/v1/find_destination")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["X-API-Key"] = '<api-key>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"origins\": [\n \"NYC\"\n ],\n \"trip_type\": \"roundtrip\",\n \"departure_date_ranges\": [\n {\n \"start\": \"2026-09-01\",\n \"end\": \"2026-09-30\"\n }\n ],\n \"stay_days\": 7,\n \"cabin_class\": \"economy\",\n \"adults\": 1,\n \"max_total\": 800,\n \"currency\": \"USD\",\n \"flights_per_destination\": 1\n}"
response = http.request(request)
puts response.read_body{
"destinations": [
{
"flights": [
{
"id": "itin_9f3b2a17",
"origin": {
"code": "JFK",
"name": "New York John F. Kennedy"
},
"destination": {
"code": "CDG",
"name": "Paris Charles de Gaulle"
},
"total": {
"value": 41250,
"currency": "USD",
"decimal_places": 2
},
"cabin_class": "economy"
}
],
"city_name": "Paris",
"iata_code": "PAR",
"image_url": "https://images.gojinko.com/destinations/par.jpg",
"location": {
"latitude": 48.8566,
"longitude": 2.3522
},
"lowest_fare": {
"id": "itin_9f3b2a17",
"origin": {
"code": "JFK",
"name": "New York John F. Kennedy"
},
"destination": {
"code": "CDG",
"name": "Paris Charles de Gaulle"
},
"total": {
"value": 41250,
"currency": "USD",
"decimal_places": 2
},
"cabin_class": "economy"
}
}
],
"total": 12,
"next_page_token": "eyJvZmZzZXQiOjIwfQ=="
}{
"error": {
"code": "BAD_REQUEST",
"message": "Malformed JSON in request body.",
"doc_url": "https://docs.gojinko.com/concepts/errors"
}
}{
"error": {
"code": "AUTH_REQUIRED",
"message": "Invalid or expired API key.",
"doc_url": "https://docs.gojinko.com/api-reference/authentication"
}
}{
"error": {
"code": "BAD_REQUEST",
"message": "origins: origins is required; trip_type: trip_type is required",
"doc_url": "https://docs.gojinko.com/concepts/errors"
}
}{
"error": {
"code": "RATE_LIMITED",
"message": "Rate limit or quota exceeded.",
"doc_url": "https://docs.gojinko.com/concepts/errors"
}
}{
"error": {
"code": "UPSTREAM_ERROR",
"message": "Upstream travel provider returned an error. Please retry.",
"doc_url": "https://docs.gojinko.com/concepts/errors"
}
}Discovery
find-destination
Discover travel destinations accessible from your departure airports
POST
/
v1
/
find_destination
Discover travel destinations accessible from your departure airports
curl --request POST \
--url https://api.example.com/v1/find_destination \
--header 'Content-Type: application/json' \
--header 'X-API-Key: <api-key>' \
--data '
{
"origins": [
"NYC"
],
"trip_type": "roundtrip",
"departure_date_ranges": [
{
"start": "2026-09-01",
"end": "2026-09-30"
}
],
"stay_days": 7,
"cabin_class": "economy",
"adults": 1,
"max_total": 800,
"currency": "USD",
"flights_per_destination": 1
}
'import requests
url = "https://api.example.com/v1/find_destination"
payload = {
"origins": ["NYC"],
"trip_type": "roundtrip",
"departure_date_ranges": [
{
"start": "2026-09-01",
"end": "2026-09-30"
}
],
"stay_days": 7,
"cabin_class": "economy",
"adults": 1,
"max_total": 800,
"currency": "USD",
"flights_per_destination": 1
}
headers = {
"X-API-Key": "<api-key>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {'X-API-Key': '<api-key>', 'Content-Type': 'application/json'},
body: JSON.stringify({
origins: ['NYC'],
trip_type: 'roundtrip',
departure_date_ranges: [{start: '2026-09-01', end: '2026-09-30'}],
stay_days: 7,
cabin_class: 'economy',
adults: 1,
max_total: 800,
currency: 'USD',
flights_per_destination: 1
})
};
fetch('https://api.example.com/v1/find_destination', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.example.com/v1/find_destination",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'origins' => [
'NYC'
],
'trip_type' => 'roundtrip',
'departure_date_ranges' => [
[
'start' => '2026-09-01',
'end' => '2026-09-30'
]
],
'stay_days' => 7,
'cabin_class' => 'economy',
'adults' => 1,
'max_total' => 800,
'currency' => 'USD',
'flights_per_destination' => 1
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json",
"X-API-Key: <api-key>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.example.com/v1/find_destination"
payload := strings.NewReader("{\n \"origins\": [\n \"NYC\"\n ],\n \"trip_type\": \"roundtrip\",\n \"departure_date_ranges\": [\n {\n \"start\": \"2026-09-01\",\n \"end\": \"2026-09-30\"\n }\n ],\n \"stay_days\": 7,\n \"cabin_class\": \"economy\",\n \"adults\": 1,\n \"max_total\": 800,\n \"currency\": \"USD\",\n \"flights_per_destination\": 1\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("X-API-Key", "<api-key>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://api.example.com/v1/find_destination")
.header("X-API-Key", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"origins\": [\n \"NYC\"\n ],\n \"trip_type\": \"roundtrip\",\n \"departure_date_ranges\": [\n {\n \"start\": \"2026-09-01\",\n \"end\": \"2026-09-30\"\n }\n ],\n \"stay_days\": 7,\n \"cabin_class\": \"economy\",\n \"adults\": 1,\n \"max_total\": 800,\n \"currency\": \"USD\",\n \"flights_per_destination\": 1\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.example.com/v1/find_destination")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["X-API-Key"] = '<api-key>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"origins\": [\n \"NYC\"\n ],\n \"trip_type\": \"roundtrip\",\n \"departure_date_ranges\": [\n {\n \"start\": \"2026-09-01\",\n \"end\": \"2026-09-30\"\n }\n ],\n \"stay_days\": 7,\n \"cabin_class\": \"economy\",\n \"adults\": 1,\n \"max_total\": 800,\n \"currency\": \"USD\",\n \"flights_per_destination\": 1\n}"
response = http.request(request)
puts response.read_body{
"destinations": [
{
"flights": [
{
"id": "itin_9f3b2a17",
"origin": {
"code": "JFK",
"name": "New York John F. Kennedy"
},
"destination": {
"code": "CDG",
"name": "Paris Charles de Gaulle"
},
"total": {
"value": 41250,
"currency": "USD",
"decimal_places": 2
},
"cabin_class": "economy"
}
],
"city_name": "Paris",
"iata_code": "PAR",
"image_url": "https://images.gojinko.com/destinations/par.jpg",
"location": {
"latitude": 48.8566,
"longitude": 2.3522
},
"lowest_fare": {
"id": "itin_9f3b2a17",
"origin": {
"code": "JFK",
"name": "New York John F. Kennedy"
},
"destination": {
"code": "CDG",
"name": "Paris Charles de Gaulle"
},
"total": {
"value": 41250,
"currency": "USD",
"decimal_places": 2
},
"cabin_class": "economy"
}
}
],
"total": 12,
"next_page_token": "eyJvZmZzZXQiOjIwfQ=="
}{
"error": {
"code": "BAD_REQUEST",
"message": "Malformed JSON in request body.",
"doc_url": "https://docs.gojinko.com/concepts/errors"
}
}{
"error": {
"code": "AUTH_REQUIRED",
"message": "Invalid or expired API key.",
"doc_url": "https://docs.gojinko.com/api-reference/authentication"
}
}{
"error": {
"code": "BAD_REQUEST",
"message": "origins: origins is required; trip_type: trip_type is required",
"doc_url": "https://docs.gojinko.com/concepts/errors"
}
}{
"error": {
"code": "RATE_LIMITED",
"message": "Rate limit or quota exceeded.",
"doc_url": "https://docs.gojinko.com/concepts/errors"
}
}{
"error": {
"code": "UPSTREAM_ERROR",
"message": "Upstream travel provider returned an error. Please retry.",
"doc_url": "https://docs.gojinko.com/concepts/errors"
}
}Surface inspiration when a user knows where they want to leave from but not where they want to go. Typical prompts include “cheap beach getaways from New York” or “weekend trips out of London under €200”. Results come back ranked by lowest available fare so the user can compare options before committing to a route.
Authorizations
ApiKeyAuthBearerAuth
Body
application/json
Minimum array length:
1Example:
["NYC"]
Available options:
oneway, roundtrip Example:
"roundtrip"
Example:
["PAR"]
Available options:
city, airport Available options:
city, airport Pattern:
^\d{4}-\d{2}-\d{2}$Example:
["2026-07-15"]
Show child attributes
Show child attributes
Pattern:
^\d{4}-\d{2}-\d{2}$Example:
["2026-07-22"]
Show child attributes
Show child attributes
Required range:
x > 0Example:
7
Show child attributes
Show child attributes
Available options:
economy, premium_economy, business, first Example:
"economy"
Example:
false
Required range:
x >= 0Example:
1
Required range:
x >= 0Required range:
x >= 0Required range:
x >= 0Required range:
x >= 0Required range:
x >= 0Required range:
x >= 0Required string length:
2Required range:
x > 0Example:
800
Example:
"USD"
Example:
"en-US"
Required range:
1 <= x <= 100Required range:
x >= 0Available options:
lowest, recommendation Show child attributes
Show child attributes
Required range:
1 <= x <= 10⌘I
