Monitor price for a specific origin, destination, and dates pair
curl --request POST \
--url https://api.example.com/v1/price_monitoring \
--header 'Content-Type: application/json' \
--header 'X-API-Key: <api-key>' \
--data '
{
"origin": "PAR",
"destination": "NYC",
"departure_date": "<string>",
"return_date": "<string>",
"direct_only": true,
"max_price": 1,
"include_carriers": [
"<string>"
],
"exclude_carriers": [
"<string>"
],
"adults": 1,
"children": 1,
"infants": 1,
"currency": "<string>",
"locale": "<string>",
"intent": {
"user_intent": "find a cheap flight to Tokyo"
}
}
'import requests
url = "https://api.example.com/v1/price_monitoring"
payload = {
"origin": "PAR",
"destination": "NYC",
"departure_date": "<string>",
"return_date": "<string>",
"direct_only": True,
"max_price": 1,
"include_carriers": ["<string>"],
"exclude_carriers": ["<string>"],
"adults": 1,
"children": 1,
"infants": 1,
"currency": "<string>",
"locale": "<string>",
"intent": { "user_intent": "find a cheap flight to Tokyo" }
}
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: 'PAR',
destination: 'NYC',
departure_date: '<string>',
return_date: '<string>',
direct_only: true,
max_price: 1,
include_carriers: ['<string>'],
exclude_carriers: ['<string>'],
adults: 1,
children: 1,
infants: 1,
currency: '<string>',
locale: '<string>',
intent: {user_intent: 'find a cheap flight to Tokyo'}
})
};
fetch('https://api.example.com/v1/price_monitoring', 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/price_monitoring",
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' => 'PAR',
'destination' => 'NYC',
'departure_date' => '<string>',
'return_date' => '<string>',
'direct_only' => true,
'max_price' => 1,
'include_carriers' => [
'<string>'
],
'exclude_carriers' => [
'<string>'
],
'adults' => 1,
'children' => 1,
'infants' => 1,
'currency' => '<string>',
'locale' => '<string>',
'intent' => [
'user_intent' => 'find a cheap flight to Tokyo'
]
]),
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/price_monitoring"
payload := strings.NewReader("{\n \"origin\": \"PAR\",\n \"destination\": \"NYC\",\n \"departure_date\": \"<string>\",\n \"return_date\": \"<string>\",\n \"direct_only\": true,\n \"max_price\": 1,\n \"include_carriers\": [\n \"<string>\"\n ],\n \"exclude_carriers\": [\n \"<string>\"\n ],\n \"adults\": 1,\n \"children\": 1,\n \"infants\": 1,\n \"currency\": \"<string>\",\n \"locale\": \"<string>\",\n \"intent\": {\n \"user_intent\": \"find a cheap flight to Tokyo\"\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.example.com/v1/price_monitoring")
.header("X-API-Key", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"origin\": \"PAR\",\n \"destination\": \"NYC\",\n \"departure_date\": \"<string>\",\n \"return_date\": \"<string>\",\n \"direct_only\": true,\n \"max_price\": 1,\n \"include_carriers\": [\n \"<string>\"\n ],\n \"exclude_carriers\": [\n \"<string>\"\n ],\n \"adults\": 1,\n \"children\": 1,\n \"infants\": 1,\n \"currency\": \"<string>\",\n \"locale\": \"<string>\",\n \"intent\": {\n \"user_intent\": \"find a cheap flight to Tokyo\"\n }\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.example.com/v1/price_monitoring")
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\": \"PAR\",\n \"destination\": \"NYC\",\n \"departure_date\": \"<string>\",\n \"return_date\": \"<string>\",\n \"direct_only\": true,\n \"max_price\": 1,\n \"include_carriers\": [\n \"<string>\"\n ],\n \"exclude_carriers\": [\n \"<string>\"\n ],\n \"adults\": 1,\n \"children\": 1,\n \"infants\": 1,\n \"currency\": \"<string>\",\n \"locale\": \"<string>\",\n \"intent\": {\n \"user_intent\": \"find a cheap flight to Tokyo\"\n }\n}"
response = http.request(request)
puts response.read_body{
"status": "ok",
"monitored_at": "2026-06-01T12:34:56Z",
"flight": {
"offer_token": "oft_7c2e9a1b4d",
"total_price": {
"amount": 289.99,
"value": 123,
"currency": "USD",
"decimal_places": 2
},
"outbound_carrier": {
"code": "DL",
"name": "Delta Air Lines",
"flight_number": "DL263"
},
"inbound_carrier": {
"code": "DL",
"name": "Delta Air Lines",
"flight_number": "DL263"
},
"outbound_stops": 0,
"inbound_stops": 1,
"outbound_duration_minutes": 470,
"inbound_duration_minutes": 520,
"outbound_departure_local": "2026-07-15T10:15:00",
"outbound_arrival_local": "2026-07-15T13:05:00",
"inbound_departure_local": "2026-07-22T17:40:00",
"inbound_arrival_local": "2026-07-23T07:25:00",
"cabin_class": "economy",
"fare_brand": "Main"
},
"request_echo": null
}{
"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
price-monitoring
Monitor price for a specific origin, destination, and dates pair
POST
/
v1
/
price_monitoring
Monitor price for a specific origin, destination, and dates pair
curl --request POST \
--url https://api.example.com/v1/price_monitoring \
--header 'Content-Type: application/json' \
--header 'X-API-Key: <api-key>' \
--data '
{
"origin": "PAR",
"destination": "NYC",
"departure_date": "<string>",
"return_date": "<string>",
"direct_only": true,
"max_price": 1,
"include_carriers": [
"<string>"
],
"exclude_carriers": [
"<string>"
],
"adults": 1,
"children": 1,
"infants": 1,
"currency": "<string>",
"locale": "<string>",
"intent": {
"user_intent": "find a cheap flight to Tokyo"
}
}
'import requests
url = "https://api.example.com/v1/price_monitoring"
payload = {
"origin": "PAR",
"destination": "NYC",
"departure_date": "<string>",
"return_date": "<string>",
"direct_only": True,
"max_price": 1,
"include_carriers": ["<string>"],
"exclude_carriers": ["<string>"],
"adults": 1,
"children": 1,
"infants": 1,
"currency": "<string>",
"locale": "<string>",
"intent": { "user_intent": "find a cheap flight to Tokyo" }
}
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: 'PAR',
destination: 'NYC',
departure_date: '<string>',
return_date: '<string>',
direct_only: true,
max_price: 1,
include_carriers: ['<string>'],
exclude_carriers: ['<string>'],
adults: 1,
children: 1,
infants: 1,
currency: '<string>',
locale: '<string>',
intent: {user_intent: 'find a cheap flight to Tokyo'}
})
};
fetch('https://api.example.com/v1/price_monitoring', 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/price_monitoring",
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' => 'PAR',
'destination' => 'NYC',
'departure_date' => '<string>',
'return_date' => '<string>',
'direct_only' => true,
'max_price' => 1,
'include_carriers' => [
'<string>'
],
'exclude_carriers' => [
'<string>'
],
'adults' => 1,
'children' => 1,
'infants' => 1,
'currency' => '<string>',
'locale' => '<string>',
'intent' => [
'user_intent' => 'find a cheap flight to Tokyo'
]
]),
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/price_monitoring"
payload := strings.NewReader("{\n \"origin\": \"PAR\",\n \"destination\": \"NYC\",\n \"departure_date\": \"<string>\",\n \"return_date\": \"<string>\",\n \"direct_only\": true,\n \"max_price\": 1,\n \"include_carriers\": [\n \"<string>\"\n ],\n \"exclude_carriers\": [\n \"<string>\"\n ],\n \"adults\": 1,\n \"children\": 1,\n \"infants\": 1,\n \"currency\": \"<string>\",\n \"locale\": \"<string>\",\n \"intent\": {\n \"user_intent\": \"find a cheap flight to Tokyo\"\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.example.com/v1/price_monitoring")
.header("X-API-Key", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"origin\": \"PAR\",\n \"destination\": \"NYC\",\n \"departure_date\": \"<string>\",\n \"return_date\": \"<string>\",\n \"direct_only\": true,\n \"max_price\": 1,\n \"include_carriers\": [\n \"<string>\"\n ],\n \"exclude_carriers\": [\n \"<string>\"\n ],\n \"adults\": 1,\n \"children\": 1,\n \"infants\": 1,\n \"currency\": \"<string>\",\n \"locale\": \"<string>\",\n \"intent\": {\n \"user_intent\": \"find a cheap flight to Tokyo\"\n }\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.example.com/v1/price_monitoring")
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\": \"PAR\",\n \"destination\": \"NYC\",\n \"departure_date\": \"<string>\",\n \"return_date\": \"<string>\",\n \"direct_only\": true,\n \"max_price\": 1,\n \"include_carriers\": [\n \"<string>\"\n ],\n \"exclude_carriers\": [\n \"<string>\"\n ],\n \"adults\": 1,\n \"children\": 1,\n \"infants\": 1,\n \"currency\": \"<string>\",\n \"locale\": \"<string>\",\n \"intent\": {\n \"user_intent\": \"find a cheap flight to Tokyo\"\n }\n}"
response = http.request(request)
puts response.read_body{
"status": "ok",
"monitored_at": "2026-06-01T12:34:56Z",
"flight": {
"offer_token": "oft_7c2e9a1b4d",
"total_price": {
"amount": 289.99,
"value": 123,
"currency": "USD",
"decimal_places": 2
},
"outbound_carrier": {
"code": "DL",
"name": "Delta Air Lines",
"flight_number": "DL263"
},
"inbound_carrier": {
"code": "DL",
"name": "Delta Air Lines",
"flight_number": "DL263"
},
"outbound_stops": 0,
"inbound_stops": 1,
"outbound_duration_minutes": 470,
"inbound_duration_minutes": 520,
"outbound_departure_local": "2026-07-15T10:15:00",
"outbound_arrival_local": "2026-07-15T13:05:00",
"inbound_departure_local": "2026-07-22T17:40:00",
"inbound_arrival_local": "2026-07-23T07:25:00",
"cabin_class": "economy",
"fare_brand": "Main"
},
"request_echo": null
}{
"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"
}
}Watch a specific route and date pair over time so an agent can act when the fare drops. Use it for prompts like “alert me when Paris to New York for June 17 to 26 goes under €400”. Each response includes the current cheapest cached fare and an offer token you can pass to flight_search when the user decides to book. Cache-only; never triggers a live call.
Authorizations
ApiKeyAuthBearerAuth
Body
application/json
Example:
"PAR"
Example:
"NYC"
Pattern:
^\d{4}-\d{2}-\d{2}$Pattern:
^\d{4}-\d{2}-\d{2}$Available options:
city, airport Available options:
city, airport Available options:
economy, premium_economy, business, first Required range:
x > 0Required range:
x >= 1Required range:
x >= 0Required range:
x >= 0Show child attributes
Show child attributes
⌘I
