{
"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": "CONFLICT",
"message": "The operation conflicts with the current state of the resource.",
"doc_url": "https://docs.gojinko.com/concepts/errors"
}
}
{
"error": {
"code": "GONE",
"message": "The resource no longer exists.",
"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": "Too many requests. Retry after the Retry-After delay.",
"doc_url": "https://docs.gojinko.com/concepts/errors"
}
}
{
"error": {
"code": "UPSTREAM_REJECTED",
"message": "The request was declined for this offer. Try another offer.",
"doc_url": "https://docs.gojinko.com/concepts/errors"
}
}
{
"error": {
"code": "UPSTREAM_UNAVAILABLE",
"message": "The service is temporarily unavailable. Retry after the Retry-After delay.",
"doc_url": "https://docs.gojinko.com/concepts/errors"
}
}
{
"error": {
"code": "UPSTREAM_TIMEOUT",
"message": "The request timed out before a result was available. Retry the request.",
"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
{
"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": "CONFLICT",
"message": "The operation conflicts with the current state of the resource.",
"doc_url": "https://docs.gojinko.com/concepts/errors"
}
}
{
"error": {
"code": "GONE",
"message": "The resource no longer exists.",
"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": "Too many requests. Retry after the Retry-After delay.",
"doc_url": "https://docs.gojinko.com/concepts/errors"
}
}
{
"error": {
"code": "UPSTREAM_REJECTED",
"message": "The request was declined for this offer. Try another offer.",
"doc_url": "https://docs.gojinko.com/concepts/errors"
}
}
{
"error": {
"code": "UPSTREAM_UNAVAILABLE",
"message": "The service is temporarily unavailable. Retry after the Retry-After delay.",
"doc_url": "https://docs.gojinko.com/concepts/errors"
}
}
{
"error": {
"code": "UPSTREAM_TIMEOUT",
"message": "The request timed out before a result was available. Retry the request.",
"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.
Prices are in minor units.value is an integer — divide by
10 ** decimal_places to display it. { "value": 15977, "decimal_places": 2 }
is $159.77, not $15,977. See Money & prices.
IATA city or airport codes. Omit for global discovery (find_destination) or to scan every destination from the origins. See destination_type for how an untyped code is read.
How to read the code: city searches every airport of the city, airport only that one airport. Omit it and the platform applies one rule: a code that names a multi-airport city is searched as the city; every other code is searched as the airport. Untyped NYC, LON or PAR is the city; untyped JFK, LHR or CDG is the airport; and untyped LAX, MIA or LAS — codes a city shares with its main airport — is the CITY, so results can land at any airport of that city. If the user named the airport, send airport; if they named the city, omit the field.
How to read the code: city searches every airport of the city, airport only that one airport. Omit it and the platform applies one rule: a code that names a multi-airport city is searched as the city; every other code is searched as the airport. Untyped NYC, LON or PAR is the city; untyped JFK, LHR or CDG is the airport; and untyped LAX, MIA or LAS — codes a city shares with its main airport — is the CITY, so results can land at any airport of that city. If the user named the airport, send airport; if they named the city, omit the field.
Only direct flights. Cached fares record whether a fare is direct but not how many stops it makes, so this is the only stop filter here; POST /v1/flight_search takes max_stops.
How strict the freshness check on cached fares is. standard (default) returns fares estimated to be at least 80% likely to still be available at the cached price; high raises that to 95%, so fewer fares come back.
The maximum number of destinations returned, 1 to 100, default 20. It counts destinations, not itineraries: each destination carries up to flights_per_destination itineraries.
The order of the results. lowest, the only order today, is cheapest first by the cached one-adult total; on find_destination it orders destinations by their cheapest itinerary. Omit it for the same order.
Whose price the cached fares in this answer are: always one_adult. Every cached total is one adult's fare; this request takes no passenger counts. Price the whole party with POST /v1/flight_search.
{"docsConfig":{"theme":"mint","$schema":"https://mintlify.com/docs.json","name":"Jinko Platform","description":"Connect your AI agent to flights, hotels, car rentals, and bookings through MCP, REST API, TypeScript SDK, or CLI.","colors":{"primary":"#FF6363","light":"#FF807C","dark":"#BA4B4A"},"logo":{"light":"https://mintcdn.com/jinko-dev/k6P2DyAYQF0FPJQi/logo/jinko-logo.png?fit=max\u0026auto=format\u0026n=k6P2DyAYQF0FPJQi\u0026q=85\u0026s=785a20dc553a2698bfffad325d1198d0","dark":"https://mintcdn.com/jinko-dev/k6P2DyAYQF0FPJQi/logo/jinko-logo.png?fit=max\u0026auto=format\u0026n=k6P2DyAYQF0FPJQi\u0026q=85\u0026s=785a20dc553a2698bfffad325d1198d0"},"favicon":"https://mintcdn.com/jinko-dev/k6P2DyAYQF0FPJQi/favicon.png?fit=max\u0026auto=format\u0026n=k6P2DyAYQF0FPJQi\u0026q=85\u0026s=770e72a193924011a067dcacdcb654cf","navbar":{"links":[{"href":"https://dashboard.gojinko.com","label":"Dashboard"}],"primary":{"type":"button","label":"Get API Key","href":"https://dashboard.gojinko.com/developers/keys"}},"footer":{"socials":{"website":"https://gojinko.com"}},"styling":{"latex":false},"navigation":{"pages":[]}},"deployment":{"deploymentMetadataValue":{"subdomain":"jinko-dev","hasAudioNarration":false,"actualSubdomain":"jinko-dev","customDomains":["docs.dev.gojinko.com"],"gitSource":{"type":"github","owner":"jinkoso","repo":"jinko-dev-platform","deployBranch":"main","contentDirectory":"docs","isPrivate":true,"mountPath":"","label":""},"entitlements":{},"buildId":"6aeece39c11f500273ffd5ec","clientVersion":"0.0.4076","searchFilterCounts":[{"language":"default","tag":"API reference","count":63},{"language":"default","tag":"CLI","count":49},{"language":"default","tag":"Flights","count":43},{"language":"default","tag":"Documentation","count":42},{"language":"default","tag":"MCP","count":23},{"language":"default","tag":"Manage","count":20},{"language":"default","tag":"Trip \u0026 Payment","count":19},{"language":"default","tag":"Discovery","count":17},{"language":"default","tag":"Hotels","count":16},{"language":"default","tag":"Travel Demand","count":14}]},"assistantConfig":{"enableAskAiButton":false,"enableStarterQuestions":false,"enableContextualStarterQuestions":false,"enableAskAiSearchBar":true},"basePath":"","hasChatPermissions":false,"hasWebMcpPermissions":false,"toggles":[{"name":"kill-isr","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-mintlify-slack","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-integrations-settings","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"rbac-expansion","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-pr-grouping","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"custom-prefix","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"analytics-v7","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"user-flows-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"no-publish-flow","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-onboarding","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"llms-txt-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving-live","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"stripTemperatureMiddleware","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"support-platform-pylon-zendesk","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"instant-rollback","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications-server","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-fable","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fixed-ai-action-pricing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automation-resolve-merge-conflict","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"scoped-publishing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"mintql","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"page-level-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-version-history-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"billing-page-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"full-page-search","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workspace-projects","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"assistant-v5","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fork-pr-previews","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"revalidation-jwt","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-sso-scim","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"hobby-abuse-scan","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"dashboard-inbox","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-signup","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"turbopuffer-dual-write","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-enabled","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"approve-review-flow","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-metadata","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"sso-setup-deadline-banner","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"turbopuffer-serve","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"live-agents","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"comment-mode","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false}],"googleFontsInlined":false},"customCss":[],"page":{"pagePath":"api/find-destination","slug":"/api/find-destination","pageMetadata":{"title":"find-destination","sidebarTitle":"/v1/find_destination","description":"Discover travel destinations accessible from your departure airports","openapi":"api-reference/public-api.yaml POST /v1/find_destination","href":"/api/find-destination"},"description":{"compiledSource":"\"use strict\";\nconst {jsx: _jsx} = arguments[0];\nconst {useMDXComponents: _provideComponents} = arguments[0];\nfunction _createMdxContent(props) {\n const _components = {\n p: \"p\",\n ..._provideComponents(),\n ...props.components\n };\n return _jsx(_components.p, {\n children: \"Discover travel destinations accessible from your departure airports\"\n });\n}\nfunction MDXContent(props = {}) {\n const {wrapper: MDXLayout} = {\n ..._provideComponents(),\n ...props.components\n };\n return MDXLayout ? _jsx(MDXLayout, {\n ...props,\n children: _jsx(_createMdxContent, {\n ...props\n })\n }) : _createMdxContent(props);\n}\nreturn {\n default: MDXContent\n};\n","frontmatter":{},"scope":{}},"pageType":"default","mdx":{"mdxSource":{"compiledSource":"\"use strict\";const{Fragment:_Fragment,jsx:_jsx,jsxs:_jsxs}=arguments[0];const{useMDXComponents:_provideComponents}=arguments[0];function _createMdxContent(props){const _components={a:`a`,code:`code`,p:`p`,strong:`strong`,..._provideComponents(),...props.components},{Note}=_components;if(!Note)_missingMdxReference(`Note`,true);return _jsxs(_Fragment,{children:[_jsx(_components.p,{children:`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.`}),`\n`,_jsx(Note,{children:_jsxs(_components.p,{children:[_jsx(_components.strong,{children:`Prices are in minor units.`}),` `,_jsx(_components.code,{children:`value`}),` is an integer — divide by\n`,_jsx(_components.code,{children:`10 ** decimal_places`}),` to display it. `,_jsx(_components.code,{children:`{ \"value\": 15977, \"decimal_places\": 2 }`}),`\nis `,_jsx(_components.strong,{children:`$159.77`}),`, not $15,977. See `,_jsx(_components.a,{href:`/concepts/money`,children:`Money \u0026 prices`}),`.`]})})]})}function MDXContent(props={}){const{wrapper:MDXLayout}={..._provideComponents(),...props.components};return MDXLayout?_jsx(MDXLayout,{...props,children:_jsx(_createMdxContent,{...props})}):_createMdxContent(props)}return{default:MDXContent};function _missingMdxReference(id,component){throw new Error(`Expected `+(component?`component`:`object`)+\" `\"+id+\"` to be defined: you likely forgot to import, pass, or provide it.\")}","frontmatter":{},"scope":{"config":{},"pageMetadata":{"title":"find-destination","sidebarTitle":"/v1/find_destination","description":"Discover travel destinations accessible from your departure airports","openapi":"api-reference/public-api.yaml POST /v1/find_destination","href":"/api/find-destination"}}},"mdxSourceWithNoJs":null},"mdxExtracts":{"tableOfContents":[],"codeExamples":{}},"jsLinks":[],"openApiReferenceData":{"operation":{"tags":["Discovery"],"summary":"Discover travel destinations accessible from your departure airports","security":["ce5fe646-6e26-4a52-9c93-561abb7ed6cb","2dab8bd2-a885-4099-8305-f2a0dff06354"],"requestBody":"89c323ac-f7d0-4073-b8c0-f1e0d2305ad8","responses":{"200":"36d96971-dc27-43c0-b769-ff55972aaff6","400":"d88738a8-35e3-4e9a-861b-81baecc8dfbb","401":"5a1e7ec9-4556-431e-abed-97367a7a164c","402":"17920061-8be8-4176-b274-4ccd08e4578a","404":"e5e272c6-0066-4a7e-a71e-0860445be07c","409":"d27ac342-ca25-4699-996b-9556ba55c59d","410":"a549cb10-93ba-497a-b6fe-2083c0c6f80b","422":"88096d12-33bc-4a92-8363-78f516095213","429":"ca3f8d4c-34e6-4ab2-8d49-f42eb95c0e50","502":"f2c230bc-a01c-45bf-9b96-4b1045543933","503":"abe3bf42-1755-4bcf-a226-00e0b5eb89e5","504":"caef4695-0a7a-4c89-a517-8cbf8d3807c9"},"method":"post","type":"path","servers":["6c2e2c14-8667-4ef1-a6c7-d1e7fb982378","0b2c8592-7b6b-4acc-9351-2a69f3e0f42a"],"path":"/v1/find_destination","baseUrlOptions":["https://api.gojinko.com","https://api.sandbox.gojinko.com"],"title":"Discover travel destinations accessible from your departure airports","description":"Discover travel destinations accessible from your departure airports","codeSamples":[],"requiredOnlyExamples":false,"requestExampleType":"generated","responseExampleType":"generated"},"dependencies":{"parameters":{},"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"origins":{"type":"array","items":{"type":"string","uniqueKey":"origins.items.[INDEX]","typeLabel":"string"},"minItems":1,"description":"IATA city or airport codes. See `origin_type` for how an untyped code is read.","example":["NYC"],"isRequired":true,"uniqueKey":"origins","typeLabel":"string[]"},"trip_type":{"type":"string","enum":["oneway","roundtrip"],"example":"roundtrip","isRequired":true,"uniqueKey":"trip_type","typeLabel":"enum\u003cstring>"},"destinations":{"type":"array","items":{"type":"string","uniqueKey":"destinations.items.[INDEX]","typeLabel":"string"},"description":"IATA city or airport codes. Omit for global discovery (`find_destination`) or to scan every destination from the origins. See `destination_type` for how an untyped code is read.","example":["PAR"],"uniqueKey":"destinations","typeLabel":"string[]"},"origin_type":{"type":"string","enum":["city","airport"],"description":"How to read the code: `city` searches every airport of the city, `airport` only that one airport. Omit it and the platform applies one rule: a code that names a multi-airport city is searched as the city; every other code is searched as the airport. Untyped NYC, LON or PAR is the city; untyped JFK, LHR or CDG is the airport; and untyped LAX, MIA or LAS — codes a city shares with its main airport — is the CITY, so results can land at any airport of that city. If the user named the airport, send `airport`; if they named the city, omit the field.","example":"city","uniqueKey":"origin_type","typeLabel":"enum\u003cstring>"},"destination_type":{"type":"string","enum":["city","airport"],"description":"How to read the code: `city` searches every airport of the city, `airport` only that one airport. Omit it and the platform applies one rule: a code that names a multi-airport city is searched as the city; every other code is searched as the airport. Untyped NYC, LON or PAR is the city; untyped JFK, LHR or CDG is the airport; and untyped LAX, MIA or LAS — codes a city shares with its main airport — is the CITY, so results can land at any airport of that city. If the user named the airport, send `airport`; if they named the city, omit the field.","example":"city","uniqueKey":"destination_type","typeLabel":"enum\u003cstring>"},"departure_dates":{"type":"array","items":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$","uniqueKey":"departure_dates.items.[INDEX]","typeLabel":"string"},"example":["2026-07-15"],"uniqueKey":"departure_dates","typeLabel":"string[]"},"departure_date_ranges":{"type":"array","items":{"type":"object","properties":{"start":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$","isRequired":true,"uniqueKey":"departure_date_ranges.items.[INDEX].start","typeLabel":"string"},"end":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$","isRequired":true,"uniqueKey":"departure_date_ranges.items.[INDEX].end","typeLabel":"string"}},"required":["start","end"],"description":"Inclusive range of dates. `start` must be on or before `end`; a one-day range has `start` equal to `end`.","example":{"start":"2026-06-01","end":"2026-06-30"},"uniqueKey":"departure_date_ranges.items.[INDEX]","typeLabel":"object"},"uniqueKey":"departure_date_ranges","typeLabel":"object[]"},"return_dates":{"type":"array","items":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$","uniqueKey":"return_dates.items.[INDEX]","typeLabel":"string"},"example":["2026-07-22"],"uniqueKey":"return_dates","typeLabel":"string[]"},"return_date_ranges":{"type":"array","items":{"type":"object","properties":{"start":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$","isRequired":true,"uniqueKey":"return_date_ranges.items.[INDEX].start","typeLabel":"string"},"end":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$","isRequired":true,"uniqueKey":"return_date_ranges.items.[INDEX].end","typeLabel":"string"}},"required":["start","end"],"description":"Inclusive range of dates. `start` must be on or before `end`; a one-day range has `start` equal to `end`.","example":{"start":"2026-06-01","end":"2026-06-30"},"uniqueKey":"return_date_ranges.items.[INDEX]","typeLabel":"object"},"uniqueKey":"return_date_ranges","typeLabel":"object[]"},"stay_days":{"type":"integer","minimum":0,"exclusiveMinimum":true,"example":7,"uniqueKey":"stay_days","typeLabel":"integer"},"stay_days_range":{"type":"object","properties":{"min":{"type":"integer","isRequired":true,"uniqueKey":"stay_days_range.min","typeLabel":"integer"},"max":{"type":"integer","isRequired":true,"uniqueKey":"stay_days_range.max","typeLabel":"integer"}},"required":["min","max"],"uniqueKey":"stay_days_range","typeLabel":"object"},"cabin_class":{"type":"string","enum":["economy","premium_economy","business","first"],"example":"economy","uniqueKey":"cabin_class","typeLabel":"enum\u003cstring>"},"direct_only":{"type":"boolean","description":"Only direct flights. Cached fares record whether a fare is direct but not how many stops it makes, so this is the only stop filter here; POST /v1/flight_search takes `max_stops`.","example":false,"uniqueKey":"direct_only","typeLabel":"boolean"},"accuracy":{"type":"string","enum":["standard","high"],"description":"How strict the freshness check on cached fares is. `standard` (default) returns fares estimated to be at least 80% likely to still be available at the cached price; `high` raises that to 95%, so fewer fares come back.","example":"standard","uniqueKey":"accuracy","typeLabel":"enum\u003cstring>"},"max_total":{"type":"number","minimum":0,"exclusiveMinimum":true,"description":"Caps the cached fare's total. Cached fares are priced for one adult.","example":800,"uniqueKey":"max_total","typeLabel":"number"},"currency":{"type":"string","example":"USD","uniqueKey":"currency","typeLabel":"string"},"locale":{"type":"string","example":"en-US","uniqueKey":"locale","typeLabel":"string"},"limit":{"type":"integer","minimum":1,"maximum":100,"default":20,"description":"The maximum number of destinations returned, 1 to 100, default 20. It counts destinations, not itineraries: each destination carries up to `flights_per_destination` itineraries.","uniqueKey":"limit","typeLabel":"integer"},"offset":{"type":"integer","minimum":0,"default":0,"uniqueKey":"offset","typeLabel":"integer"},"sort_by":{"type":"string","enum":["lowest"],"default":"lowest","description":"The order of the results. `lowest`, the only order today, is cheapest first by the cached one-adult total; on `find_destination` it orders destinations by their cheapest itinerary. Omit it for the same order.","uniqueKey":"sort_by","typeLabel":"enum\u003cstring>"},"intent":{"type":"object","properties":{"user_intent":{"oneOf":[{"type":"string","description":"The user's natural-language intent: the Alpic PII-stripped paraphrase when available, else a best-effort fallback to the client-provided NL query.","example":"find a cheap flight to Tokyo","uniqueKey":"intent.user_intent.oneOf.0","typeLabel":"string"},{"type":"null","description":"The user's natural-language intent: the Alpic PII-stripped paraphrase when available, else a best-effort fallback to the client-provided NL query.","example":"find a cheap flight to Tokyo","uniqueKey":"intent.user_intent.oneOf.1","typeLabel":"null"}],"uniqueKey":"intent.user_intent","typeLabel":"string | null"}},"uniqueKey":"intent","typeLabel":"object"},"flights_per_destination":{"type":"integer","minimum":1,"maximum":10,"default":1,"uniqueKey":"flights_per_destination","typeLabel":"integer"}},"required":["origins","trip_type"],"example":{"origins":["NYC"],"trip_type":"roundtrip","departure_date_ranges":[{"start":"2026-09-01","end":"2026-09-30"}],"stay_days":7,"cabin_class":"economy","max_total":800,"currency":"USD","flights_per_destination":1},"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"origins":["NYC"],"trip_type":"roundtrip","departure_date_ranges":[{"start":"2026-09-01","end":"2026-09-30"}],"stay_days":7,"cabin_class":"economy","max_total":800,"currency":"USD","flights_per_destination":1}}},"exampleType":"generated"}},"exampleType":"generated"},"responses":{"36d96971-dc27-43c0-b769-ff55972aaff6":{"description":"Matching destinations","content":{"application/json":{"schema":{"type":"object","properties":{"priced_for":{"type":"string","enum":["one_adult"],"description":"Whose price the cached fares in this answer are: always `one_adult`. Every cached total is one adult's fare; this request takes no passenger counts. Price the whole party with `POST /v1/flight_search`.","example":"one_adult","isRequired":true,"uniqueKey":"priced_for","typeLabel":"enum\u003cstring>"},"destinations":{"type":"array","items":{"type":"object","properties":{"flights":{"type":"array","items":{"type":"object","properties":{"offer_token":{"type":"string","description":"This cached itinerary’s offer token: pass it unchanged as `offer_token` to `POST /v1/flight_search` to price-check it live. It cannot be added to a trip.","example":"es-VVN8QUZ8MjAyNzA2MTU6QUY6Nzo6WXwyMDI3MDYyMjpBRjo2OjpZ","isRequired":true,"uniqueKey":"destinations.items.[INDEX].flights.items.[INDEX].offer_token","typeLabel":"string"},"id":{"type":"string","description":"Deprecated: use `offer_token` instead. Same value.","example":"es-VVN8QUZ8MjAyNzA2MTU6QUY6Nzo6WXwyMDI3MDYyMjpBRjo2OjpZ","deprecated":true,"isRequired":true,"uniqueKey":"destinations.items.[INDEX].flights.items.[INDEX].id","typeLabel":"string"},"origin":{"type":"object","properties":{"code":{"type":"string","isRequired":true,"uniqueKey":"destinations.items.[INDEX].flights.items.[INDEX].origin.code","typeLabel":"string"},"name":{"type":"string","uniqueKey":"destinations.items.[INDEX].flights.items.[INDEX].origin.name","typeLabel":"string"}},"required":["code"],"example":{"code":"JFK","name":"New York John F. Kennedy"},"isRequired":true,"uniqueKey":"destinations.items.[INDEX].flights.items.[INDEX].origin","typeLabel":"object"},"destination":{"type":"object","properties":{"code":{"type":"string","isRequired":true,"uniqueKey":"destinations.items.[INDEX].flights.items.[INDEX].destination.code","typeLabel":"string"},"name":{"type":"string","uniqueKey":"destinations.items.[INDEX].flights.items.[INDEX].destination.name","typeLabel":"string"}},"required":["code"],"example":{"code":"CDG","name":"Paris Charles de Gaulle"},"isRequired":true,"uniqueKey":"destinations.items.[INDEX].flights.items.[INDEX].destination","typeLabel":"object"},"total":{"type":"object","description":"One adult's fare (`priced_for: \"one_adult\"`): the cache holds one-adult fares only. To price the whole party, pass `offer_token` to `POST /v1/flight_search` with the party.","required":["value","currency"],"properties":{"value":{"type":"integer","description":"Integer amount in MINOR units, always paired with decimal_places — divide by 10 ** decimal_places to display. Example: value 15977 with decimal_places 2 is 159.77 USD. Rendering this field directly shows prices 100x too high for 2-decimal currencies.","example":41250,"isRequired":true,"uniqueKey":"destinations.items.[INDEX].flights.items.[INDEX].total.value","typeLabel":"integer"},"currency":{"type":"string","description":"ISO 4217 currency code.","example":"USD","isRequired":true,"uniqueKey":"destinations.items.[INDEX].flights.items.[INDEX].total.currency","typeLabel":"string"},"decimal_places":{"type":"integer","description":"Scale of the integer value/amount: display = integer / 10 ** decimal_places. Always sent alongside minor-unit amounts. Usually the ISO 4217 digits of the currency (2 for USD/EUR/GBP, 0 for JPY/KRW, 3 for BHD/JOD/KWD) but currency-converted prices can carry a different scale — ALWAYS use the decimal_places sent with the amount, never a hardcoded 2. Only if the field is genuinely absent on a value-shaped object, fall back to the ISO digits for the currency.","example":2,"uniqueKey":"destinations.items.[INDEX].flights.items.[INDEX].total.decimal_places","typeLabel":"integer"},"display":{"type":"string","description":"The same figure as a string ready to show: the ISO 4217 code, a space, then the amount, e.g. \"USD 159.77\". With decimal_places it is written at exactly that scale (value 1561500, JPY, decimal_places 2 is \"JPY 15615.00\"); without, at the ISO digits of the currency. Show this; compute with the number. Absent when the figure is not money (a cancellation step expressed as a percent or a number of nights) or could not be read unambiguously.","example":"USD 412.50","uniqueKey":"destinations.items.[INDEX].flights.items.[INDEX].total.display","typeLabel":"string"}},"uniqueKey":"destinations.items.[INDEX].flights.items.[INDEX].total","typeLabel":"object"},"cabin_class":{"type":"string","example":"economy","uniqueKey":"destinations.items.[INDEX].flights.items.[INDEX].cabin_class","typeLabel":"string"},"outbound":{"type":"object","description":"The outbound journey this price is for — the departure date and time are in `departure_datetime`. Absent on cached rows stored before the platform kept the flown itinerary.","properties":{"origin":{"type":"string","example":"JFK","uniqueKey":"destinations.items.[INDEX].flights.items.[INDEX].outbound.origin","typeLabel":"string"},"destination":{"type":"string","example":"LAX","uniqueKey":"destinations.items.[INDEX].flights.items.[INDEX].outbound.destination","typeLabel":"string"},"departure_datetime":{"type":"string","description":"Local time at the airport, RFC 3339 with that airport’s UTC offset (e.g. `2026-09-23T11:55:00-04:00`). Parse it as an instant; do not assume UTC and do not compare two of these as strings. On the rare airport whose timezone the platform does not know, a cached time keeps its local wall-clock digits but is written as UTC (`…Z`), so it reads as an instant that is off by that airport’s true offset; the offset is never omitted here, unlike on a live leg. The `*_local` fields of a booked or exchanged itinerary are NOT this: those carry wall-clock time with no offset, by design.","example":"2026-07-15T08:30:00-04:00","uniqueKey":"destinations.items.[INDEX].flights.items.[INDEX].outbound.departure_datetime","typeLabel":"string"},"arrival_datetime":{"type":"string","description":"Local time at the airport, RFC 3339 with that airport’s UTC offset (e.g. `2026-09-23T11:55:00-04:00`). Parse it as an instant; do not assume UTC and do not compare two of these as strings. On the rare airport whose timezone the platform does not know, a cached time keeps its local wall-clock digits but is written as UTC (`…Z`), so it reads as an instant that is off by that airport’s true offset; the offset is never omitted here, unlike on a live leg. The `*_local` fields of a booked or exchanged itinerary are NOT this: those carry wall-clock time with no offset, by design.","example":"2026-07-15T11:55:00-07:00","uniqueKey":"destinations.items.[INDEX].flights.items.[INDEX].outbound.arrival_datetime","typeLabel":"string"},"duration_minutes":{"type":"number","example":385,"uniqueKey":"destinations.items.[INDEX].flights.items.[INDEX].outbound.duration_minutes","typeLabel":"number"},"airline":{"type":"string","example":"AA","uniqueKey":"destinations.items.[INDEX].flights.items.[INDEX].outbound.airline","typeLabel":"string"},"airline_name":{"type":"string","example":"American Airlines","uniqueKey":"destinations.items.[INDEX].flights.items.[INDEX].outbound.airline_name","typeLabel":"string"},"stops":{"type":"number","example":0,"uniqueKey":"destinations.items.[INDEX].flights.items.[INDEX].outbound.stops","typeLabel":"number"},"stop_infos":{"type":"array","items":{"type":"object","properties":{"airport_code":{"type":"string","description":"IATA code of the airport where the leg stops.","example":"DFW","uniqueKey":"destinations.items.[INDEX].flights.items.[INDEX].outbound.stop_infos.items.[INDEX].airport_code","typeLabel":"string"},"duration_minutes":{"type":"number","description":"Layover length in minutes (arrival of the inbound segment to departure of the next). Omitted when the upstream times cannot be resolved.","example":95,"uniqueKey":"destinations.items.[INDEX].flights.items.[INDEX].outbound.stop_infos.items.[INDEX].duration_minutes","typeLabel":"number"}},"uniqueKey":"destinations.items.[INDEX].flights.items.[INDEX].outbound.stop_infos.items.[INDEX]","typeLabel":"object"},"description":"Layover detail, one entry per stop, in travel order. Absent when the leg is non-stop (`stops: 0`) or when upstream detail is incomplete for any stop; `stops` still reports the connection count in that case.","example":[{"airport_code":"DFW","duration_minutes":95}],"uniqueKey":"destinations.items.[INDEX].flights.items.[INDEX].outbound.stop_infos","typeLabel":"object[]"},"segments":{"type":"array","items":{"type":"object","properties":{"airline":{"type":"string","description":"IATA code of the MARKETING carrier — whose flight number you booked.","example":"AA","uniqueKey":"destinations.items.[INDEX].flights.items.[INDEX].outbound.segments.items.[INDEX].airline","typeLabel":"string"},"airline_name":{"type":"string","example":"American Airlines","uniqueKey":"destinations.items.[INDEX].flights.items.[INDEX].outbound.segments.items.[INDEX].airline_name","typeLabel":"string"},"flight_number":{"type":"string","description":"Provider flight number, forwarded unchanged. Depending on the upstream provider it may be a bare number such as `460` or a composed designator such as `AS460`; the carrier code is also carried separately when known.","example":"460","uniqueKey":"destinations.items.[INDEX].flights.items.[INDEX].outbound.segments.items.[INDEX].flight_number","typeLabel":"string"},"departure_airport":{"type":"string","example":"JFK","uniqueKey":"destinations.items.[INDEX].flights.items.[INDEX].outbound.segments.items.[INDEX].departure_airport","typeLabel":"string"},"departure_city":{"type":"string","example":"New York","uniqueKey":"destinations.items.[INDEX].flights.items.[INDEX].outbound.segments.items.[INDEX].departure_city","typeLabel":"string"},"departure_time":{"type":"string","description":"Local time at the airport, RFC 3339 with that airport’s UTC offset (e.g. `2026-09-23T11:55:00-04:00`). Parse it as an instant; do not assume UTC and do not compare two of these as strings. On the rare airport whose timezone the platform does not know, a cached time keeps its local wall-clock digits but is written as UTC (`…Z`), so it reads as an instant that is off by that airport’s true offset; the offset is never omitted here, unlike on a live leg. The `*_local` fields of a booked or exchanged itinerary are NOT this: those carry wall-clock time with no offset, by design.","example":"2026-09-23T11:55:00-04:00","uniqueKey":"destinations.items.[INDEX].flights.items.[INDEX].outbound.segments.items.[INDEX].departure_time","typeLabel":"string"},"arrival_airport":{"type":"string","example":"DFW","uniqueKey":"destinations.items.[INDEX].flights.items.[INDEX].outbound.segments.items.[INDEX].arrival_airport","typeLabel":"string"},"arrival_city":{"type":"string","example":"Dallas","uniqueKey":"destinations.items.[INDEX].flights.items.[INDEX].outbound.segments.items.[INDEX].arrival_city","typeLabel":"string"},"arrival_time":{"type":"string","description":"Local time at the airport, RFC 3339 with that airport’s UTC offset (e.g. `2026-09-23T11:55:00-04:00`). Parse it as an instant; do not assume UTC and do not compare two of these as strings. On the rare airport whose timezone the platform does not know, a cached time keeps its local wall-clock digits but is written as UTC (`…Z`), so it reads as an instant that is off by that airport’s true offset; the offset is never omitted here, unlike on a live leg. The `*_local` fields of a booked or exchanged itinerary are NOT this: those carry wall-clock time with no offset, by design.","example":"2026-09-23T15:10:00-05:00","uniqueKey":"destinations.items.[INDEX].flights.items.[INDEX].outbound.segments.items.[INDEX].arrival_time","typeLabel":"string"},"duration_minutes":{"type":"number","example":255,"uniqueKey":"destinations.items.[INDEX].flights.items.[INDEX].outbound.segments.items.[INDEX].duration_minutes","typeLabel":"number"},"layover_minutes":{"type":"number","description":"Wait between this segment’s arrival and the next departure. Absent on the last segment of a leg, and whenever the upstream times could not be resolved.","example":95,"uniqueKey":"destinations.items.[INDEX].flights.items.[INDEX].outbound.segments.items.[INDEX].layover_minutes","typeLabel":"number"},"operating_carrier":{"type":"string","description":"IATA code of the carrier that actually OPERATES the segment, when the cached fare recorded one. A value differing from `airline` is a codeshare the passenger must be told about. Equality is not guaranteed to be stated: the field is absent when the cached record carries no operating carrier, which says nothing about who operates the flight.","example":"MQ","uniqueKey":"destinations.items.[INDEX].flights.items.[INDEX].outbound.segments.items.[INDEX].operating_carrier","typeLabel":"string"}},"uniqueKey":"destinations.items.[INDEX].flights.items.[INDEX].outbound.segments.items.[INDEX]","typeLabel":"object"},"description":"The flown segments of this leg, in travel order — one per flight. A non-stop leg has one. Read `operating_carrier` here to disclose a codeshare the cached fare recorded. Absent when the cached row has no segment breakdown, in which case `stops` and `stop_infos` are all that is known about the leg.","uniqueKey":"destinations.items.[INDEX].flights.items.[INDEX].outbound.segments","typeLabel":"object[]"}},"uniqueKey":"destinations.items.[INDEX].flights.items.[INDEX].outbound","typeLabel":"object"},"inbound":{"type":"object","description":"The return journey. Present on a round trip only, and absent on an older cached row the same way `outbound` is.","properties":{"origin":{"type":"string","example":"JFK","uniqueKey":"destinations.items.[INDEX].flights.items.[INDEX].inbound.origin","typeLabel":"string"},"destination":{"type":"string","example":"LAX","uniqueKey":"destinations.items.[INDEX].flights.items.[INDEX].inbound.destination","typeLabel":"string"},"departure_datetime":{"type":"string","description":"Local time at the airport, RFC 3339 with that airport’s UTC offset (e.g. `2026-09-23T11:55:00-04:00`). Parse it as an instant; do not assume UTC and do not compare two of these as strings. On the rare airport whose timezone the platform does not know, a cached time keeps its local wall-clock digits but is written as UTC (`…Z`), so it reads as an instant that is off by that airport’s true offset; the offset is never omitted here, unlike on a live leg. The `*_local` fields of a booked or exchanged itinerary are NOT this: those carry wall-clock time with no offset, by design.","example":"2026-07-15T08:30:00-04:00","uniqueKey":"destinations.items.[INDEX].flights.items.[INDEX].inbound.departure_datetime","typeLabel":"string"},"arrival_datetime":{"type":"string","description":"Local time at the airport, RFC 3339 with that airport’s UTC offset (e.g. `2026-09-23T11:55:00-04:00`). Parse it as an instant; do not assume UTC and do not compare two of these as strings. On the rare airport whose timezone the platform does not know, a cached time keeps its local wall-clock digits but is written as UTC (`…Z`), so it reads as an instant that is off by that airport’s true offset; the offset is never omitted here, unlike on a live leg. The `*_local` fields of a booked or exchanged itinerary are NOT this: those carry wall-clock time with no offset, by design.","example":"2026-07-15T11:55:00-07:00","uniqueKey":"destinations.items.[INDEX].flights.items.[INDEX].inbound.arrival_datetime","typeLabel":"string"},"duration_minutes":{"type":"number","example":385,"uniqueKey":"destinations.items.[INDEX].flights.items.[INDEX].inbound.duration_minutes","typeLabel":"number"},"airline":{"type":"string","example":"AA","uniqueKey":"destinations.items.[INDEX].flights.items.[INDEX].inbound.airline","typeLabel":"string"},"airline_name":{"type":"string","example":"American Airlines","uniqueKey":"destinations.items.[INDEX].flights.items.[INDEX].inbound.airline_name","typeLabel":"string"},"stops":{"type":"number","example":0,"uniqueKey":"destinations.items.[INDEX].flights.items.[INDEX].inbound.stops","typeLabel":"number"},"stop_infos":{"type":"array","items":{"type":"object","properties":{"airport_code":{"type":"string","description":"IATA code of the airport where the leg stops.","example":"DFW","uniqueKey":"destinations.items.[INDEX].flights.items.[INDEX].inbound.stop_infos.items.[INDEX].airport_code","typeLabel":"string"},"duration_minutes":{"type":"number","description":"Layover length in minutes (arrival of the inbound segment to departure of the next). Omitted when the upstream times cannot be resolved.","example":95,"uniqueKey":"destinations.items.[INDEX].flights.items.[INDEX].inbound.stop_infos.items.[INDEX].duration_minutes","typeLabel":"number"}},"uniqueKey":"destinations.items.[INDEX].flights.items.[INDEX].inbound.stop_infos.items.[INDEX]","typeLabel":"object"},"description":"Layover detail, one entry per stop, in travel order. Absent when the leg is non-stop (`stops: 0`) or when upstream detail is incomplete for any stop; `stops` still reports the connection count in that case.","example":[{"airport_code":"DFW","duration_minutes":95}],"uniqueKey":"destinations.items.[INDEX].flights.items.[INDEX].inbound.stop_infos","typeLabel":"object[]"},"segments":{"type":"array","items":{"type":"object","properties":{"airline":{"type":"string","description":"IATA code of the MARKETING carrier — whose flight number you booked.","example":"AA","uniqueKey":"destinations.items.[INDEX].flights.items.[INDEX].inbound.segments.items.[INDEX].airline","typeLabel":"string"},"airline_name":{"type":"string","example":"American Airlines","uniqueKey":"destinations.items.[INDEX].flights.items.[INDEX].inbound.segments.items.[INDEX].airline_name","typeLabel":"string"},"flight_number":{"type":"string","description":"Provider flight number, forwarded unchanged. Depending on the upstream provider it may be a bare number such as `460` or a composed designator such as `AS460`; the carrier code is also carried separately when known.","example":"460","uniqueKey":"destinations.items.[INDEX].flights.items.[INDEX].inbound.segments.items.[INDEX].flight_number","typeLabel":"string"},"departure_airport":{"type":"string","example":"JFK","uniqueKey":"destinations.items.[INDEX].flights.items.[INDEX].inbound.segments.items.[INDEX].departure_airport","typeLabel":"string"},"departure_city":{"type":"string","example":"New York","uniqueKey":"destinations.items.[INDEX].flights.items.[INDEX].inbound.segments.items.[INDEX].departure_city","typeLabel":"string"},"departure_time":{"type":"string","description":"Local time at the airport, RFC 3339 with that airport’s UTC offset (e.g. `2026-09-23T11:55:00-04:00`). Parse it as an instant; do not assume UTC and do not compare two of these as strings. On the rare airport whose timezone the platform does not know, a cached time keeps its local wall-clock digits but is written as UTC (`…Z`), so it reads as an instant that is off by that airport’s true offset; the offset is never omitted here, unlike on a live leg. The `*_local` fields of a booked or exchanged itinerary are NOT this: those carry wall-clock time with no offset, by design.","example":"2026-09-23T11:55:00-04:00","uniqueKey":"destinations.items.[INDEX].flights.items.[INDEX].inbound.segments.items.[INDEX].departure_time","typeLabel":"string"},"arrival_airport":{"type":"string","example":"DFW","uniqueKey":"destinations.items.[INDEX].flights.items.[INDEX].inbound.segments.items.[INDEX].arrival_airport","typeLabel":"string"},"arrival_city":{"type":"string","example":"Dallas","uniqueKey":"destinations.items.[INDEX].flights.items.[INDEX].inbound.segments.items.[INDEX].arrival_city","typeLabel":"string"},"arrival_time":{"type":"string","description":"Local time at the airport, RFC 3339 with that airport’s UTC offset (e.g. `2026-09-23T11:55:00-04:00`). Parse it as an instant; do not assume UTC and do not compare two of these as strings. On the rare airport whose timezone the platform does not know, a cached time keeps its local wall-clock digits but is written as UTC (`…Z`), so it reads as an instant that is off by that airport’s true offset; the offset is never omitted here, unlike on a live leg. The `*_local` fields of a booked or exchanged itinerary are NOT this: those carry wall-clock time with no offset, by design.","example":"2026-09-23T15:10:00-05:00","uniqueKey":"destinations.items.[INDEX].flights.items.[INDEX].inbound.segments.items.[INDEX].arrival_time","typeLabel":"string"},"duration_minutes":{"type":"number","example":255,"uniqueKey":"destinations.items.[INDEX].flights.items.[INDEX].inbound.segments.items.[INDEX].duration_minutes","typeLabel":"number"},"layover_minutes":{"type":"number","description":"Wait between this segment’s arrival and the next departure. Absent on the last segment of a leg, and whenever the upstream times could not be resolved.","example":95,"uniqueKey":"destinations.items.[INDEX].flights.items.[INDEX].inbound.segments.items.[INDEX].layover_minutes","typeLabel":"number"},"operating_carrier":{"type":"string","description":"IATA code of the carrier that actually OPERATES the segment, when the cached fare recorded one. A value differing from `airline` is a codeshare the passenger must be told about. Equality is not guaranteed to be stated: the field is absent when the cached record carries no operating carrier, which says nothing about who operates the flight.","example":"MQ","uniqueKey":"destinations.items.[INDEX].flights.items.[INDEX].inbound.segments.items.[INDEX].operating_carrier","typeLabel":"string"}},"uniqueKey":"destinations.items.[INDEX].flights.items.[INDEX].inbound.segments.items.[INDEX]","typeLabel":"object"},"description":"The flown segments of this leg, in travel order — one per flight. A non-stop leg has one. Read `operating_carrier` here to disclose a codeshare the cached fare recorded. Absent when the cached row has no segment breakdown, in which case `stops` and `stop_infos` are all that is known about the leg.","uniqueKey":"destinations.items.[INDEX].flights.items.[INDEX].inbound.segments","typeLabel":"object[]"}},"uniqueKey":"destinations.items.[INDEX].flights.items.[INDEX].inbound","typeLabel":"object"},"priced_at":{"type":"string","description":"When this price was collected, RFC 3339 UTC. These results come from the cache and can be days old — re-price with `flight_search` before quoting or booking.","example":"2026-09-19T03:57:25Z","uniqueKey":"destinations.items.[INDEX].flights.items.[INDEX].priced_at","typeLabel":"string"}},"required":["offer_token","id","origin","destination"],"uniqueKey":"destinations.items.[INDEX].flights.items.[INDEX]","typeLabel":"object"},"description":"One adult's fare (`priced_for: \"one_adult\"`): the cache holds one-adult fares only.","isRequired":true,"uniqueKey":"destinations.items.[INDEX].flights","typeLabel":"object[]"},"city_name":{"type":"string","example":"Paris","uniqueKey":"destinations.items.[INDEX].city_name","typeLabel":"string"},"iata_code":{"type":"string","example":"PAR","uniqueKey":"destinations.items.[INDEX].iata_code","typeLabel":"string"},"image_url":{"type":"string","example":"https://images.gojinko.com/destinations/par.jpg","uniqueKey":"destinations.items.[INDEX].image_url","typeLabel":"string"},"location":{"type":"object","properties":{"latitude":{"type":"number","isRequired":true,"uniqueKey":"destinations.items.[INDEX].location.latitude","typeLabel":"number"},"longitude":{"type":"number","isRequired":true,"uniqueKey":"destinations.items.[INDEX].location.longitude","typeLabel":"number"}},"required":["latitude","longitude"],"example":{"latitude":48.8566,"longitude":2.3522},"uniqueKey":"destinations.items.[INDEX].location","typeLabel":"object"},"lowest_fare":{"type":"object","description":"One adult's fare (`priced_for: \"one_adult\"`): the cache holds one-adult fares only.","required":["offer_token","id","origin","destination"],"properties":{"offer_token":{"type":"string","description":"This cached itinerary’s offer token: pass it unchanged as `offer_token` to `POST /v1/flight_search` to price-check it live. It cannot be added to a trip.","example":"es-VVN8QUZ8MjAyNzA2MTU6QUY6Nzo6WXwyMDI3MDYyMjpBRjo2OjpZ","isRequired":true,"uniqueKey":"destinations.items.[INDEX].lowest_fare.offer_token","typeLabel":"string"},"id":{"type":"string","description":"Deprecated: use `offer_token` instead. Same value.","example":"es-VVN8QUZ8MjAyNzA2MTU6QUY6Nzo6WXwyMDI3MDYyMjpBRjo2OjpZ","deprecated":true,"isRequired":true,"uniqueKey":"destinations.items.[INDEX].lowest_fare.id","typeLabel":"string"},"origin":{"type":"object","properties":{"code":{"type":"string","isRequired":true,"uniqueKey":"destinations.items.[INDEX].lowest_fare.origin.code","typeLabel":"string"},"name":{"type":"string","uniqueKey":"destinations.items.[INDEX].lowest_fare.origin.name","typeLabel":"string"}},"required":["code"],"example":{"code":"JFK","name":"New York John F. Kennedy"},"isRequired":true,"uniqueKey":"destinations.items.[INDEX].lowest_fare.origin","typeLabel":"object"},"destination":{"type":"object","properties":{"code":{"type":"string","isRequired":true,"uniqueKey":"destinations.items.[INDEX].lowest_fare.destination.code","typeLabel":"string"},"name":{"type":"string","uniqueKey":"destinations.items.[INDEX].lowest_fare.destination.name","typeLabel":"string"}},"required":["code"],"example":{"code":"CDG","name":"Paris Charles de Gaulle"},"isRequired":true,"uniqueKey":"destinations.items.[INDEX].lowest_fare.destination","typeLabel":"object"},"total":{"type":"object","description":"One adult's fare (`priced_for: \"one_adult\"`): the cache holds one-adult fares only. To price the whole party, pass `offer_token` to `POST /v1/flight_search` with the party.","required":["value","currency"],"properties":{"value":{"type":"integer","description":"Integer amount in MINOR units, always paired with decimal_places — divide by 10 ** decimal_places to display. Example: value 15977 with decimal_places 2 is 159.77 USD. Rendering this field directly shows prices 100x too high for 2-decimal currencies.","example":41250,"isRequired":true,"uniqueKey":"destinations.items.[INDEX].lowest_fare.total.value","typeLabel":"integer"},"currency":{"type":"string","description":"ISO 4217 currency code.","example":"USD","isRequired":true,"uniqueKey":"destinations.items.[INDEX].lowest_fare.total.currency","typeLabel":"string"},"decimal_places":{"type":"integer","description":"Scale of the integer value/amount: display = integer / 10 ** decimal_places. Always sent alongside minor-unit amounts. Usually the ISO 4217 digits of the currency (2 for USD/EUR/GBP, 0 for JPY/KRW, 3 for BHD/JOD/KWD) but currency-converted prices can carry a different scale — ALWAYS use the decimal_places sent with the amount, never a hardcoded 2. Only if the field is genuinely absent on a value-shaped object, fall back to the ISO digits for the currency.","example":2,"uniqueKey":"destinations.items.[INDEX].lowest_fare.total.decimal_places","typeLabel":"integer"},"display":{"type":"string","description":"The same figure as a string ready to show: the ISO 4217 code, a space, then the amount, e.g. \"USD 159.77\". With decimal_places it is written at exactly that scale (value 1561500, JPY, decimal_places 2 is \"JPY 15615.00\"); without, at the ISO digits of the currency. Show this; compute with the number. Absent when the figure is not money (a cancellation step expressed as a percent or a number of nights) or could not be read unambiguously.","example":"USD 412.50","uniqueKey":"destinations.items.[INDEX].lowest_fare.total.display","typeLabel":"string"}},"uniqueKey":"destinations.items.[INDEX].lowest_fare.total","typeLabel":"object"},"cabin_class":{"type":"string","example":"economy","uniqueKey":"destinations.items.[INDEX].lowest_fare.cabin_class","typeLabel":"string"},"outbound":{"type":"object","description":"The outbound journey this price is for — the departure date and time are in `departure_datetime`. Absent on cached rows stored before the platform kept the flown itinerary.","properties":{"origin":{"type":"string","example":"JFK","uniqueKey":"destinations.items.[INDEX].lowest_fare.outbound.origin","typeLabel":"string"},"destination":{"type":"string","example":"LAX","uniqueKey":"destinations.items.[INDEX].lowest_fare.outbound.destination","typeLabel":"string"},"departure_datetime":{"type":"string","description":"Local time at the airport, RFC 3339 with that airport’s UTC offset (e.g. `2026-09-23T11:55:00-04:00`). Parse it as an instant; do not assume UTC and do not compare two of these as strings. On the rare airport whose timezone the platform does not know, a cached time keeps its local wall-clock digits but is written as UTC (`…Z`), so it reads as an instant that is off by that airport’s true offset; the offset is never omitted here, unlike on a live leg. The `*_local` fields of a booked or exchanged itinerary are NOT this: those carry wall-clock time with no offset, by design.","example":"2026-07-15T08:30:00-04:00","uniqueKey":"destinations.items.[INDEX].lowest_fare.outbound.departure_datetime","typeLabel":"string"},"arrival_datetime":{"type":"string","description":"Local time at the airport, RFC 3339 with that airport’s UTC offset (e.g. `2026-09-23T11:55:00-04:00`). Parse it as an instant; do not assume UTC and do not compare two of these as strings. On the rare airport whose timezone the platform does not know, a cached time keeps its local wall-clock digits but is written as UTC (`…Z`), so it reads as an instant that is off by that airport’s true offset; the offset is never omitted here, unlike on a live leg. The `*_local` fields of a booked or exchanged itinerary are NOT this: those carry wall-clock time with no offset, by design.","example":"2026-07-15T11:55:00-07:00","uniqueKey":"destinations.items.[INDEX].lowest_fare.outbound.arrival_datetime","typeLabel":"string"},"duration_minutes":{"type":"number","example":385,"uniqueKey":"destinations.items.[INDEX].lowest_fare.outbound.duration_minutes","typeLabel":"number"},"airline":{"type":"string","example":"AA","uniqueKey":"destinations.items.[INDEX].lowest_fare.outbound.airline","typeLabel":"string"},"airline_name":{"type":"string","example":"American Airlines","uniqueKey":"destinations.items.[INDEX].lowest_fare.outbound.airline_name","typeLabel":"string"},"stops":{"type":"number","example":0,"uniqueKey":"destinations.items.[INDEX].lowest_fare.outbound.stops","typeLabel":"number"},"stop_infos":{"type":"array","items":{"type":"object","properties":{"airport_code":{"type":"string","description":"IATA code of the airport where the leg stops.","example":"DFW","uniqueKey":"destinations.items.[INDEX].lowest_fare.outbound.stop_infos.items.[INDEX].airport_code","typeLabel":"string"},"duration_minutes":{"type":"number","description":"Layover length in minutes (arrival of the inbound segment to departure of the next). Omitted when the upstream times cannot be resolved.","example":95,"uniqueKey":"destinations.items.[INDEX].lowest_fare.outbound.stop_infos.items.[INDEX].duration_minutes","typeLabel":"number"}},"uniqueKey":"destinations.items.[INDEX].lowest_fare.outbound.stop_infos.items.[INDEX]","typeLabel":"object"},"description":"Layover detail, one entry per stop, in travel order. Absent when the leg is non-stop (`stops: 0`) or when upstream detail is incomplete for any stop; `stops` still reports the connection count in that case.","example":[{"airport_code":"DFW","duration_minutes":95}],"uniqueKey":"destinations.items.[INDEX].lowest_fare.outbound.stop_infos","typeLabel":"object[]"},"segments":{"type":"array","items":{"type":"object","properties":{"airline":{"type":"string","description":"IATA code of the MARKETING carrier — whose flight number you booked.","example":"AA","uniqueKey":"destinations.items.[INDEX].lowest_fare.outbound.segments.items.[INDEX].airline","typeLabel":"string"},"airline_name":{"type":"string","example":"American Airlines","uniqueKey":"destinations.items.[INDEX].lowest_fare.outbound.segments.items.[INDEX].airline_name","typeLabel":"string"},"flight_number":{"type":"string","description":"Provider flight number, forwarded unchanged. Depending on the upstream provider it may be a bare number such as `460` or a composed designator such as `AS460`; the carrier code is also carried separately when known.","example":"460","uniqueKey":"destinations.items.[INDEX].lowest_fare.outbound.segments.items.[INDEX].flight_number","typeLabel":"string"},"departure_airport":{"type":"string","example":"JFK","uniqueKey":"destinations.items.[INDEX].lowest_fare.outbound.segments.items.[INDEX].departure_airport","typeLabel":"string"},"departure_city":{"type":"string","example":"New York","uniqueKey":"destinations.items.[INDEX].lowest_fare.outbound.segments.items.[INDEX].departure_city","typeLabel":"string"},"departure_time":{"type":"string","description":"Local time at the airport, RFC 3339 with that airport’s UTC offset (e.g. `2026-09-23T11:55:00-04:00`). Parse it as an instant; do not assume UTC and do not compare two of these as strings. On the rare airport whose timezone the platform does not know, a cached time keeps its local wall-clock digits but is written as UTC (`…Z`), so it reads as an instant that is off by that airport’s true offset; the offset is never omitted here, unlike on a live leg. The `*_local` fields of a booked or exchanged itinerary are NOT this: those carry wall-clock time with no offset, by design.","example":"2026-09-23T11:55:00-04:00","uniqueKey":"destinations.items.[INDEX].lowest_fare.outbound.segments.items.[INDEX].departure_time","typeLabel":"string"},"arrival_airport":{"type":"string","example":"DFW","uniqueKey":"destinations.items.[INDEX].lowest_fare.outbound.segments.items.[INDEX].arrival_airport","typeLabel":"string"},"arrival_city":{"type":"string","example":"Dallas","uniqueKey":"destinations.items.[INDEX].lowest_fare.outbound.segments.items.[INDEX].arrival_city","typeLabel":"string"},"arrival_time":{"type":"string","description":"Local time at the airport, RFC 3339 with that airport’s UTC offset (e.g. `2026-09-23T11:55:00-04:00`). Parse it as an instant; do not assume UTC and do not compare two of these as strings. On the rare airport whose timezone the platform does not know, a cached time keeps its local wall-clock digits but is written as UTC (`…Z`), so it reads as an instant that is off by that airport’s true offset; the offset is never omitted here, unlike on a live leg. The `*_local` fields of a booked or exchanged itinerary are NOT this: those carry wall-clock time with no offset, by design.","example":"2026-09-23T15:10:00-05:00","uniqueKey":"destinations.items.[INDEX].lowest_fare.outbound.segments.items.[INDEX].arrival_time","typeLabel":"string"},"duration_minutes":{"type":"number","example":255,"uniqueKey":"destinations.items.[INDEX].lowest_fare.outbound.segments.items.[INDEX].duration_minutes","typeLabel":"number"},"layover_minutes":{"type":"number","description":"Wait between this segment’s arrival and the next departure. Absent on the last segment of a leg, and whenever the upstream times could not be resolved.","example":95,"uniqueKey":"destinations.items.[INDEX].lowest_fare.outbound.segments.items.[INDEX].layover_minutes","typeLabel":"number"},"operating_carrier":{"type":"string","description":"IATA code of the carrier that actually OPERATES the segment, when the cached fare recorded one. A value differing from `airline` is a codeshare the passenger must be told about. Equality is not guaranteed to be stated: the field is absent when the cached record carries no operating carrier, which says nothing about who operates the flight.","example":"MQ","uniqueKey":"destinations.items.[INDEX].lowest_fare.outbound.segments.items.[INDEX].operating_carrier","typeLabel":"string"}},"uniqueKey":"destinations.items.[INDEX].lowest_fare.outbound.segments.items.[INDEX]","typeLabel":"object"},"description":"The flown segments of this leg, in travel order — one per flight. A non-stop leg has one. Read `operating_carrier` here to disclose a codeshare the cached fare recorded. Absent when the cached row has no segment breakdown, in which case `stops` and `stop_infos` are all that is known about the leg.","uniqueKey":"destinations.items.[INDEX].lowest_fare.outbound.segments","typeLabel":"object[]"}},"uniqueKey":"destinations.items.[INDEX].lowest_fare.outbound","typeLabel":"object"},"inbound":{"type":"object","description":"The return journey. Present on a round trip only, and absent on an older cached row the same way `outbound` is.","properties":{"origin":{"type":"string","example":"JFK","uniqueKey":"destinations.items.[INDEX].lowest_fare.inbound.origin","typeLabel":"string"},"destination":{"type":"string","example":"LAX","uniqueKey":"destinations.items.[INDEX].lowest_fare.inbound.destination","typeLabel":"string"},"departure_datetime":{"type":"string","description":"Local time at the airport, RFC 3339 with that airport’s UTC offset (e.g. `2026-09-23T11:55:00-04:00`). Parse it as an instant; do not assume UTC and do not compare two of these as strings. On the rare airport whose timezone the platform does not know, a cached time keeps its local wall-clock digits but is written as UTC (`…Z`), so it reads as an instant that is off by that airport’s true offset; the offset is never omitted here, unlike on a live leg. The `*_local` fields of a booked or exchanged itinerary are NOT this: those carry wall-clock time with no offset, by design.","example":"2026-07-15T08:30:00-04:00","uniqueKey":"destinations.items.[INDEX].lowest_fare.inbound.departure_datetime","typeLabel":"string"},"arrival_datetime":{"type":"string","description":"Local time at the airport, RFC 3339 with that airport’s UTC offset (e.g. `2026-09-23T11:55:00-04:00`). Parse it as an instant; do not assume UTC and do not compare two of these as strings. On the rare airport whose timezone the platform does not know, a cached time keeps its local wall-clock digits but is written as UTC (`…Z`), so it reads as an instant that is off by that airport’s true offset; the offset is never omitted here, unlike on a live leg. The `*_local` fields of a booked or exchanged itinerary are NOT this: those carry wall-clock time with no offset, by design.","example":"2026-07-15T11:55:00-07:00","uniqueKey":"destinations.items.[INDEX].lowest_fare.inbound.arrival_datetime","typeLabel":"string"},"duration_minutes":{"type":"number","example":385,"uniqueKey":"destinations.items.[INDEX].lowest_fare.inbound.duration_minutes","typeLabel":"number"},"airline":{"type":"string","example":"AA","uniqueKey":"destinations.items.[INDEX].lowest_fare.inbound.airline","typeLabel":"string"},"airline_name":{"type":"string","example":"American Airlines","uniqueKey":"destinations.items.[INDEX].lowest_fare.inbound.airline_name","typeLabel":"string"},"stops":{"type":"number","example":0,"uniqueKey":"destinations.items.[INDEX].lowest_fare.inbound.stops","typeLabel":"number"},"stop_infos":{"type":"array","items":{"type":"object","properties":{"airport_code":{"type":"string","description":"IATA code of the airport where the leg stops.","example":"DFW","uniqueKey":"destinations.items.[INDEX].lowest_fare.inbound.stop_infos.items.[INDEX].airport_code","typeLabel":"string"},"duration_minutes":{"type":"number","description":"Layover length in minutes (arrival of the inbound segment to departure of the next). Omitted when the upstream times cannot be resolved.","example":95,"uniqueKey":"destinations.items.[INDEX].lowest_fare.inbound.stop_infos.items.[INDEX].duration_minutes","typeLabel":"number"}},"uniqueKey":"destinations.items.[INDEX].lowest_fare.inbound.stop_infos.items.[INDEX]","typeLabel":"object"},"description":"Layover detail, one entry per stop, in travel order. Absent when the leg is non-stop (`stops: 0`) or when upstream detail is incomplete for any stop; `stops` still reports the connection count in that case.","example":[{"airport_code":"DFW","duration_minutes":95}],"uniqueKey":"destinations.items.[INDEX].lowest_fare.inbound.stop_infos","typeLabel":"object[]"},"segments":{"type":"array","items":{"type":"object","properties":{"airline":{"type":"string","description":"IATA code of the MARKETING carrier — whose flight number you booked.","example":"AA","uniqueKey":"destinations.items.[INDEX].lowest_fare.inbound.segments.items.[INDEX].airline","typeLabel":"string"},"airline_name":{"type":"string","example":"American Airlines","uniqueKey":"destinations.items.[INDEX].lowest_fare.inbound.segments.items.[INDEX].airline_name","typeLabel":"string"},"flight_number":{"type":"string","description":"Provider flight number, forwarded unchanged. Depending on the upstream provider it may be a bare number such as `460` or a composed designator such as `AS460`; the carrier code is also carried separately when known.","example":"460","uniqueKey":"destinations.items.[INDEX].lowest_fare.inbound.segments.items.[INDEX].flight_number","typeLabel":"string"},"departure_airport":{"type":"string","example":"JFK","uniqueKey":"destinations.items.[INDEX].lowest_fare.inbound.segments.items.[INDEX].departure_airport","typeLabel":"string"},"departure_city":{"type":"string","example":"New York","uniqueKey":"destinations.items.[INDEX].lowest_fare.inbound.segments.items.[INDEX].departure_city","typeLabel":"string"},"departure_time":{"type":"string","description":"Local time at the airport, RFC 3339 with that airport’s UTC offset (e.g. `2026-09-23T11:55:00-04:00`). Parse it as an instant; do not assume UTC and do not compare two of these as strings. On the rare airport whose timezone the platform does not know, a cached time keeps its local wall-clock digits but is written as UTC (`…Z`), so it reads as an instant that is off by that airport’s true offset; the offset is never omitted here, unlike on a live leg. The `*_local` fields of a booked or exchanged itinerary are NOT this: those carry wall-clock time with no offset, by design.","example":"2026-09-23T11:55:00-04:00","uniqueKey":"destinations.items.[INDEX].lowest_fare.inbound.segments.items.[INDEX].departure_time","typeLabel":"string"},"arrival_airport":{"type":"string","example":"DFW","uniqueKey":"destinations.items.[INDEX].lowest_fare.inbound.segments.items.[INDEX].arrival_airport","typeLabel":"string"},"arrival_city":{"type":"string","example":"Dallas","uniqueKey":"destinations.items.[INDEX].lowest_fare.inbound.segments.items.[INDEX].arrival_city","typeLabel":"string"},"arrival_time":{"type":"string","description":"Local time at the airport, RFC 3339 with that airport’s UTC offset (e.g. `2026-09-23T11:55:00-04:00`). Parse it as an instant; do not assume UTC and do not compare two of these as strings. On the rare airport whose timezone the platform does not know, a cached time keeps its local wall-clock digits but is written as UTC (`…Z`), so it reads as an instant that is off by that airport’s true offset; the offset is never omitted here, unlike on a live leg. The `*_local` fields of a booked or exchanged itinerary are NOT this: those carry wall-clock time with no offset, by design.","example":"2026-09-23T15:10:00-05:00","uniqueKey":"destinations.items.[INDEX].lowest_fare.inbound.segments.items.[INDEX].arrival_time","typeLabel":"string"},"duration_minutes":{"type":"number","example":255,"uniqueKey":"destinations.items.[INDEX].lowest_fare.inbound.segments.items.[INDEX].duration_minutes","typeLabel":"number"},"layover_minutes":{"type":"number","description":"Wait between this segment’s arrival and the next departure. Absent on the last segment of a leg, and whenever the upstream times could not be resolved.","example":95,"uniqueKey":"destinations.items.[INDEX].lowest_fare.inbound.segments.items.[INDEX].layover_minutes","typeLabel":"number"},"operating_carrier":{"type":"string","description":"IATA code of the carrier that actually OPERATES the segment, when the cached fare recorded one. A value differing from `airline` is a codeshare the passenger must be told about. Equality is not guaranteed to be stated: the field is absent when the cached record carries no operating carrier, which says nothing about who operates the flight.","example":"MQ","uniqueKey":"destinations.items.[INDEX].lowest_fare.inbound.segments.items.[INDEX].operating_carrier","typeLabel":"string"}},"uniqueKey":"destinations.items.[INDEX].lowest_fare.inbound.segments.items.[INDEX]","typeLabel":"object"},"description":"The flown segments of this leg, in travel order — one per flight. A non-stop leg has one. Read `operating_carrier` here to disclose a codeshare the cached fare recorded. Absent when the cached row has no segment breakdown, in which case `stops` and `stop_infos` are all that is known about the leg.","uniqueKey":"destinations.items.[INDEX].lowest_fare.inbound.segments","typeLabel":"object[]"}},"uniqueKey":"destinations.items.[INDEX].lowest_fare.inbound","typeLabel":"object"},"priced_at":{"type":"string","description":"When this price was collected, RFC 3339 UTC. These results come from the cache and can be days old — re-price with `flight_search` before quoting or booking.","example":"2026-09-19T03:57:25Z","uniqueKey":"destinations.items.[INDEX].lowest_fare.priced_at","typeLabel":"string"}},"uniqueKey":"destinations.items.[INDEX].lowest_fare","typeLabel":"object"}},"required":["flights"],"uniqueKey":"destinations.items.[INDEX]","typeLabel":"object"},"isRequired":true,"uniqueKey":"destinations","typeLabel":"object[]"},"total":{"type":"number","example":12,"uniqueKey":"total","typeLabel":"number"},"next_page_token":{"type":"string","example":"eyJvZmZzZXQiOjIwfQ==","uniqueKey":"next_page_token","typeLabel":"string"}},"required":["priced_for","destinations"],"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"priced_for":"one_adult","destinations":[{"flights":[{"offer_token":"es-VVN8QUZ8MjAyNzA2MTU6QUY6Nzo6WXwyMDI3MDYyMjpBRjo2OjpZ","id":"es-VVN8QUZ8MjAyNzA2MTU6QUY6Nzo6WXwyMDI3MDYyMjpBRjo2OjpZ","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,"display":"USD 412.50"},"cabin_class":"economy","outbound":{"origin":"JFK","destination":"LAX","departure_datetime":"2026-07-15T08:30:00-04:00","arrival_datetime":"2026-07-15T11:55:00-07:00","duration_minutes":385,"airline":"AA","airline_name":"American Airlines","stops":0,"stop_infos":[{"airport_code":"DFW","duration_minutes":95}],"segments":[{"airline":"AA","airline_name":"American Airlines","flight_number":"460","departure_airport":"JFK","departure_city":"New York","departure_time":"2026-09-23T11:55:00-04:00","arrival_airport":"DFW","arrival_city":"Dallas","arrival_time":"2026-09-23T15:10:00-05:00","duration_minutes":255,"layover_minutes":95,"operating_carrier":"MQ"}]},"inbound":{"origin":"JFK","destination":"LAX","departure_datetime":"2026-07-15T08:30:00-04:00","arrival_datetime":"2026-07-15T11:55:00-07:00","duration_minutes":385,"airline":"AA","airline_name":"American Airlines","stops":0,"stop_infos":[{"airport_code":"DFW","duration_minutes":95}],"segments":[{"airline":"AA","airline_name":"American Airlines","flight_number":"460","departure_airport":"JFK","departure_city":"New York","departure_time":"2026-09-23T11:55:00-04:00","arrival_airport":"DFW","arrival_city":"Dallas","arrival_time":"2026-09-23T15:10:00-05:00","duration_minutes":255,"layover_minutes":95,"operating_carrier":"MQ"}]},"priced_at":"2026-09-19T03:57:25Z"}],"city_name":"Paris","iata_code":"PAR","image_url":"https://images.gojinko.com/destinations/par.jpg","location":{"latitude":48.8566,"longitude":2.3522},"lowest_fare":{"offer_token":"es-VVN8QUZ8MjAyNzA2MTU6QUY6Nzo6WXwyMDI3MDYyMjpBRjo2OjpZ","id":"es-VVN8QUZ8MjAyNzA2MTU6QUY6Nzo6WXwyMDI3MDYyMjpBRjo2OjpZ","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,"display":"USD 412.50"},"cabin_class":"economy","outbound":{"origin":"JFK","destination":"LAX","departure_datetime":"2026-07-15T08:30:00-04:00","arrival_datetime":"2026-07-15T11:55:00-07:00","duration_minutes":385,"airline":"AA","airline_name":"American Airlines","stops":0,"stop_infos":[{"airport_code":"DFW","duration_minutes":95}],"segments":[{"airline":"AA","airline_name":"American Airlines","flight_number":"460","departure_airport":"JFK","departure_city":"New York","departure_time":"2026-09-23T11:55:00-04:00","arrival_airport":"DFW","arrival_city":"Dallas","arrival_time":"2026-09-23T15:10:00-05:00","duration_minutes":255,"layover_minutes":95,"operating_carrier":"MQ"}]},"inbound":{"origin":"JFK","destination":"LAX","departure_datetime":"2026-07-15T08:30:00-04:00","arrival_datetime":"2026-07-15T11:55:00-07:00","duration_minutes":385,"airline":"AA","airline_name":"American Airlines","stops":0,"stop_infos":[{"airport_code":"DFW","duration_minutes":95}],"segments":[{"airline":"AA","airline_name":"American Airlines","flight_number":"460","departure_airport":"JFK","departure_city":"New York","departure_time":"2026-09-23T11:55:00-04:00","arrival_airport":"DFW","arrival_city":"Dallas","arrival_time":"2026-09-23T15:10:00-05:00","duration_minutes":255,"layover_minutes":95,"operating_carrier":"MQ"}]},"priced_at":"2026-09-19T03:57:25Z"}}],"total":12,"next_page_token":"eyJvZmZzZXQiOjIwfQ=="}}},"exampleType":"generated"}},"exampleType":"generated"},"d88738a8-35e3-4e9a-861b-81baecc8dfbb":{"description":"Bad request","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["INVALID_SEGMENTS_TO_EXCHANGE","PARTIAL_EXCHANGE_UNSUPPORTED","LEG_ALREADY_DEPARTED","DEPARTURE_DATE_IN_PAST","LEG_DATES_OUT_OF_ORDER","INVALID_EXCHANGE_REQUEST","NOT_EXCHANGEABLE","CREDENTIAL_FORMAT_INVALID","PAYMENT_TYPE_NOT_ENABLED","PAYMENT_CREDENTIAL_INVALID","TRIP_OWNED_BY_OTHER_PAYMENT","IDEMPOTENCY_KEY_REUSED","ATTEMPT_IN_PROGRESS","ATTEMPT_TERMINAL","TEMPORARILY_UNAVAILABLE","AUTH_REQUIRED","PAYMENT_REQUIRED","RATE_LIMITED","BAD_REQUEST","FORBIDDEN","NOT_FOUND","CONFLICT","GONE","QUOTE_PENDING","QUOTE_EXPIRED","TRIP_EXPIRED","TRIP_STATE_CONFLICT","OFFER_EXPIRED","OFFER_UNAVAILABLE","MISSING_CUSTOMER_DETAILS","INVALID_PHONE_NUMBER","INVALID_FLIGHT_NUMBER","CURRENCY_UNSUPPORTED","HOTEL_NAME_LOW_CONFIDENCE","DESTINATION_LOW_CONFIDENCE","UPSTREAM_REJECTED","UPSTREAM_UNAVAILABLE","UPSTREAM_TIMEOUT","UPSTREAM_ERROR","INTERNAL"],"description":"What went wrong, as a stable machine-readable code. This is a closed set — branch on it rather than on `message`, which is prose and may change. New codes arrive in a minor version, so treat an unknown one as its HTTP status. A code can also stop being emitted: it leaves this set in a minor version, named in the changelog, and a branch you wrote for it goes unreached rather than wrong.","example":"BAD_REQUEST","isRequired":true,"uniqueKey":"error.code","typeLabel":"enum\u003cstring>"},"message":{"type":"string","description":"What went wrong, in prose. These codes always carry the same message, and it never includes text from a supplier: `RATE_LIMITED` — \"Too many requests. Retry after the Retry-After delay.\"; `OFFER_EXPIRED` — \"This offer has expired. Search again.\"; `OFFER_UNAVAILABLE` — \"This offer is no longer available. Search again.\"; `UPSTREAM_REJECTED` — \"The request was declined for this offer. Try another offer.\"; `UPSTREAM_UNAVAILABLE` — \"The service is temporarily unavailable. Retry after the Retry-After delay.\"; `UPSTREAM_TIMEOUT` — \"The request timed out before a result was available. Retry the request.\"; `UPSTREAM_ERROR` — \"The request could not be completed.\".","isRequired":true,"uniqueKey":"error.message","typeLabel":"string"},"doc_url":{"type":"string","uniqueKey":"error.doc_url","typeLabel":"string"},"field":{"type":"string","description":"On a 400 `BAD_REQUEST` that names one refused input: the path of that field in your request, e.g. `selections[1].quantity` for the second selection of a `select_ancillaries` call. Absent when the refusal names no single field.","example":"selections[1].quantity","uniqueKey":"error.field","typeLabel":"string"}},"required":["code","message"],"isRequired":true,"uniqueKey":"error","typeLabel":"object"}},"required":["error"],"uniqueKey":"","typeLabel":"object"},"example":{"error":{"code":"BAD_REQUEST","message":"Malformed JSON in request body.","doc_url":"https://docs.gojinko.com/concepts/errors"}},"examples":{"Example":{"title":"Example","value":{"error":{"code":"BAD_REQUEST","message":"Malformed JSON in request body.","doc_url":"https://docs.gojinko.com/concepts/errors"}}}},"exampleType":"examples"}},"exampleType":"examples"},"5a1e7ec9-4556-431e-abed-97367a7a164c":{"description":"Authentication required","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["INVALID_SEGMENTS_TO_EXCHANGE","PARTIAL_EXCHANGE_UNSUPPORTED","LEG_ALREADY_DEPARTED","DEPARTURE_DATE_IN_PAST","LEG_DATES_OUT_OF_ORDER","INVALID_EXCHANGE_REQUEST","NOT_EXCHANGEABLE","CREDENTIAL_FORMAT_INVALID","PAYMENT_TYPE_NOT_ENABLED","PAYMENT_CREDENTIAL_INVALID","TRIP_OWNED_BY_OTHER_PAYMENT","IDEMPOTENCY_KEY_REUSED","ATTEMPT_IN_PROGRESS","ATTEMPT_TERMINAL","TEMPORARILY_UNAVAILABLE","AUTH_REQUIRED","PAYMENT_REQUIRED","RATE_LIMITED","BAD_REQUEST","FORBIDDEN","NOT_FOUND","CONFLICT","GONE","QUOTE_PENDING","QUOTE_EXPIRED","TRIP_EXPIRED","TRIP_STATE_CONFLICT","OFFER_EXPIRED","OFFER_UNAVAILABLE","MISSING_CUSTOMER_DETAILS","INVALID_PHONE_NUMBER","INVALID_FLIGHT_NUMBER","CURRENCY_UNSUPPORTED","HOTEL_NAME_LOW_CONFIDENCE","DESTINATION_LOW_CONFIDENCE","UPSTREAM_REJECTED","UPSTREAM_UNAVAILABLE","UPSTREAM_TIMEOUT","UPSTREAM_ERROR","INTERNAL"],"description":"What went wrong, as a stable machine-readable code. This is a closed set — branch on it rather than on `message`, which is prose and may change. New codes arrive in a minor version, so treat an unknown one as its HTTP status. A code can also stop being emitted: it leaves this set in a minor version, named in the changelog, and a branch you wrote for it goes unreached rather than wrong.","example":"BAD_REQUEST","isRequired":true,"uniqueKey":"error.code","typeLabel":"enum\u003cstring>"},"message":{"type":"string","description":"What went wrong, in prose. These codes always carry the same message, and it never includes text from a supplier: `RATE_LIMITED` — \"Too many requests. Retry after the Retry-After delay.\"; `OFFER_EXPIRED` — \"This offer has expired. Search again.\"; `OFFER_UNAVAILABLE` — \"This offer is no longer available. Search again.\"; `UPSTREAM_REJECTED` — \"The request was declined for this offer. Try another offer.\"; `UPSTREAM_UNAVAILABLE` — \"The service is temporarily unavailable. Retry after the Retry-After delay.\"; `UPSTREAM_TIMEOUT` — \"The request timed out before a result was available. Retry the request.\"; `UPSTREAM_ERROR` — \"The request could not be completed.\".","isRequired":true,"uniqueKey":"error.message","typeLabel":"string"},"doc_url":{"type":"string","uniqueKey":"error.doc_url","typeLabel":"string"},"field":{"type":"string","description":"On a 400 `BAD_REQUEST` that names one refused input: the path of that field in your request, e.g. `selections[1].quantity` for the second selection of a `select_ancillaries` call. Absent when the refusal names no single field.","example":"selections[1].quantity","uniqueKey":"error.field","typeLabel":"string"}},"required":["code","message"],"isRequired":true,"uniqueKey":"error","typeLabel":"object"}},"required":["error"],"uniqueKey":"","typeLabel":"object"},"example":{"error":{"code":"AUTH_REQUIRED","message":"Invalid or expired API key.","doc_url":"https://docs.gojinko.com/authentication/api-keys"}},"examples":{"Example":{"title":"Example","value":{"error":{"code":"AUTH_REQUIRED","message":"Invalid or expired API key.","doc_url":"https://docs.gojinko.com/authentication/api-keys"}}}},"exampleType":"examples"}},"exampleType":"examples"},"17920061-8be8-4176-b274-4ccd08e4578a":{"description":"Payment required — organization balance exhausted","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["INVALID_SEGMENTS_TO_EXCHANGE","PARTIAL_EXCHANGE_UNSUPPORTED","LEG_ALREADY_DEPARTED","DEPARTURE_DATE_IN_PAST","LEG_DATES_OUT_OF_ORDER","INVALID_EXCHANGE_REQUEST","NOT_EXCHANGEABLE","CREDENTIAL_FORMAT_INVALID","PAYMENT_TYPE_NOT_ENABLED","PAYMENT_CREDENTIAL_INVALID","TRIP_OWNED_BY_OTHER_PAYMENT","IDEMPOTENCY_KEY_REUSED","ATTEMPT_IN_PROGRESS","ATTEMPT_TERMINAL","TEMPORARILY_UNAVAILABLE","AUTH_REQUIRED","PAYMENT_REQUIRED","RATE_LIMITED","BAD_REQUEST","FORBIDDEN","NOT_FOUND","CONFLICT","GONE","QUOTE_PENDING","QUOTE_EXPIRED","TRIP_EXPIRED","TRIP_STATE_CONFLICT","OFFER_EXPIRED","OFFER_UNAVAILABLE","MISSING_CUSTOMER_DETAILS","INVALID_PHONE_NUMBER","INVALID_FLIGHT_NUMBER","CURRENCY_UNSUPPORTED","HOTEL_NAME_LOW_CONFIDENCE","DESTINATION_LOW_CONFIDENCE","UPSTREAM_REJECTED","UPSTREAM_UNAVAILABLE","UPSTREAM_TIMEOUT","UPSTREAM_ERROR","INTERNAL"],"description":"What went wrong, as a stable machine-readable code. This is a closed set — branch on it rather than on `message`, which is prose and may change. New codes arrive in a minor version, so treat an unknown one as its HTTP status. A code can also stop being emitted: it leaves this set in a minor version, named in the changelog, and a branch you wrote for it goes unreached rather than wrong.","example":"BAD_REQUEST","isRequired":true,"uniqueKey":"error.code","typeLabel":"enum\u003cstring>"},"message":{"type":"string","description":"What went wrong, in prose. These codes always carry the same message, and it never includes text from a supplier: `RATE_LIMITED` — \"Too many requests. Retry after the Retry-After delay.\"; `OFFER_EXPIRED` — \"This offer has expired. Search again.\"; `OFFER_UNAVAILABLE` — \"This offer is no longer available. Search again.\"; `UPSTREAM_REJECTED` — \"The request was declined for this offer. Try another offer.\"; `UPSTREAM_UNAVAILABLE` — \"The service is temporarily unavailable. Retry after the Retry-After delay.\"; `UPSTREAM_TIMEOUT` — \"The request timed out before a result was available. Retry the request.\"; `UPSTREAM_ERROR` — \"The request could not be completed.\".","isRequired":true,"uniqueKey":"error.message","typeLabel":"string"},"doc_url":{"type":"string","uniqueKey":"error.doc_url","typeLabel":"string"},"field":{"type":"string","description":"On a 400 `BAD_REQUEST` that names one refused input: the path of that field in your request, e.g. `selections[1].quantity` for the second selection of a `select_ancillaries` call. Absent when the refusal names no single field.","example":"selections[1].quantity","uniqueKey":"error.field","typeLabel":"string"}},"required":["code","message"],"isRequired":true,"uniqueKey":"error","typeLabel":"object"}},"required":["error"],"uniqueKey":"","typeLabel":"object"},"example":{"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"}},"examples":{"Example":{"title":"Example","value":{"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"}}}},"exampleType":"examples"}},"exampleType":"examples"},"e5e272c6-0066-4a7e-a71e-0860445be07c":{"description":"Resource not found","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["INVALID_SEGMENTS_TO_EXCHANGE","PARTIAL_EXCHANGE_UNSUPPORTED","LEG_ALREADY_DEPARTED","DEPARTURE_DATE_IN_PAST","LEG_DATES_OUT_OF_ORDER","INVALID_EXCHANGE_REQUEST","NOT_EXCHANGEABLE","CREDENTIAL_FORMAT_INVALID","PAYMENT_TYPE_NOT_ENABLED","PAYMENT_CREDENTIAL_INVALID","TRIP_OWNED_BY_OTHER_PAYMENT","IDEMPOTENCY_KEY_REUSED","ATTEMPT_IN_PROGRESS","ATTEMPT_TERMINAL","TEMPORARILY_UNAVAILABLE","AUTH_REQUIRED","PAYMENT_REQUIRED","RATE_LIMITED","BAD_REQUEST","FORBIDDEN","NOT_FOUND","CONFLICT","GONE","QUOTE_PENDING","QUOTE_EXPIRED","TRIP_EXPIRED","TRIP_STATE_CONFLICT","OFFER_EXPIRED","OFFER_UNAVAILABLE","MISSING_CUSTOMER_DETAILS","INVALID_PHONE_NUMBER","INVALID_FLIGHT_NUMBER","CURRENCY_UNSUPPORTED","HOTEL_NAME_LOW_CONFIDENCE","DESTINATION_LOW_CONFIDENCE","UPSTREAM_REJECTED","UPSTREAM_UNAVAILABLE","UPSTREAM_TIMEOUT","UPSTREAM_ERROR","INTERNAL"],"description":"What went wrong, as a stable machine-readable code. This is a closed set — branch on it rather than on `message`, which is prose and may change. New codes arrive in a minor version, so treat an unknown one as its HTTP status. A code can also stop being emitted: it leaves this set in a minor version, named in the changelog, and a branch you wrote for it goes unreached rather than wrong.","example":"BAD_REQUEST","isRequired":true,"uniqueKey":"error.code","typeLabel":"enum\u003cstring>"},"message":{"type":"string","description":"What went wrong, in prose. These codes always carry the same message, and it never includes text from a supplier: `RATE_LIMITED` — \"Too many requests. Retry after the Retry-After delay.\"; `OFFER_EXPIRED` — \"This offer has expired. Search again.\"; `OFFER_UNAVAILABLE` — \"This offer is no longer available. Search again.\"; `UPSTREAM_REJECTED` — \"The request was declined for this offer. Try another offer.\"; `UPSTREAM_UNAVAILABLE` — \"The service is temporarily unavailable. Retry after the Retry-After delay.\"; `UPSTREAM_TIMEOUT` — \"The request timed out before a result was available. Retry the request.\"; `UPSTREAM_ERROR` — \"The request could not be completed.\".","isRequired":true,"uniqueKey":"error.message","typeLabel":"string"},"doc_url":{"type":"string","uniqueKey":"error.doc_url","typeLabel":"string"},"field":{"type":"string","description":"On a 400 `BAD_REQUEST` that names one refused input: the path of that field in your request, e.g. `selections[1].quantity` for the second selection of a `select_ancillaries` call. Absent when the refusal names no single field.","example":"selections[1].quantity","uniqueKey":"error.field","typeLabel":"string"}},"required":["code","message"],"isRequired":true,"uniqueKey":"error","typeLabel":"object"}},"required":["error"],"uniqueKey":"","typeLabel":"object"},"example":{"error":{"code":"NOT_FOUND","message":"Resource not found.","doc_url":"https://docs.gojinko.com/concepts/errors"}},"examples":{"Example":{"title":"Example","value":{"error":{"code":"NOT_FOUND","message":"Resource not found.","doc_url":"https://docs.gojinko.com/concepts/errors"}}}},"exampleType":"examples"}},"exampleType":"examples"},"d27ac342-ca25-4699-996b-9556ba55c59d":{"description":"The operation conflicts with the current state of the resource","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["INVALID_SEGMENTS_TO_EXCHANGE","PARTIAL_EXCHANGE_UNSUPPORTED","LEG_ALREADY_DEPARTED","DEPARTURE_DATE_IN_PAST","LEG_DATES_OUT_OF_ORDER","INVALID_EXCHANGE_REQUEST","NOT_EXCHANGEABLE","CREDENTIAL_FORMAT_INVALID","PAYMENT_TYPE_NOT_ENABLED","PAYMENT_CREDENTIAL_INVALID","TRIP_OWNED_BY_OTHER_PAYMENT","IDEMPOTENCY_KEY_REUSED","ATTEMPT_IN_PROGRESS","ATTEMPT_TERMINAL","TEMPORARILY_UNAVAILABLE","AUTH_REQUIRED","PAYMENT_REQUIRED","RATE_LIMITED","BAD_REQUEST","FORBIDDEN","NOT_FOUND","CONFLICT","GONE","QUOTE_PENDING","QUOTE_EXPIRED","TRIP_EXPIRED","TRIP_STATE_CONFLICT","OFFER_EXPIRED","OFFER_UNAVAILABLE","MISSING_CUSTOMER_DETAILS","INVALID_PHONE_NUMBER","INVALID_FLIGHT_NUMBER","CURRENCY_UNSUPPORTED","HOTEL_NAME_LOW_CONFIDENCE","DESTINATION_LOW_CONFIDENCE","UPSTREAM_REJECTED","UPSTREAM_UNAVAILABLE","UPSTREAM_TIMEOUT","UPSTREAM_ERROR","INTERNAL"],"description":"What went wrong, as a stable machine-readable code. This is a closed set — branch on it rather than on `message`, which is prose and may change. New codes arrive in a minor version, so treat an unknown one as its HTTP status. A code can also stop being emitted: it leaves this set in a minor version, named in the changelog, and a branch you wrote for it goes unreached rather than wrong.","example":"BAD_REQUEST","isRequired":true,"uniqueKey":"error.code","typeLabel":"enum\u003cstring>"},"message":{"type":"string","description":"What went wrong, in prose. These codes always carry the same message, and it never includes text from a supplier: `RATE_LIMITED` — \"Too many requests. Retry after the Retry-After delay.\"; `OFFER_EXPIRED` — \"This offer has expired. Search again.\"; `OFFER_UNAVAILABLE` — \"This offer is no longer available. Search again.\"; `UPSTREAM_REJECTED` — \"The request was declined for this offer. Try another offer.\"; `UPSTREAM_UNAVAILABLE` — \"The service is temporarily unavailable. Retry after the Retry-After delay.\"; `UPSTREAM_TIMEOUT` — \"The request timed out before a result was available. Retry the request.\"; `UPSTREAM_ERROR` — \"The request could not be completed.\".","isRequired":true,"uniqueKey":"error.message","typeLabel":"string"},"doc_url":{"type":"string","uniqueKey":"error.doc_url","typeLabel":"string"},"field":{"type":"string","description":"On a 400 `BAD_REQUEST` that names one refused input: the path of that field in your request, e.g. `selections[1].quantity` for the second selection of a `select_ancillaries` call. Absent when the refusal names no single field.","example":"selections[1].quantity","uniqueKey":"error.field","typeLabel":"string"}},"required":["code","message"],"isRequired":true,"uniqueKey":"error","typeLabel":"object"}},"required":["error"],"uniqueKey":"","typeLabel":"object"},"example":{"error":{"code":"CONFLICT","message":"The operation conflicts with the current state of the resource.","doc_url":"https://docs.gojinko.com/concepts/errors"}},"examples":{"Example":{"title":"Example","value":{"error":{"code":"CONFLICT","message":"The operation conflicts with the current state of the resource.","doc_url":"https://docs.gojinko.com/concepts/errors"}}}},"exampleType":"examples"}},"exampleType":"examples"},"a549cb10-93ba-497a-b6fe-2083c0c6f80b":{"description":"The resource this request names no longer exists","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["INVALID_SEGMENTS_TO_EXCHANGE","PARTIAL_EXCHANGE_UNSUPPORTED","LEG_ALREADY_DEPARTED","DEPARTURE_DATE_IN_PAST","LEG_DATES_OUT_OF_ORDER","INVALID_EXCHANGE_REQUEST","NOT_EXCHANGEABLE","CREDENTIAL_FORMAT_INVALID","PAYMENT_TYPE_NOT_ENABLED","PAYMENT_CREDENTIAL_INVALID","TRIP_OWNED_BY_OTHER_PAYMENT","IDEMPOTENCY_KEY_REUSED","ATTEMPT_IN_PROGRESS","ATTEMPT_TERMINAL","TEMPORARILY_UNAVAILABLE","AUTH_REQUIRED","PAYMENT_REQUIRED","RATE_LIMITED","BAD_REQUEST","FORBIDDEN","NOT_FOUND","CONFLICT","GONE","QUOTE_PENDING","QUOTE_EXPIRED","TRIP_EXPIRED","TRIP_STATE_CONFLICT","OFFER_EXPIRED","OFFER_UNAVAILABLE","MISSING_CUSTOMER_DETAILS","INVALID_PHONE_NUMBER","INVALID_FLIGHT_NUMBER","CURRENCY_UNSUPPORTED","HOTEL_NAME_LOW_CONFIDENCE","DESTINATION_LOW_CONFIDENCE","UPSTREAM_REJECTED","UPSTREAM_UNAVAILABLE","UPSTREAM_TIMEOUT","UPSTREAM_ERROR","INTERNAL"],"description":"What went wrong, as a stable machine-readable code. This is a closed set — branch on it rather than on `message`, which is prose and may change. New codes arrive in a minor version, so treat an unknown one as its HTTP status. A code can also stop being emitted: it leaves this set in a minor version, named in the changelog, and a branch you wrote for it goes unreached rather than wrong.","example":"BAD_REQUEST","isRequired":true,"uniqueKey":"error.code","typeLabel":"enum\u003cstring>"},"message":{"type":"string","description":"What went wrong, in prose. These codes always carry the same message, and it never includes text from a supplier: `RATE_LIMITED` — \"Too many requests. Retry after the Retry-After delay.\"; `OFFER_EXPIRED` — \"This offer has expired. Search again.\"; `OFFER_UNAVAILABLE` — \"This offer is no longer available. Search again.\"; `UPSTREAM_REJECTED` — \"The request was declined for this offer. Try another offer.\"; `UPSTREAM_UNAVAILABLE` — \"The service is temporarily unavailable. Retry after the Retry-After delay.\"; `UPSTREAM_TIMEOUT` — \"The request timed out before a result was available. Retry the request.\"; `UPSTREAM_ERROR` — \"The request could not be completed.\".","isRequired":true,"uniqueKey":"error.message","typeLabel":"string"},"doc_url":{"type":"string","uniqueKey":"error.doc_url","typeLabel":"string"},"field":{"type":"string","description":"On a 400 `BAD_REQUEST` that names one refused input: the path of that field in your request, e.g. `selections[1].quantity` for the second selection of a `select_ancillaries` call. Absent when the refusal names no single field.","example":"selections[1].quantity","uniqueKey":"error.field","typeLabel":"string"}},"required":["code","message"],"isRequired":true,"uniqueKey":"error","typeLabel":"object"}},"required":["error"],"uniqueKey":"","typeLabel":"object"},"example":{"error":{"code":"GONE","message":"The resource no longer exists.","doc_url":"https://docs.gojinko.com/concepts/errors"}},"examples":{"Example":{"title":"Example","value":{"error":{"code":"GONE","message":"The resource no longer exists.","doc_url":"https://docs.gojinko.com/concepts/errors"}}}},"exampleType":"examples"}},"exampleType":"examples"},"88096d12-33bc-4a92-8363-78f516095213":{"description":"Validation error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["INVALID_SEGMENTS_TO_EXCHANGE","PARTIAL_EXCHANGE_UNSUPPORTED","LEG_ALREADY_DEPARTED","DEPARTURE_DATE_IN_PAST","LEG_DATES_OUT_OF_ORDER","INVALID_EXCHANGE_REQUEST","NOT_EXCHANGEABLE","CREDENTIAL_FORMAT_INVALID","PAYMENT_TYPE_NOT_ENABLED","PAYMENT_CREDENTIAL_INVALID","TRIP_OWNED_BY_OTHER_PAYMENT","IDEMPOTENCY_KEY_REUSED","ATTEMPT_IN_PROGRESS","ATTEMPT_TERMINAL","TEMPORARILY_UNAVAILABLE","AUTH_REQUIRED","PAYMENT_REQUIRED","RATE_LIMITED","BAD_REQUEST","FORBIDDEN","NOT_FOUND","CONFLICT","GONE","QUOTE_PENDING","QUOTE_EXPIRED","TRIP_EXPIRED","TRIP_STATE_CONFLICT","OFFER_EXPIRED","OFFER_UNAVAILABLE","MISSING_CUSTOMER_DETAILS","INVALID_PHONE_NUMBER","INVALID_FLIGHT_NUMBER","CURRENCY_UNSUPPORTED","HOTEL_NAME_LOW_CONFIDENCE","DESTINATION_LOW_CONFIDENCE","UPSTREAM_REJECTED","UPSTREAM_UNAVAILABLE","UPSTREAM_TIMEOUT","UPSTREAM_ERROR","INTERNAL"],"description":"What went wrong, as a stable machine-readable code. This is a closed set — branch on it rather than on `message`, which is prose and may change. New codes arrive in a minor version, so treat an unknown one as its HTTP status. A code can also stop being emitted: it leaves this set in a minor version, named in the changelog, and a branch you wrote for it goes unreached rather than wrong.","example":"BAD_REQUEST","isRequired":true,"uniqueKey":"error.code","typeLabel":"enum\u003cstring>"},"message":{"type":"string","description":"What went wrong, in prose. These codes always carry the same message, and it never includes text from a supplier: `RATE_LIMITED` — \"Too many requests. Retry after the Retry-After delay.\"; `OFFER_EXPIRED` — \"This offer has expired. Search again.\"; `OFFER_UNAVAILABLE` — \"This offer is no longer available. Search again.\"; `UPSTREAM_REJECTED` — \"The request was declined for this offer. Try another offer.\"; `UPSTREAM_UNAVAILABLE` — \"The service is temporarily unavailable. Retry after the Retry-After delay.\"; `UPSTREAM_TIMEOUT` — \"The request timed out before a result was available. Retry the request.\"; `UPSTREAM_ERROR` — \"The request could not be completed.\".","isRequired":true,"uniqueKey":"error.message","typeLabel":"string"},"doc_url":{"type":"string","uniqueKey":"error.doc_url","typeLabel":"string"},"field":{"type":"string","description":"On a 400 `BAD_REQUEST` that names one refused input: the path of that field in your request, e.g. `selections[1].quantity` for the second selection of a `select_ancillaries` call. Absent when the refusal names no single field.","example":"selections[1].quantity","uniqueKey":"error.field","typeLabel":"string"}},"required":["code","message"],"isRequired":true,"uniqueKey":"error","typeLabel":"object"}},"required":["error"],"uniqueKey":"","typeLabel":"object"},"example":{"error":{"code":"BAD_REQUEST","message":"A required field is missing or invalid.","doc_url":"https://docs.gojinko.com/concepts/errors"}},"examples":{"Example":{"title":"Example","value":{"error":{"code":"BAD_REQUEST","message":"A required field is missing or invalid.","doc_url":"https://docs.gojinko.com/concepts/errors"}}}},"exampleType":"examples"}},"exampleType":"examples"},"ca3f8d4c-34e6-4ab2-8d49-f42eb95c0e50":{"description":"Rate limit or quota exceeded","headers":{"Retry-After":{"description":"Seconds to wait before retrying. Absent when no interval applies.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["INVALID_SEGMENTS_TO_EXCHANGE","PARTIAL_EXCHANGE_UNSUPPORTED","LEG_ALREADY_DEPARTED","DEPARTURE_DATE_IN_PAST","LEG_DATES_OUT_OF_ORDER","INVALID_EXCHANGE_REQUEST","NOT_EXCHANGEABLE","CREDENTIAL_FORMAT_INVALID","PAYMENT_TYPE_NOT_ENABLED","PAYMENT_CREDENTIAL_INVALID","TRIP_OWNED_BY_OTHER_PAYMENT","IDEMPOTENCY_KEY_REUSED","ATTEMPT_IN_PROGRESS","ATTEMPT_TERMINAL","TEMPORARILY_UNAVAILABLE","AUTH_REQUIRED","PAYMENT_REQUIRED","RATE_LIMITED","BAD_REQUEST","FORBIDDEN","NOT_FOUND","CONFLICT","GONE","QUOTE_PENDING","QUOTE_EXPIRED","TRIP_EXPIRED","TRIP_STATE_CONFLICT","OFFER_EXPIRED","OFFER_UNAVAILABLE","MISSING_CUSTOMER_DETAILS","INVALID_PHONE_NUMBER","INVALID_FLIGHT_NUMBER","CURRENCY_UNSUPPORTED","HOTEL_NAME_LOW_CONFIDENCE","DESTINATION_LOW_CONFIDENCE","UPSTREAM_REJECTED","UPSTREAM_UNAVAILABLE","UPSTREAM_TIMEOUT","UPSTREAM_ERROR","INTERNAL"],"description":"What went wrong, as a stable machine-readable code. This is a closed set — branch on it rather than on `message`, which is prose and may change. New codes arrive in a minor version, so treat an unknown one as its HTTP status. A code can also stop being emitted: it leaves this set in a minor version, named in the changelog, and a branch you wrote for it goes unreached rather than wrong.","example":"BAD_REQUEST","isRequired":true,"uniqueKey":"error.code","typeLabel":"enum\u003cstring>"},"message":{"type":"string","description":"What went wrong, in prose. These codes always carry the same message, and it never includes text from a supplier: `RATE_LIMITED` — \"Too many requests. Retry after the Retry-After delay.\"; `OFFER_EXPIRED` — \"This offer has expired. Search again.\"; `OFFER_UNAVAILABLE` — \"This offer is no longer available. Search again.\"; `UPSTREAM_REJECTED` — \"The request was declined for this offer. Try another offer.\"; `UPSTREAM_UNAVAILABLE` — \"The service is temporarily unavailable. Retry after the Retry-After delay.\"; `UPSTREAM_TIMEOUT` — \"The request timed out before a result was available. Retry the request.\"; `UPSTREAM_ERROR` — \"The request could not be completed.\".","isRequired":true,"uniqueKey":"error.message","typeLabel":"string"},"doc_url":{"type":"string","uniqueKey":"error.doc_url","typeLabel":"string"},"field":{"type":"string","description":"On a 400 `BAD_REQUEST` that names one refused input: the path of that field in your request, e.g. `selections[1].quantity` for the second selection of a `select_ancillaries` call. Absent when the refusal names no single field.","example":"selections[1].quantity","uniqueKey":"error.field","typeLabel":"string"}},"required":["code","message"],"isRequired":true,"uniqueKey":"error","typeLabel":"object"}},"required":["error"],"uniqueKey":"","typeLabel":"object"},"example":{"error":{"code":"RATE_LIMITED","message":"Too many requests. Retry after the Retry-After delay.","doc_url":"https://docs.gojinko.com/concepts/errors"}},"examples":{"Example":{"title":"Example","value":{"error":{"code":"RATE_LIMITED","message":"Too many requests. Retry after the Retry-After delay.","doc_url":"https://docs.gojinko.com/concepts/errors"}}}},"exampleType":"examples"}},"exampleType":"examples"},"f2c230bc-a01c-45bf-9b96-4b1045543933":{"description":"The travel provider rejected the request, or an upstream call failed","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["INVALID_SEGMENTS_TO_EXCHANGE","PARTIAL_EXCHANGE_UNSUPPORTED","LEG_ALREADY_DEPARTED","DEPARTURE_DATE_IN_PAST","LEG_DATES_OUT_OF_ORDER","INVALID_EXCHANGE_REQUEST","NOT_EXCHANGEABLE","CREDENTIAL_FORMAT_INVALID","PAYMENT_TYPE_NOT_ENABLED","PAYMENT_CREDENTIAL_INVALID","TRIP_OWNED_BY_OTHER_PAYMENT","IDEMPOTENCY_KEY_REUSED","ATTEMPT_IN_PROGRESS","ATTEMPT_TERMINAL","TEMPORARILY_UNAVAILABLE","AUTH_REQUIRED","PAYMENT_REQUIRED","RATE_LIMITED","BAD_REQUEST","FORBIDDEN","NOT_FOUND","CONFLICT","GONE","QUOTE_PENDING","QUOTE_EXPIRED","TRIP_EXPIRED","TRIP_STATE_CONFLICT","OFFER_EXPIRED","OFFER_UNAVAILABLE","MISSING_CUSTOMER_DETAILS","INVALID_PHONE_NUMBER","INVALID_FLIGHT_NUMBER","CURRENCY_UNSUPPORTED","HOTEL_NAME_LOW_CONFIDENCE","DESTINATION_LOW_CONFIDENCE","UPSTREAM_REJECTED","UPSTREAM_UNAVAILABLE","UPSTREAM_TIMEOUT","UPSTREAM_ERROR","INTERNAL"],"description":"What went wrong, as a stable machine-readable code. This is a closed set — branch on it rather than on `message`, which is prose and may change. New codes arrive in a minor version, so treat an unknown one as its HTTP status. A code can also stop being emitted: it leaves this set in a minor version, named in the changelog, and a branch you wrote for it goes unreached rather than wrong.","example":"BAD_REQUEST","isRequired":true,"uniqueKey":"error.code","typeLabel":"enum\u003cstring>"},"message":{"type":"string","description":"What went wrong, in prose. These codes always carry the same message, and it never includes text from a supplier: `RATE_LIMITED` — \"Too many requests. Retry after the Retry-After delay.\"; `OFFER_EXPIRED` — \"This offer has expired. Search again.\"; `OFFER_UNAVAILABLE` — \"This offer is no longer available. Search again.\"; `UPSTREAM_REJECTED` — \"The request was declined for this offer. Try another offer.\"; `UPSTREAM_UNAVAILABLE` — \"The service is temporarily unavailable. Retry after the Retry-After delay.\"; `UPSTREAM_TIMEOUT` — \"The request timed out before a result was available. Retry the request.\"; `UPSTREAM_ERROR` — \"The request could not be completed.\".","isRequired":true,"uniqueKey":"error.message","typeLabel":"string"},"doc_url":{"type":"string","uniqueKey":"error.doc_url","typeLabel":"string"},"field":{"type":"string","description":"On a 400 `BAD_REQUEST` that names one refused input: the path of that field in your request, e.g. `selections[1].quantity` for the second selection of a `select_ancillaries` call. Absent when the refusal names no single field.","example":"selections[1].quantity","uniqueKey":"error.field","typeLabel":"string"}},"required":["code","message"],"isRequired":true,"uniqueKey":"error","typeLabel":"object"}},"required":["error"],"uniqueKey":"","typeLabel":"object"},"example":{"error":{"code":"UPSTREAM_REJECTED","message":"The request was declined for this offer. Try another offer.","doc_url":"https://docs.gojinko.com/concepts/errors"}},"examples":{"Example":{"title":"Example","value":{"error":{"code":"UPSTREAM_REJECTED","message":"The request was declined for this offer. Try another offer.","doc_url":"https://docs.gojinko.com/concepts/errors"}}}},"exampleType":"examples"}},"exampleType":"examples"},"abe3bf42-1755-4bcf-a226-00e0b5eb89e5":{"description":"No travel provider can serve the request right now","headers":{"Retry-After":{"description":"Seconds to wait before retrying. Absent when no interval applies.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["INVALID_SEGMENTS_TO_EXCHANGE","PARTIAL_EXCHANGE_UNSUPPORTED","LEG_ALREADY_DEPARTED","DEPARTURE_DATE_IN_PAST","LEG_DATES_OUT_OF_ORDER","INVALID_EXCHANGE_REQUEST","NOT_EXCHANGEABLE","CREDENTIAL_FORMAT_INVALID","PAYMENT_TYPE_NOT_ENABLED","PAYMENT_CREDENTIAL_INVALID","TRIP_OWNED_BY_OTHER_PAYMENT","IDEMPOTENCY_KEY_REUSED","ATTEMPT_IN_PROGRESS","ATTEMPT_TERMINAL","TEMPORARILY_UNAVAILABLE","AUTH_REQUIRED","PAYMENT_REQUIRED","RATE_LIMITED","BAD_REQUEST","FORBIDDEN","NOT_FOUND","CONFLICT","GONE","QUOTE_PENDING","QUOTE_EXPIRED","TRIP_EXPIRED","TRIP_STATE_CONFLICT","OFFER_EXPIRED","OFFER_UNAVAILABLE","MISSING_CUSTOMER_DETAILS","INVALID_PHONE_NUMBER","INVALID_FLIGHT_NUMBER","CURRENCY_UNSUPPORTED","HOTEL_NAME_LOW_CONFIDENCE","DESTINATION_LOW_CONFIDENCE","UPSTREAM_REJECTED","UPSTREAM_UNAVAILABLE","UPSTREAM_TIMEOUT","UPSTREAM_ERROR","INTERNAL"],"description":"What went wrong, as a stable machine-readable code. This is a closed set — branch on it rather than on `message`, which is prose and may change. New codes arrive in a minor version, so treat an unknown one as its HTTP status. A code can also stop being emitted: it leaves this set in a minor version, named in the changelog, and a branch you wrote for it goes unreached rather than wrong.","example":"BAD_REQUEST","isRequired":true,"uniqueKey":"error.code","typeLabel":"enum\u003cstring>"},"message":{"type":"string","description":"What went wrong, in prose. These codes always carry the same message, and it never includes text from a supplier: `RATE_LIMITED` — \"Too many requests. Retry after the Retry-After delay.\"; `OFFER_EXPIRED` — \"This offer has expired. Search again.\"; `OFFER_UNAVAILABLE` — \"This offer is no longer available. Search again.\"; `UPSTREAM_REJECTED` — \"The request was declined for this offer. Try another offer.\"; `UPSTREAM_UNAVAILABLE` — \"The service is temporarily unavailable. Retry after the Retry-After delay.\"; `UPSTREAM_TIMEOUT` — \"The request timed out before a result was available. Retry the request.\"; `UPSTREAM_ERROR` — \"The request could not be completed.\".","isRequired":true,"uniqueKey":"error.message","typeLabel":"string"},"doc_url":{"type":"string","uniqueKey":"error.doc_url","typeLabel":"string"},"field":{"type":"string","description":"On a 400 `BAD_REQUEST` that names one refused input: the path of that field in your request, e.g. `selections[1].quantity` for the second selection of a `select_ancillaries` call. Absent when the refusal names no single field.","example":"selections[1].quantity","uniqueKey":"error.field","typeLabel":"string"}},"required":["code","message"],"isRequired":true,"uniqueKey":"error","typeLabel":"object"}},"required":["error"],"uniqueKey":"","typeLabel":"object"},"example":{"error":{"code":"UPSTREAM_UNAVAILABLE","message":"The service is temporarily unavailable. Retry after the Retry-After delay.","doc_url":"https://docs.gojinko.com/concepts/errors"}},"examples":{"Example":{"title":"Example","value":{"error":{"code":"UPSTREAM_UNAVAILABLE","message":"The service is temporarily unavailable. Retry after the Retry-After delay.","doc_url":"https://docs.gojinko.com/concepts/errors"}}}},"exampleType":"examples"}},"exampleType":"examples"},"caef4695-0a7a-4c89-a517-8cbf8d3807c9":{"description":"The travel provider did not answer in time","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["INVALID_SEGMENTS_TO_EXCHANGE","PARTIAL_EXCHANGE_UNSUPPORTED","LEG_ALREADY_DEPARTED","DEPARTURE_DATE_IN_PAST","LEG_DATES_OUT_OF_ORDER","INVALID_EXCHANGE_REQUEST","NOT_EXCHANGEABLE","CREDENTIAL_FORMAT_INVALID","PAYMENT_TYPE_NOT_ENABLED","PAYMENT_CREDENTIAL_INVALID","TRIP_OWNED_BY_OTHER_PAYMENT","IDEMPOTENCY_KEY_REUSED","ATTEMPT_IN_PROGRESS","ATTEMPT_TERMINAL","TEMPORARILY_UNAVAILABLE","AUTH_REQUIRED","PAYMENT_REQUIRED","RATE_LIMITED","BAD_REQUEST","FORBIDDEN","NOT_FOUND","CONFLICT","GONE","QUOTE_PENDING","QUOTE_EXPIRED","TRIP_EXPIRED","TRIP_STATE_CONFLICT","OFFER_EXPIRED","OFFER_UNAVAILABLE","MISSING_CUSTOMER_DETAILS","INVALID_PHONE_NUMBER","INVALID_FLIGHT_NUMBER","CURRENCY_UNSUPPORTED","HOTEL_NAME_LOW_CONFIDENCE","DESTINATION_LOW_CONFIDENCE","UPSTREAM_REJECTED","UPSTREAM_UNAVAILABLE","UPSTREAM_TIMEOUT","UPSTREAM_ERROR","INTERNAL"],"description":"What went wrong, as a stable machine-readable code. This is a closed set — branch on it rather than on `message`, which is prose and may change. New codes arrive in a minor version, so treat an unknown one as its HTTP status. A code can also stop being emitted: it leaves this set in a minor version, named in the changelog, and a branch you wrote for it goes unreached rather than wrong.","example":"BAD_REQUEST","isRequired":true,"uniqueKey":"error.code","typeLabel":"enum\u003cstring>"},"message":{"type":"string","description":"What went wrong, in prose. These codes always carry the same message, and it never includes text from a supplier: `RATE_LIMITED` — \"Too many requests. Retry after the Retry-After delay.\"; `OFFER_EXPIRED` — \"This offer has expired. Search again.\"; `OFFER_UNAVAILABLE` — \"This offer is no longer available. Search again.\"; `UPSTREAM_REJECTED` — \"The request was declined for this offer. Try another offer.\"; `UPSTREAM_UNAVAILABLE` — \"The service is temporarily unavailable. Retry after the Retry-After delay.\"; `UPSTREAM_TIMEOUT` — \"The request timed out before a result was available. Retry the request.\"; `UPSTREAM_ERROR` — \"The request could not be completed.\".","isRequired":true,"uniqueKey":"error.message","typeLabel":"string"},"doc_url":{"type":"string","uniqueKey":"error.doc_url","typeLabel":"string"},"field":{"type":"string","description":"On a 400 `BAD_REQUEST` that names one refused input: the path of that field in your request, e.g. `selections[1].quantity` for the second selection of a `select_ancillaries` call. Absent when the refusal names no single field.","example":"selections[1].quantity","uniqueKey":"error.field","typeLabel":"string"}},"required":["code","message"],"isRequired":true,"uniqueKey":"error","typeLabel":"object"}},"required":["error"],"uniqueKey":"","typeLabel":"object"},"example":{"error":{"code":"UPSTREAM_TIMEOUT","message":"The request timed out before a result was available. Retry the request.","doc_url":"https://docs.gojinko.com/concepts/errors"}},"examples":{"Example":{"title":"Example","value":{"error":{"code":"UPSTREAM_TIMEOUT","message":"The request timed out before a result was available. Retry the request.","doc_url":"https://docs.gojinko.com/concepts/errors"}}}},"exampleType":"examples"}},"exampleType":"examples"}},"security":{"ce5fe646-6e26-4a52-9c93-561abb7ed6cb":{"ApiKeyAuth":{"type":"apiKey","in":"header","name":"X-API-Key","scopes":[],"schemeName":"ApiKeyAuth"}},"2dab8bd2-a885-4099-8305-f2a0dff06354":{"BearerAuth":{"type":"http","scheme":"bearer","scopes":[],"schemeName":"BearerAuth"}}},"servers":{"6c2e2c14-8667-4ef1-a6c7-d1e7fb982378":{"url":"https://api.gojinko.com","description":"Production"},"0b2c8592-7b6b-4acc-9351-2a69f3e0f42a":{"url":"https://api.sandbox.gojinko.com","description":"Sandbox"}},"processedSecurityOptions":[{"schemes":[{"scheme":{"type":"apiKey","in":"header","name":"X-API-Key","scopes":[],"schemeName":"ApiKeyAuth"},"schema":{"title":"X-API-Key","type":"string","isRequired":true,"typeLabel":"string","deprecated":false},"schemeName":"ApiKeyAuth","name":"X-API-Key"}],"title":"ApiKeyAuth"},{"schemes":[{"scheme":{"type":"http","scheme":"bearer","scopes":[],"schemeName":"BearerAuth"},"schema":{"title":"Bearer Auth","type":"string","isRequired":true,"description":"Bearer authentication header of the form `Bearer \u003ctoken>`, where `\u003ctoken>` is your auth token.","format":"bearer","typeLabel":"string\u003cbearer>","deprecated":false},"schemeName":"BearerAuth","name":"Authorization"}],"title":"BearerAuth"}]},"originalFileLocation":"api-reference/public-api.yaml"},"subdomain":"jinko-dev","siteName":"Jinko Platform","title":"find-destination - Jinko Platform","navMaps":{"firstHrefInVersion":{},"firstHrefInLanguage":{}},"lastModified":"2026-10-12T13:17:39.738Z","originalFileLocation":"api/find-destination.mdx"},"headHtml":"\u003cscript data-mint-head>(function(){var d=document.documentElement,p=null;if(!p){try{p=localStorage.getItem(\"isDarkMode\")}catch(e){}if(p==='true')p='dark';else if(p==='false')p='light';if(p!=='light'\u0026\u0026p!=='dark'\u0026\u0026p!=='system')p=\"system\"}var r=p==='system'?(matchMedia(\"(prefers-color-scheme: dark)\").matches?'dark':'light'):p;d.classList.remove(r==='dark'?'light':'dark');d.classList.add(r);d.setAttribute(\"data-theme-preference\",p)})();\u003c/script>\u003cmeta data-mint-head name=\"description\" content=\"Discover travel destinations accessible from your departure airports\">\u003cmeta data-mint-head name=\"application-name\" content=\"Jinko Platform\">\u003cmeta data-mint-head name=\"generator\" content=\"Mintlify\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/jinko-dev/jotmHl7NmaCERw_m/_generated/favicon/android-chrome-192x192.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"apple-touch-icon\" type=\"image/png\" sizes=\"180x180\" href=\"/mintlify-assets/_mintlify/favicons/jinko-dev/jotmHl7NmaCERw_m/_generated/favicon/apple-touch-icon.png\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/jinko-dev/jotmHl7NmaCERw_m/_generated/favicon/favicon-16x16.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/mintlify-assets/_mintlify/favicons/jinko-dev/jotmHl7NmaCERw_m/_generated/favicon/favicon-32x32.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/mintlify-assets/_mintlify/favicons/jinko-dev/jotmHl7NmaCERw_m/_generated/favicon/favicon.ico\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/jinko-dev/jotmHl7NmaCERw_m/_generated/favicon-dark/android-chrome-192x192.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/jinko-dev/jotmHl7NmaCERw_m/_generated/favicon-dark/favicon-16x16.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/mintlify-assets/_mintlify/favicons/jinko-dev/jotmHl7NmaCERw_m/_generated/favicon-dark/favicon-32x32.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/mintlify-assets/_mintlify/favicons/jinko-dev/jotmHl7NmaCERw_m/_generated/favicon-dark/favicon.ico\" media=\"(prefers-color-scheme: dark)\">\u003cmeta data-mint-head property=\"og:title\" content=\"find-destination - Jinko Platform\">\u003cmeta data-mint-head property=\"og:description\" content=\"Discover travel destinations accessible from your departure airports\">\u003cmeta data-mint-head property=\"og:site_name\" content=\"Jinko Platform\">\u003cmeta data-mint-head property=\"og:url\" content=\"https://docs.dev.gojinko.com/api/find-destination\">\u003cmeta data-mint-head property=\"og:type\" content=\"website\">\u003cmeta data-mint-head property=\"og:image\" content=\"https://jinko-dev.mintlify.site/_mintlify/api/og/v2?division=Discovery\u0026amp;title=find-destination\u0026amp;description=Discover+travel+destinations+accessible+from+your+departure+airports\u0026amp;theme=d8471b1916fc5bd660c4c758\u0026amp;signature=06ef262c5b84b5685264a5f36fdded0f28fec03c09c1d33101615bfeef1c1893\">\u003cmeta data-mint-head property=\"og:image:width\" content=\"1200\">\u003cmeta data-mint-head property=\"og:image:height\" content=\"630\">\u003cmeta data-mint-head name=\"twitter:card\" content=\"summary_large_image\">\u003cmeta data-mint-head name=\"twitter:title\" content=\"find-destination - Jinko Platform\">\u003cmeta data-mint-head name=\"twitter:description\" content=\"Discover travel destinations accessible from your departure airports\">\u003cmeta data-mint-head name=\"twitter:image\" content=\"https://jinko-dev.mintlify.site/_mintlify/api/og/v2?division=Discovery\u0026amp;title=find-destination\u0026amp;description=Discover+travel+destinations+accessible+from+your+departure+airports\u0026amp;theme=d8471b1916fc5bd660c4c758\u0026amp;signature=06ef262c5b84b5685264a5f36fdded0f28fec03c09c1d33101615bfeef1c1893\">\u003cmeta data-mint-head name=\"twitter:image:width\" content=\"1200\">\u003cmeta data-mint-head name=\"twitter:image:height\" content=\"630\">\u003cmeta data-mint-head name=\"msapplication-config\" content=\"/mintlify-assets/_mintlify/favicons/jinko-dev/jotmHl7NmaCERw_m/_generated/favicon/browserconfig.xml\">\u003cmeta data-mint-head name=\"apple-mobile-web-app-title\" content=\"Jinko Platform\">\u003cmeta data-mint-head name=\"msapplication-TileColor\" content=\"#FF6363\">\u003clink data-mint-head rel=\"canonical\" href=\"https://docs.dev.gojinko.com/api/find-destination\">\u003clink data-mint-head rel=\"alternate\" type=\"application/xml\" href=\"/sitemap.xml\">\u003clink data-mint-head rel=\"alternate\" type=\"text/markdown\" href=\"/api/find-destination.md\">\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@graph\":[{\"@type\":\"Organization\",\"@id\":\"https://docs.dev.gojinko.com/#organization\",\"name\":\"Jinko Platform\",\"url\":\"https://docs.dev.gojinko.com\",\"logo\":{\"@type\":\"ImageObject\",\"url\":\"https://mintcdn.com/jinko-dev/k6P2DyAYQF0FPJQi/logo/jinko-logo.png?fit=max\u0026auto=format\u0026n=k6P2DyAYQF0FPJQi\u0026q=85\u0026s=785a20dc553a2698bfffad325d1198d0\"}},{\"@type\":\"WebSite\",\"@id\":\"https://docs.dev.gojinko.com#website\",\"name\":\"Jinko Platform\",\"url\":\"https://docs.dev.gojinko.com\",\"publisher\":{\"@id\":\"https://docs.dev.gojinko.com/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https://docs.dev.gojinko.com/api/find-destination#webpage\",\"url\":\"https://docs.dev.gojinko.com/api/find-destination\",\"name\":\"find-destination\",\"description\":\"Discover travel destinations accessible from your departure airports\",\"dateModified\":\"2026-10-12T13:17:39.738Z\",\"isPartOf\":{\"@id\":\"https://docs.dev.gojinko.com#website\"},\"breadcrumb\":{\"@id\":\"https://docs.dev.gojinko.com/api/find-destination#breadcrumb\"}},{\"@type\":\"BreadcrumbList\",\"@id\":\"https://docs.dev.gojinko.com/api/find-destination#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Jinko Platform\",\"item\":\"https://docs.dev.gojinko.com\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"find-destination\",\"item\":\"https://docs.dev.gojinko.com/api/find-destination\"}]},{\"@type\":[\"TechArticle\",\"APIReference\"],\"@id\":\"https://docs.dev.gojinko.com/api/find-destination#apireference\",\"headline\":\"find-destination\",\"name\":\"find-destination\",\"description\":\"Discover travel destinations accessible from your departure airports\",\"url\":\"https://docs.dev.gojinko.com/api/find-destination\",\"mainEntityOfPage\":{\"@id\":\"https://docs.dev.gojinko.com/api/find-destination#webpage\"},\"dateModified\":\"2026-10-12T13:17:39.738Z\",\"publisher\":{\"@id\":\"https://docs.dev.gojinko.com/#organization\"},\"isPartOf\":{\"@id\":\"https://docs.dev.gojinko.com#website\"}}]}\u003c/script>\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@type\":\"WebSite\",\"name\":\"Jinko Platform\",\"creator\":{\"@type\":\"Organization\",\"name\":\"Mintlify\",\"url\":\"https://mintlify.com\"}}\u003c/script>","siteName":"Jinko Platform","nav":{"global":null,"tabs":[{"tab":"Documentation","pages":[{"title":"Documentation","href":"/introduction"}]},{"tab":"MCP","pages":[{"title":"MCP","href":"/tools/overview"}]},{"tab":"CLI","pages":[{"title":"CLI","href":"/cli/overview"}]},{"tab":"API reference","groups":[{"group":"Introduction","pages":[{"title":"API reference","href":"/api-reference/introduction"}]},{"group":"Travel Demand","pages":[{"group":"Destination","pages":[{"title":"destination","sidebarTitle":"/v1/destination","openapi":"api-reference/public-api.yaml GET /v1/destination","href":"/api/destination"},{"title":"destination trend","sidebarTitle":"/v1/destination/trend","openapi":"api-reference/public-api.yaml GET /v1/destination/trend","href":"/api/destination/trend"}]},{"group":"Market","pages":[{"title":"market","sidebarTitle":"/v1/market","openapi":"api-reference/public-api.yaml GET /v1/market","href":"/api/market"},{"title":"market trend","sidebarTitle":"/v1/market/trend","openapi":"api-reference/public-api.yaml GET /v1/market/trend","href":"/api/market/trend"}]},{"group":"Audience","pages":[{"title":"audience","sidebarTitle":"/v1/audience","openapi":"api-reference/public-api.yaml GET /v1/audience","href":"/api/audience"},{"title":"audience trend","sidebarTitle":"/v1/audience/trend","openapi":"api-reference/public-api.yaml GET /v1/audience/trend","href":"/api/audience/trend"}]},{"group":"Trend","pages":[{"title":"trend","sidebarTitle":"/v1/trend","description":"Demand time series for explicit origin/destination pairs","openapi":"api-reference/public-api.yaml GET /v1/trend","href":"/api/trend"}]}]},{"group":"Flights","pages":[{"group":"Discovery","pages":[{"title":"find-destination","sidebarTitle":"/v1/find_destination","openapi":"api-reference/public-api.yaml POST /v1/find_destination","href":"/api/find-destination"},{"title":"flight-calendar","sidebarTitle":"/v1/flight_calendar","description":"Search flights between a known origin and destination for flexible dates","openapi":"api-reference/public-api.yaml POST /v1/flight_calendar","href":"/api/flight-calendar"},{"title":"find-dates","sidebarTitle":"/v1/find_dates","openapi":"api-reference/public-api.yaml POST /v1/find_dates","href":"/api/find-dates"},{"title":"lowest-fare","sidebarTitle":"/v1/lowest_fare","openapi":"api-reference/public-api.yaml POST /v1/lowest_fare","href":"/api/lowest-fare"},{"title":"price-monitoring","sidebarTitle":"/v1/price_monitoring","openapi":"api-reference/public-api.yaml POST /v1/price_monitoring","href":"/api/price-monitoring"},{"title":"flight-price-advice","sidebarTitle":"/v1/flight_price_advice","openapi":"api-reference/public-api.yaml POST /v1/flight_price_advice","href":"/api/flight-price-advice"}]},{"group":"Search","pages":[{"title":"flight-search","sidebarTitle":"/v1/flight_search","openapi":"api-reference/public-api.yaml POST /v1/flight_search","href":"/api/flight-search"},{"title":"flight-award-search (preview)","sidebarTitle":"/v1/flight_award_search (preview)","openapi":"api-reference/public-api-dev.yaml POST /v1/flight_award_search","href":"/api/flight-award-search"}]},{"group":"Manage","pages":[{"title":"refund check","sidebarTitle":"/v1/refund_check","openapi":"api-reference/public-api.yaml POST /v1/refund_check","deprecated":true,"href":"/api/refund/check"},{"title":"refund commit","sidebarTitle":"/v1/refund_commit","openapi":"api-reference/public-api.yaml POST /v1/refund_commit","deprecated":true,"href":"/api/refund/commit"},{"title":"refund status","sidebarTitle":"/v1/refund_status","openapi":"api-reference/public-api.yaml POST /v1/refund_status","deprecated":true,"href":"/api/refund/status"},{"title":"exchange shop","sidebarTitle":"/v1/exchange_shop","openapi":"api-reference/public-api.yaml POST /v1/exchange_shop","href":"/api/exchange/shop"},{"title":"exchange price","sidebarTitle":"/v1/exchange_price","openapi":"api-reference/public-api.yaml POST /v1/exchange_price","href":"/api/exchange/price"},{"title":"exchange commit","sidebarTitle":"/v1/exchange_commit","openapi":"api-reference/public-api.yaml POST /v1/exchange_commit","href":"/api/exchange/commit"},{"title":"exchange status","sidebarTitle":"/v1/exchange_status","openapi":"api-reference/public-api.yaml POST /v1/exchange_status","href":"/api/exchange/status"},{"title":"flight-refund-preview","sidebarTitle":"/v1/flight_refund_preview","openapi":"api-reference/public-api.yaml POST /v1/flight_refund_preview","href":"/api/flight-refund-preview"},{"title":"flight-refund-commit","sidebarTitle":"/v1/flight_refund_commit","openapi":"api-reference/public-api.yaml POST /v1/flight_refund_commit","href":"/api/flight-refund-commit"},{"title":"flight-refund-status","sidebarTitle":"/v1/flight_refund_status","openapi":"api-reference/public-api.yaml POST /v1/flight_refund_status","href":"/api/flight-refund-status"}]}]},{"group":"Hotels","pages":[{"title":"hotel-search","sidebarTitle":"/v1/hotel_search","openapi":"api-reference/public-api.yaml POST /v1/hotel_search","href":"/api/hotel-search"},{"title":"hotel-details","sidebarTitle":"/v1/hotel_details/{hotel_id}","openapi":"api-reference/public-api.yaml GET /v1/hotel_details/{hotel_id}","href":"/api/hotel-details"},{"title":"hotel-reviews","sidebarTitle":"/v1/hotel_reviews/{hotel_id}","openapi":"api-reference/public-api.yaml GET /v1/hotel_reviews/{hotel_id}","href":"/api/hotel-reviews"},{"title":"hotel-cancel","sidebarTitle":"/v1/hotel_cancel","openapi":"api-reference/public-api.yaml POST /v1/hotel_cancel","deprecated":true,"href":"/api/hotel-cancel"},{"title":"hotel-cancel-preview","sidebarTitle":"/v1/hotel_cancel_preview","openapi":"api-reference/public-api.yaml POST /v1/hotel_cancel_preview","href":"/api/hotel-cancel-preview"},{"title":"hotel-cancel-commit","sidebarTitle":"/v1/hotel_cancel_commit","openapi":"api-reference/public-api.yaml POST /v1/hotel_cancel_commit","href":"/api/hotel-cancel-commit"},{"title":"hotel-cancel-status","sidebarTitle":"/v1/hotel_cancel_status","openapi":"api-reference/public-api.yaml POST /v1/hotel_cancel_status","href":"/api/hotel-cancel-status"}]},{"group":"AI","pages":[{"group":"Hotel search","pages":[{"title":"hotel-ai-search","sidebarTitle":"/v1/hotel_ai_search","openapi":"api-reference/public-api.yaml POST /v1/hotel_ai_search","href":"/api/hotel-ai-search"},{"title":"hotel-ai-search-task","sidebarTitle":"/v1/hotel_ai_search/tasks/{task_id}","openapi":"api-reference/public-api.yaml GET /v1/hotel_ai_search/tasks/{task_id}","href":"/api/hotel-ai-search-task"},{"title":"hotel-ai-search-events","sidebarTitle":"/v1/hotel_ai_search/tasks/{task_id}/events","openapi":"api-reference/public-api.yaml GET /v1/hotel_ai_search/tasks/{task_id}/events","href":"/api/hotel-ai-search-events"},{"title":"hotel-ai-search-cancel","sidebarTitle":"/v1/hotel_ai_search/tasks/{task_id}:cancel","openapi":"api-reference/public-api.yaml POST /v1/hotel_ai_search/tasks/{task_id}:cancel","href":"/api/hotel-ai-search-cancel"}]}]},{"group":"Cars","pages":[{"title":"car-search","sidebarTitle":"/v1/car_search","openapi":"api-reference/public-api.yaml POST /v1/car_search","href":"/api/car-search"},{"title":"car-cancel-preview","sidebarTitle":"/v1/car_cancel_preview","openapi":"api-reference/public-api.yaml POST /v1/car_cancel_preview","href":"/api/car-cancel-preview"},{"title":"car-cancel-commit","sidebarTitle":"/v1/car_cancel_commit","openapi":"api-reference/public-api.yaml POST /v1/car_cancel_commit","href":"/api/car-cancel-commit"},{"title":"car-cancel-status","sidebarTitle":"/v1/car_cancel_status","openapi":"api-reference/public-api.yaml POST /v1/car_cancel_status","href":"/api/car-cancel-status"}]},{"group":"Trip \u0026 Payment","pages":[{"title":"trip","sidebarTitle":"/v1/trip","openapi":"api-reference/public-api.yaml POST /v1/trip","href":"/api/trip"},{"group":"Ancillaries","pages":[{"title":"select-ancillaries","sidebarTitle":"/v1/select_ancillaries","openapi":"api-reference/public-api.yaml POST /v1/select_ancillaries","href":"/api/select-ancillaries"},{"title":"trip ancillaries","sidebarTitle":"/v1/trip/{trip_id}/ancillaries","openapi":"api-reference/public-api.yaml GET /v1/trip/{trip_id}/ancillaries","href":"/api/trip/ancillaries"}]},{"title":"checkout","sidebarTitle":"/v1/checkout","openapi":"api-reference/public-api.yaml POST /v1/checkout","href":"/api/checkout"},{"title":"agent-payment submit","sidebarTitle":"/v1/agent_payment/submit","openapi":"api-reference/public-api.yaml POST /v1/agent_payment/submit","href":"/api/agent-payment/submit"},{"title":"trip-status","sidebarTitle":"/v1/trip/{trip_id}","openapi":"api-reference/public-api.yaml GET /v1/trip/{trip_id}","href":"/api/trip-status"},{"title":"get-booking","sidebarTitle":"/v1/get_booking","openapi":"api-reference/public-api.yaml POST /v1/get_booking","href":"/api/get-booking"}]},{"group":"Marketing claim","tag":"Preview","pages":[{"title":"best-price-guarantee","sidebarTitle":"/v1/best_price_guarantee","openapi":"api-reference/public-api.yaml POST /v1/best_price_guarantee","href":"/api/best-price-guarantee"},{"title":"best-price-guarantee-status","sidebarTitle":"/v1/best_price_guarantee/{id}","openapi":"api-reference/public-api.yaml GET /v1/best_price_guarantee/{id}","href":"/api/best-price-guarantee-status"}]},{"group":"Webhooks","pages":[{"title":"webhooks register","sidebarTitle":"/v1/webhooks","openapi":"api-reference/public-api.yaml POST /v1/webhooks","href":"/api/webhooks/register"},{"title":"webhooks list","sidebarTitle":"/v1/webhooks","openapi":"api-reference/public-api.yaml GET /v1/webhooks","href":"/api/webhooks/list"},{"title":"webhooks get","sidebarTitle":"/v1/webhooks/{id}","openapi":"api-reference/public-api.yaml GET /v1/webhooks/{id}","href":"/api/webhooks/get"},{"title":"webhooks delete","sidebarTitle":"/v1/webhooks/{id}","openapi":"api-reference/public-api.yaml DELETE /v1/webhooks/{id}","href":"/api/webhooks/delete"},{"title":"webhooks test","sidebarTitle":"/v1/webhooks/{id}/test","openapi":"api-reference/public-api.yaml POST /v1/webhooks/{id}/test","href":"/api/webhooks/test"},{"title":"webhooks deliveries","sidebarTitle":"/v1/webhooks/{id}/deliveries","openapi":"api-reference/public-api.yaml GET /v1/webhooks/{id}/deliveries","href":"/api/webhooks/deliveries"},{"title":"webhooks replay","sidebarTitle":"/v1/webhooks/{id}/deliveries/{delivery_id}/replay","openapi":"api-reference/public-api.yaml POST /v1/webhooks/{id}/deliveries/{delivery_id}/replay","href":"/api/webhooks/replay"}]},{"group":"Other endpoints","pages":[{"title":"flight-ai-search","sidebarTitle":"/v1/flight_ai_search","openapi":"api-reference/public-api.yaml POST /v1/flight_ai_search","href":"/api/flight-ai-search"},{"title":"flight-ai-search-cancel","sidebarTitle":"/v1/flight_ai_search/tasks/{task_id}:cancel","openapi":"api-reference/public-api.yaml POST /v1/flight_ai_search/tasks/{task_id}:cancel","href":"/api/flight-ai-search-cancel"},{"title":"flight-ai-search-events","sidebarTitle":"/v1/flight_ai_search/tasks/{task_id}/events","openapi":"api-reference/public-api.yaml GET /v1/flight_ai_search/tasks/{task_id}/events","href":"/api/flight-ai-search-events"},{"title":"flight-ai-search-task","sidebarTitle":"/v1/flight_ai_search/tasks/{task_id}","openapi":"api-reference/public-api.yaml GET /v1/flight_ai_search/tasks/{task_id}","href":"/api/flight-ai-search-task"},{"title":"flight-schedule","sidebarTitle":"/v1/flight_schedule","openapi":"api-reference/public-api.yaml POST /v1/flight_schedule","href":"/api/flight-schedule"},{"title":"trip payment-attempts","sidebarTitle":"/v1/trip/{trip_id}/payment_attempts/{payment_attempt_id}","openapi":"api-reference/public-api.yaml GET /v1/trip/{trip_id}/payment_attempts/{payment_attempt_id}","href":"/api/trip/payment-attempts"}]}]}]},"basePath":"","title":"find-destination - Jinko Platform","buildId":"dpl_8LJbrAiZvr1K98WQNZXCyY5AvT34","deploymentId":"dpl_8LJbrAiZvr1K98WQNZXCyY5AvT34","dynamics":["c2aa737661","2b790eda92","b0f84f53ff","a9bb46feb3"],"chunks":["OpenApiReferenceProvider-i2a3QZ8E.js","utils-ChLwp8m0.js","cloneDeep-izs3Hzxb.js","_Uint8Array-BVIqJ90l.js","isObjectLike-C8vmzPEN.js","isArray-Dcu1dQ5t.js","utils-DRktVTDc.js","toString-BX-iyh8G.js","isSymbol-CSH9U2Gm.js","addUniqueKeysToSchema-CA2pEs4T.js","snippetPresets-ClQ6XrKD.js","style-to-object-BY3JEAdk.js","v4-DIgz8zy6.js","ApiExamples-Ct_Lv36y.js","isEqual-BfaiBbcl.js","usePlaygroundInputsStore-Cn2PYw9e.js","shallow-rkyymjXQ.js","getApiPlaygroundDisplay-BB9vkXtE.js","CodeSnippet-Bm5RU7m1.js","CodeSnippets-BgU9Deuz.js","Page-BUDYNlhG.js","getPastedJson-BD-6NNum.js","icon-8Z6tud2e.js","MethodPill-Tuzr4g3V.js","DuplicateIcon-0ceWFYhN.js","createIcon-FBXow_ST.js","DynamicMarkdown-CD8713Yy.js","SectionHeading-7zgzQbH-.js","axios-vUo_bRtp.js","Markdown-D7Ofw1oz.js","clsx-eKJ4rcii.js","lib-DuNMoZ05.js","lib-B8HbPgcC.js","html-void-elements-mCSPHezU.js","dist-CwjSCXIK.js","katex-YMM-FMeD.js","marked.esm-CZWythHk.js","AssistantPageLink-9EK5IAXV.js"]}