La base de parcours FlyAway est lisible sans compte : ni clé d'API, ni OAuth, ni inscription. Chaque opération listée ici répond à une requête GET anonyme et renvoie du JSON. La description complète, lisible par machine, est publiée sous forme de document OpenAPI 3.1.
Trois appels couvrent l'essentiel des besoins d'une intégration : résoudre un parcours, lire sa fiche complète, ou trouver les parcours les plus proches d'une coordonnée.
# Full profile of one course
curl -s "https://api.flyawaygolf.com/v2/golfs/profile/golf-national"
# The 10 courses nearest a coordinate, with distances in metres
curl -s "https://api.flyawaygolf.com/v2/search/map/golfs?lat=48.75&long=2.07&max_distance=50000&limit=10"
# The same course as prose, for a language model
curl -s "https://flyawaygolf.com/golfs/golf-national/llm.md"
# Base URL
https://api.flyawaygolf.com/v2Ce tableau est généré à partir du document OpenAPI : les deux ne peuvent donc pas diverger. Toutes les opérations sont des GET et toute réponse réussie est encapsulée dans une clé data de premier niveau.
| Opération | Endpoint | Description |
|---|---|---|
| Courses | ||
| listGolfCourses | GET /golfs | List golf courses |
| getGolfCourseProfile | GET /golfs/profile/{slug} | Get the full profile of a golf course |
| getGolfCourseSummary | GET /seo/golfs/{identifier} | Get a compact summary of a golf course |
| resolveGolfCourseId | GET /golfs/resolve/{golf_id} | Resolve a course id to its slug |
| searchGolfCoursesByLocation | GET /search/map/golfs | Find golf courses around a coordinate |
| Directory | ||
| listContinents | GET /public/golfs/continents | List continents with course counts |
| listCountries | GET /public/golfs/countries | List countries with course counts |
| getDirectoryEntry | GET /public/golfs/{slug} | Get a continent or a country by slug |
| listCountryRegions | GET /public/golfs/{country}/regions | List the regions of a country |
| listRegionGolfCourses | GET /public/golfs/{country}/{region} | List the golf courses of a region |
| listCityGolfCourses | GET /public/golfs/{country}/{region}/{city} | List the golf courses of a city |
| Rankings | ||
| listBestGolfCoursesWorldwide | GET /public/best/world | List the highest-rated courses worldwide |
| listBestGolfCoursesByArea | GET /public/best/{slug} | List the highest-rated courses of a continent or country |
| listBestGolfCoursesByRegion | GET /public/best/{country}/{region} | List the highest-rated courses of a region |
| Metadata | ||
| getCountryMetadata | GET /seo/country/{slug} | Get breadcrumbs and counts for a country |
| getContinentMetadata | GET /seo/continent/{slug} | Get breadcrumbs and counts for a continent |
| getRegionMetadata | GET /seo/region/{country}/{region} | Get breadcrumbs and counts for a region |
| Enumeration | ||
| listSitemapContinents | GET /seo/sitemap/continents | Enumerate every continent slug |
| listSitemapCountries | GET /seo/sitemap/countries | Enumerate every country slug |
| listSitemapRegions | GET /seo/sitemap/regions | Enumerate every region slug |
| listSitemapCities | GET /seo/sitemap/cities | Enumerate every city slug |
| Agent files | ||
| getGolfCourseMarkdown | GET /golfs/{slug}/llm.md | Get a golf course as markdown |
| getLlmsTxt | GET /llms.txt | Get the llms.txt index |
| getOpenApiDocument | GET /openapi.json | Get this document |
Quatre fichiers lisibles par machine décrivent le site à un agent. Commencez par llms.txt : il indique ce que contient le jeu de données, quand FlyAway est la bonne source, et les motifs d'URL de tout le reste.
/llms.txt — What FlyAway is, what the dataset contains, when to use it, and the URL patterns for everything else. Start here./llms-full.txt — The same, at length: the product surface, the data model and the caveats in full./openapi.json — The public API as an OpenAPI 3.1 document. Also served as YAML at /openapi.yaml./golfs/{slug}/llm.md — Any course as markdown, e.g. https://flyawaygolf.com/golfs/golf-national/llm.md./sitemaps/index — The sitemap index: every indexable URL, paginated, including all 35,165 course pages.Les endpoints publics en lecture ne demandent aucune information d'authentification : envoyez la requête et lisez la réponse. Les endpoints qui touchent aux données personnelles d'un membre (parties, statistiques, messages, assistant IA) exigent un jeton de session émis par les applications FlyAway ; ils ne font pas partie de la surface publique et sont volontairement absents du document OpenAPI, puisqu'un agent ne peut pas les appeler.
Restez sous 5 requêtes par seconde depuis une même IP, et mettez en cache ce que vous lisez : les données de parcours ne changent pas d'une semaine à l'autre. FlyAway suit la convention RFC 9331 sur toute réponse portant un quota — RateLimit-Limit, RateLimit-Remaining et RateLimit-Reset, plus Retry-After sur un 429. Une réponse ne portant aucun de ces en-têtes n'a pas été décomptée d'un quota par appelant. Sur un 429, patientez le nombre de secondes indiqué par Retry-After puis réessayez une fois.
Les échecs renvoient un corps JSON contenant un objet error avec un message lisible et un code numérique stable. Un 400 signifie que l'identifiant ou un paramètre a été rejeté ; un 404 qu'aucune ressource ne correspond.
Le document OpenAPI est écrit pour être chargé directement comme manifeste de function calling : chaque opération porte un operationId unique, une description écrite pour un modèle et non pour un moteur de recherche, des paramètres typés avec leurs bornes, et un schéma de réponse. Convertissez-le avec l'utilitaire OpenAPI-vers-outils de votre framework : aucun wrapper manuel n'est nécessaire.
Il n'existe pas encore de CLI officielle ni de serveur MCP. En attendant, le document OpenAPI est le chemin d'intégration pris en charge, et les pages de parcours en markdown sont la façon prise en charge de lire un parcours sous forme de texte.
Les questions techniques que la documentation ne couvre pas sont bienvenues par e-mail. Merci d'indiquer l'URL exacte appelée et la réponse obtenue.
[email protected]