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",
"max_stops": 0,
"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",
"max_stops": 0,
"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',
max_stops: 0,
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',
'max_stops' => 0,
'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 \"max_stops\": 0,\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 \"max_stops\": 0,\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 \"max_stops\": 0,\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": "2.0",
"status": "not_ready",
"reason": "statistics_not_ready",
"summary": "Price statistics are not ready. This development preview validates the request only; it cannot assess this price or recommend when to book.",
"context": {
"origin": "NYC",
"destination": "LAX",
"departure_date": "2026-10-20",
"trip_type": "oneway",
"max_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": "unavailable",
"reason_code": "statistics_not_ready",
"label": null,
"typical_price": null,
"typical_range": null,
"percentile": null,
"difference_pct": null,
"comparison_basis": "historical_comparable_low_fares",
"evidence": null
},
"wait_assessment": {
"status": "unavailable",
"reason_code": "statistics_not_ready",
"horizons": [
{
"horizon_days": 1,
"status": "unavailable",
"reason_code": "statistics_not_ready",
"direction": null,
"historical_reference": null
}
]
},
"recommendation": {
"action": "no_clear_signal",
"basis": null,
"summary": "Statistics are not ready; no buy or wait recommendation is available."
},
"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": "BAD_REQUEST",
"message": "A required field is missing or invalid.",
"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"
}
}Discovery
flight-price-advice
Accept a flight with its current price for price advice
POST
/
v1
/
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",
"max_stops": 0,
"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",
"max_stops": 0,
"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',
max_stops: 0,
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',
'max_stops' => 0,
'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 \"max_stops\": 0,\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 \"max_stops\": 0,\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 \"max_stops\": 0,\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": "2.0",
"status": "not_ready",
"reason": "statistics_not_ready",
"summary": "Price statistics are not ready. This development preview validates the request only; it cannot assess this price or recommend when to book.",
"context": {
"origin": "NYC",
"destination": "LAX",
"departure_date": "2026-10-20",
"trip_type": "oneway",
"max_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": "unavailable",
"reason_code": "statistics_not_ready",
"label": null,
"typical_price": null,
"typical_range": null,
"percentile": null,
"difference_pct": null,
"comparison_basis": "historical_comparable_low_fares",
"evidence": null
},
"wait_assessment": {
"status": "unavailable",
"reason_code": "statistics_not_ready",
"horizons": [
{
"horizon_days": 1,
"status": "unavailable",
"reason_code": "statistics_not_ready",
"direction": null,
"historical_reference": null
}
]
},
"recommendation": {
"action": "no_clear_signal",
"basis": null,
"summary": "Statistics are not ready; no buy or wait recommendation is available."
},
"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": "BAD_REQUEST",
"message": "A required field is missing or invalid.",
"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"
}
}This endpoint is in preview. Contact support to request access. It accepts a flight with its current price, validates the request, and returns statistics_not_ready with fixed 1-day and 3-day horizons; the user does not select a wait duration. It requires a verified jnk_ API key and does not search flights, load statistics, create monitoring, make a buy/wait recommendation, or book anything.
Authorizations
Body
application/json
DEV contract preview input. Structural trip type, stop count, and cabin values are validated; this preview does not imply statistics coverage.
Pattern:
^[A-Z]{3}$Example:
"NYC"
Pattern:
^[A-Z]{3}$Example:
"LAX"
Pattern:
^\d{4}-\d{2}-\d{2}$Example:
"2026-10-20"
Available options:
oneway, roundtrip Available options:
0 Available options:
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
Response
Validated request; flight price statistics are not ready
Current DEV preview response. Statistics are unavailable and every statistical result is null.
Available options:
2.0 Available options:
not_ready Available options:
statistics_not_ready Available options:
Price statistics are not ready. This development preview validates the request only; it cannot assess this price or recommend when to book. Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Available options:
false 