curl --request POST \
--url https://api.dev.gojinko.com/v1/flight_price_advice \
--header 'Content-Type: application/json' \
--header 'X-API-Key: <api-key>' \
--data '
{
"origin": "NYC",
"destination": "LAX",
"departure_date": "2026-10-20",
"current_price": {
"value": 32000,
"currency": "USD",
"decimal_places": 2
}
}
'import requests
url = "https://api.dev.gojinko.com/v1/flight_price_advice"
payload = {
"origin": "NYC",
"destination": "LAX",
"departure_date": "2026-10-20",
"current_price": {
"value": 32000,
"currency": "USD",
"decimal_places": 2
}
}
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({
origin: 'NYC',
destination: 'LAX',
departure_date: '2026-10-20',
current_price: {value: 32000, currency: 'USD', decimal_places: 2}
})
};
fetch('https://api.dev.gojinko.com/v1/flight_price_advice', 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.dev.gojinko.com/v1/flight_price_advice",
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([
'origin' => 'NYC',
'destination' => 'LAX',
'departure_date' => '2026-10-20',
'current_price' => [
'value' => 32000,
'currency' => 'USD',
'decimal_places' => 2
]
]),
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.dev.gojinko.com/v1/flight_price_advice"
payload := strings.NewReader("{\n \"origin\": \"NYC\",\n \"destination\": \"LAX\",\n \"departure_date\": \"2026-10-20\",\n \"current_price\": {\n \"value\": 32000,\n \"currency\": \"USD\",\n \"decimal_places\": 2\n }\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.dev.gojinko.com/v1/flight_price_advice")
.header("X-API-Key", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"origin\": \"NYC\",\n \"destination\": \"LAX\",\n \"departure_date\": \"2026-10-20\",\n \"current_price\": {\n \"value\": 32000,\n \"currency\": \"USD\",\n \"decimal_places\": 2\n }\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.dev.gojinko.com/v1/flight_price_advice")
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 \"origin\": \"NYC\",\n \"destination\": \"LAX\",\n \"departure_date\": \"2026-10-20\",\n \"current_price\": {\n \"value\": 32000,\n \"currency\": \"USD\",\n \"decimal_places\": 2\n }\n}"
response = http.request(request)
puts response.read_body{
"schema_version": "3.2",
"status": "available",
"reason": "statistics_not_ready",
"summary": "<string>",
"context": {
"origin": "NYC",
"destination": "LAX",
"departure_date": "2026-10-20",
"trip_type": "oneway",
"stops": 0,
"cabin_class": "economy",
"current_price": {
"value": 32000,
"currency": "USD",
"decimal_places": 2
},
"price_basis": "per_adult_total_including_tax",
"evaluated_at": "2023-11-07T05:31:56Z",
"apex_days": 1
},
"price_assessment": {
"status": "available",
"reason_code": null,
"label": "low",
"typical_price": {
"value": 32000,
"currency": "USD",
"decimal_places": 2
},
"typical_range": {
"low": {
"value": 32000,
"currency": "USD",
"decimal_places": 2
},
"high": {
"value": 32000,
"currency": "USD",
"decimal_places": 2
}
},
"percentile": 50,
"difference_pct": 123,
"comparison_basis": "historical_comparable_low_fares",
"evidence": {
"artifact_id": "<string>",
"fit_window": {
"start": "2023-11-07T05:31:56Z",
"end_exclusive": "2023-11-07T05:31:56Z"
},
"source_price_unit": "amd_totalpricenuc_millicents",
"currency_mapping": "gateway_platform_usd_millicents_to_usd_minor_units_divide_by_10",
"apex_band": "0-2",
"support": {
"daily_units": 1,
"observation_days": 1,
"departure_dates": 1,
"flight_identities": 1
}
}
},
"wait_assessment": {
"status": "available",
"reason_code": null,
"horizons": [
{
"horizon_days": 1,
"status": "available",
"reason_code": null,
"direction": "increase",
"forecasted_price": {
"value": 32000,
"currency": "USD",
"decimal_places": 2
},
"probabilities": {
"increase": 0.5,
"decrease": 0.5,
"unchanged": 0.5
}
}
]
},
"recommendation": {
"action": "buy_now",
"basis": {
"policy": "expected_fare",
"price_label": "low",
"selected_horizon_days": 1,
"wait_direction": "increase"
},
"summary": "<string>"
},
"live_quotes_used": false
}{
"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/authentication/api-keys"
}
}{
"error": {
"code": "PAYMENT_REQUIRED",
"message": "Insufficient balance — this call costs $0.0150 and your organization has $0.0000 available. Top up at https://dashboard.gojinko.com/developers/billing/topup",
"doc_url": "https://docs.gojinko.com/concepts/errors"
}
}{
"error": {
"code": "BAD_REQUEST",
"message": "A required field is missing or invalid.",
"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_REJECTED",
"message": "The upstream service rejected the request.",
"doc_url": "https://docs.gojinko.com/concepts/errors"
}
}{
"error": {
"code": "UPSTREAM_UNAVAILABLE",
"message": "The upstream service is temporarily unavailable. Please retry later.",
"doc_url": "https://docs.gojinko.com/concepts/errors"
}
}{
"error": {
"code": "UPSTREAM_TIMEOUT",
"message": "The upstream service did not respond in time.",
"doc_url": "https://docs.gojinko.com/concepts/errors"
}
}flight-price-advice
Accept a flight with its current price for price advice
curl --request POST \
--url https://api.dev.gojinko.com/v1/flight_price_advice \
--header 'Content-Type: application/json' \
--header 'X-API-Key: <api-key>' \
--data '
{
"origin": "NYC",
"destination": "LAX",
"departure_date": "2026-10-20",
"current_price": {
"value": 32000,
"currency": "USD",
"decimal_places": 2
}
}
'import requests
url = "https://api.dev.gojinko.com/v1/flight_price_advice"
payload = {
"origin": "NYC",
"destination": "LAX",
"departure_date": "2026-10-20",
"current_price": {
"value": 32000,
"currency": "USD",
"decimal_places": 2
}
}
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({
origin: 'NYC',
destination: 'LAX',
departure_date: '2026-10-20',
current_price: {value: 32000, currency: 'USD', decimal_places: 2}
})
};
fetch('https://api.dev.gojinko.com/v1/flight_price_advice', 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.dev.gojinko.com/v1/flight_price_advice",
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([
'origin' => 'NYC',
'destination' => 'LAX',
'departure_date' => '2026-10-20',
'current_price' => [
'value' => 32000,
'currency' => 'USD',
'decimal_places' => 2
]
]),
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.dev.gojinko.com/v1/flight_price_advice"
payload := strings.NewReader("{\n \"origin\": \"NYC\",\n \"destination\": \"LAX\",\n \"departure_date\": \"2026-10-20\",\n \"current_price\": {\n \"value\": 32000,\n \"currency\": \"USD\",\n \"decimal_places\": 2\n }\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.dev.gojinko.com/v1/flight_price_advice")
.header("X-API-Key", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"origin\": \"NYC\",\n \"destination\": \"LAX\",\n \"departure_date\": \"2026-10-20\",\n \"current_price\": {\n \"value\": 32000,\n \"currency\": \"USD\",\n \"decimal_places\": 2\n }\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.dev.gojinko.com/v1/flight_price_advice")
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 \"origin\": \"NYC\",\n \"destination\": \"LAX\",\n \"departure_date\": \"2026-10-20\",\n \"current_price\": {\n \"value\": 32000,\n \"currency\": \"USD\",\n \"decimal_places\": 2\n }\n}"
response = http.request(request)
puts response.read_body{
"schema_version": "3.2",
"status": "available",
"reason": "statistics_not_ready",
"summary": "<string>",
"context": {
"origin": "NYC",
"destination": "LAX",
"departure_date": "2026-10-20",
"trip_type": "oneway",
"stops": 0,
"cabin_class": "economy",
"current_price": {
"value": 32000,
"currency": "USD",
"decimal_places": 2
},
"price_basis": "per_adult_total_including_tax",
"evaluated_at": "2023-11-07T05:31:56Z",
"apex_days": 1
},
"price_assessment": {
"status": "available",
"reason_code": null,
"label": "low",
"typical_price": {
"value": 32000,
"currency": "USD",
"decimal_places": 2
},
"typical_range": {
"low": {
"value": 32000,
"currency": "USD",
"decimal_places": 2
},
"high": {
"value": 32000,
"currency": "USD",
"decimal_places": 2
}
},
"percentile": 50,
"difference_pct": 123,
"comparison_basis": "historical_comparable_low_fares",
"evidence": {
"artifact_id": "<string>",
"fit_window": {
"start": "2023-11-07T05:31:56Z",
"end_exclusive": "2023-11-07T05:31:56Z"
},
"source_price_unit": "amd_totalpricenuc_millicents",
"currency_mapping": "gateway_platform_usd_millicents_to_usd_minor_units_divide_by_10",
"apex_band": "0-2",
"support": {
"daily_units": 1,
"observation_days": 1,
"departure_dates": 1,
"flight_identities": 1
}
}
},
"wait_assessment": {
"status": "available",
"reason_code": null,
"horizons": [
{
"horizon_days": 1,
"status": "available",
"reason_code": null,
"direction": "increase",
"forecasted_price": {
"value": 32000,
"currency": "USD",
"decimal_places": 2
},
"probabilities": {
"increase": 0.5,
"decrease": 0.5,
"unchanged": 0.5
}
}
]
},
"recommendation": {
"action": "buy_now",
"basis": {
"policy": "expected_fare",
"price_label": "low",
"selected_horizon_days": 1,
"wait_direction": "increase"
},
"summary": "<string>"
},
"live_quotes_used": false
}{
"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/authentication/api-keys"
}
}{
"error": {
"code": "PAYMENT_REQUIRED",
"message": "Insufficient balance — this call costs $0.0150 and your organization has $0.0000 available. Top up at https://dashboard.gojinko.com/developers/billing/topup",
"doc_url": "https://docs.gojinko.com/concepts/errors"
}
}{
"error": {
"code": "BAD_REQUEST",
"message": "A required field is missing or invalid.",
"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_REJECTED",
"message": "The upstream service rejected the request.",
"doc_url": "https://docs.gojinko.com/concepts/errors"
}
}{
"error": {
"code": "UPSTREAM_UNAVAILABLE",
"message": "The upstream service is temporarily unavailable. Please retry later.",
"doc_url": "https://docs.gojinko.com/concepts/errors"
}
}{
"error": {
"code": "UPSTREAM_TIMEOUT",
"message": "The upstream service did not respond in time.",
"doc_url": "https://docs.gojinko.com/concepts/errors"
}
}Authorizations
Body
DEV contract preview input. Structural trip type, optional actual connection count, and cabin values are validated; this preview does not imply statistics coverage.
^[A-Z]{3}$"NYC"
^[A-Z]{3}$"LAX"
^\d{4}-\d{2}-\d{2}$"2026-10-20"
oneway, roundtrip economy, premium_economy, business, first One adult total fare for the supplied trip, including tax and excluding optional paid extras. Value 32000, USD, decimal_places 2 means USD 320.00.
Show child attributes
Show child attributes
Actual number of flight connections: 0 for nonstop, 1, or 2. Omit when unknown.
0, 1, 2 Response
Computed flight price advice or a reasoned unavailable/not-ready result
Schema 3.2 price advice. Results may be available, partial, unavailable, or not ready; fixed 1-day and 3-day horizons are always present.
3.2 available, partial, unavailable, not_ready statistics_not_ready, future_statistics, stale_statistics, unsupported_currency, unsupported_trip_type, stops_unknown, unsupported_stops, route_not_covered, insufficient_data, horizon_not_supported, unsafe_projected_amount, request_cancelled, partial_statistics, statistics_unavailable 1Show child attributes
Show child attributes
- Option 1
- Option 2
Show child attributes
Show child attributes
- Option 1
- Option 2
- Option 3
Show child attributes
Show child attributes
- Option 1
- Option 2
Show child attributes
Show child attributes
false 