La base de campos de FlyAway se puede leer sin cuenta: sin clave de API, sin OAuth, sin registro. Cada operación aquí listada responde a una petición GET anónima y devuelve JSON. La descripción completa, legible por máquina, se publica como documento OpenAPI 3.1.
Tres llamadas cubren casi todo lo que necesita una integración: resolver un campo, leer su ficha completa o encontrar los campos más cercanos a unas coordenadas.
# 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/v2Esta tabla se genera a partir del documento OpenAPI, así que ambos no pueden divergir. Todas las operaciones son GET y toda respuesta correcta va envuelta en una clave data de primer nivel.
| Operación | Endpoint | Descripción |
|---|---|---|
| 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 |
Cuatro archivos legibles por máquina describen el sitio a un agente. Empieza por llms.txt: indica qué contiene el conjunto de datos, cuándo FlyAway es la fuente adecuada y los patrones de URL de todo lo demás.
/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.Los endpoints públicos de lectura no piden credenciales: envía la petición y lee la respuesta. Los endpoints que tocan los datos personales de un miembro (vueltas, estadísticas, mensajes, asistente de IA) exigen un token de sesión emitido por las aplicaciones de FlyAway; no forman parte de la superficie pública y se han omitido a propósito del documento OpenAPI, porque un agente no puede llamarlos.
Mantente por debajo de 5 peticiones por segundo desde una misma IP y cachea lo que leas: los datos de campos no cambian de una semana a otra. FlyAway sigue la convención RFC 9331 en toda respuesta que lleve cupo — RateLimit-Limit, RateLimit-Remaining y RateLimit-Reset, más Retry-After en un 429. Una respuesta sin ninguna de esas cabeceras no se descontó de un cupo por llamante. Ante un 429, espera los segundos que indique Retry-After y reintenta una vez.
Los fallos devuelven un cuerpo JSON con un objeto error que lleva un mensaje legible y un código numérico estable. Un 400 significa que se rechazó el identificador o un parámetro; un 404, que no hay nada que coincida.
El documento OpenAPI está escrito para cargarse directamente como manifiesto de function calling: cada operación lleva un operationId único, una descripción escrita para un modelo y no para un buscador, parámetros tipados con sus límites y un esquema de respuesta. Conviértelo con la utilidad OpenAPI-a-herramientas de tu framework y no hará falta ningún wrapper manual.
Todavía no hay una CLI oficial ni un servidor MCP. Mientras tanto, el documento OpenAPI es la vía de integración soportada, y las páginas de campo en markdown son la forma soportada de leer un campo como texto.
Las preguntas técnicas que la documentación no resuelva son bienvenidas por correo. Indica la URL exacta que llamaste y la respuesta que recibiste.
[email protected]