Wego · OpenAPI Overlay 1.0.0

API Evangelist enrichment overlay for the Wego API

8 actions 8 updates update extends openapi/wego-api-openapi.json
Derived by API Evangelist Built from the contracts Wego publishes. Wego did not publish this file.
View Overlay File View on GitHub Overlay Specification

What the actions change

x-rate-limitx-async-settlementx-preconditionx-apis-io-artifactsx-lifecycle-stagex-lifecycle-notex-idempotencyx-reversibility

Targets 7

$.info
$.paths['/v1/flights/searches'].post
$.paths['/v1/hotels/searches'].post
$.paths['/v1/hotels/{hotelId}/rates'].get
$.paths['/v1/flights/fares/{fareId}/options'].get
$.paths['/v1/places'].get
$.components.securitySchemes.oauth2

OpenAPI Overlay

Raw ↑
overlay: 1.0.0
info:
  title: API Evangelist enrichment overlay for the Wego API
  version: 1.0.0
extends: openapi/wego-api-openapi.json
x-generated: '2026-09-04'
x-method: derived
x-source: >-
  openapi/wego-api-openapi.json plus the Wego documentation pages that state rules the spec
  itself does not carry (https://docs.wego.com/api/errors,
  https://docs.wego.com/api/rate-limits, https://docs.wego.com/api/how-search-works,
  https://docs.wego.com/api/ids-expire, https://docs.wego.com/api/fares-rates-partners,
  https://docs.wego.com/overview)
x-note: >-
  This overlay records API Evangelist's enrichment of the Wego contract. It never mutates the
  original spec on disk. Every action below carries information Wego publishes in its own
  documentation but does NOT encode in the machine contract - which is exactly the gap an
  agent falls into when it reads the spec alone.
actions:
- target: $.info
  description: Attach the repository's artifact index and the Research Preview status the spec omits.
  update:
    x-apis-io-artifacts:
      authentication: authentication/wego-authentication.yml
      scopes: scopes/wego-scopes.yml
      errors: errors/wego-problem-types.yml
      rate-limits: rate-limits/wego-rate-limits.yml
      conventions: conventions/wego-conventions.yml
      lifecycle: lifecycle/wego-lifecycle.yml
      data-model: data-model/wego-data-model.yml
      mcp: mcp/wego-mcp.yml
      tool-crosswalk: mcp/wego-tool-crosswalk.yml
      cli: cli/wego-cli.yml
      skills: skills/_index.yml
      conformance: conformance/wego-conformance.yml
    x-lifecycle-stage: research-preview
    x-lifecycle-note: >-
      Endpoints and response shapes can change; Wego tells callers to pin nothing they cannot
      re-check. There is no SLA and no deprecation policy.
- target: $.info
  description: Record the runtime semantics documented outside the contract.
  update:
    x-idempotency:
      coverage: none
      note: No Idempotency-Key header or replay window is documented or declared.
    x-reversibility:
      grade: na
      note: >-
        No consequential write surface. Searches are ephemeral snapshots and no booking,
        payment or charge happens through this API.
    x-error-envelope:
      format: rfc9457
      media_type: application/problem+json
      branch_on: code
      closed_enum: true
    x-rate-limit-headers:
    - RateLimit
    - RateLimit-Policy
    - X-RateLimit-Limit
    - X-RateLimit-Remaining
    - X-RateLimit-Reset
    - X-RateLimit-Resource
    - Retry-After
- target: $.paths['/v1/flights/searches'].post
  description: Record the async settlement rule and the per-operation quota, neither of which is in the spec.
  update:
    x-async-settlement:
      terminal_flag: null
      read_until: metadata.snapshotFareCount holds steady across two consecutive reads and
        metadata.snapshotTripCount is above zero
      backoff: 300ms to 3s
    x-rate-limit:
      quota_name: createFlightSearch
      windows:
      - limit: 10
        window: 60s
      - limit: 100
        window: 3600s
      - limit: 500
        window: 86400s
- target: $.paths['/v1/hotels/searches'].post
  description: Record the dual quota name and the settlement rule.
  update:
    x-async-settlement:
      terminal_flag: searchComplete
      note: >-
        searchComplete:true is terminal; false is advisory. Poll
        metadata.snapshotCandidateCount until it holds steady at a non-zero value.
    x-rate-limit:
      quota_name_city_or_geo: createHotelSearch
      quota_name_with_hotel_id: createHotelSearchScoped
      note: >-
        One operation, two quota names. A create carrying hotelId is metered as
        createHotelSearchScoped (30/60s, 300/3600s, 1500/86400s); a city or geo create is
        metered as createHotelSearch (10/60s, 100/3600s, 500/86400s). Match on the name the
        RateLimit header carries, not on the operationId.
- target: $.paths['/v1/hotels/{hotelId}/rates'].get
  description: Record the 409 precondition and its quota.
  update:
    x-precondition:
      requires: a searchId created with hotelId
      failure: 409 rates_require_hotel_search
      note: >-
        A city or geo search is rejected. Only a hotel-scoped search prices the full room
        list; re-reading a city search never deepens its sample.
    x-rate-limit:
      quota_name: getHotelRates
      windows:
      - limit: 60
        window: 60s
      - limit: 600
        window: 3600s
      - limit: 3000
        window: 86400s
- target: $.paths['/v1/flights/fares/{fareId}/options'].get
  description: Record the fare-kind precondition and the covers semantics.
  update:
    x-precondition:
      requires: a fare whose kind is "wego"
      failure: 400
      note: Airline and partner fares are fulfilled by the provider and do not work here.
    x-covers-semantics:
      values: [trip, leg]
      positive_witness: true
      note: >-
        "trip" means pass exactly one fareOptionId; "leg" means pass one id per leg
        (comma-separated, at most 8, none repeated). Absent means the upstream did not let
        Wego attribute the option - never that it covers the trip. Passing a single "leg" id
        is rejected by nothing and opens a booking page priced on one leg of a round trip.
- target: $.paths['/v1/places'].get
  description: Record the disambiguation rule.
  update:
    x-ambiguity:
      field: metadata.hasAmbiguity
      note: >-
        When true, ask the traveler which place they meant rather than taking the top row.
        An agent that resolves silently books the wrong Cambridge.
- target: $.components.securitySchemes.oauth2
  description: Record the discovery documents that make this flow self-configuring for agents.
  update:
    x-discovery:
      authorization_server_metadata: https://api.wego.com/.well-known/oauth-authorization-server
      protected_resource_metadata: https://api.wego.com/.well-known/oauth-protected-resource/mcp
      dynamic_client_registration: https://api.wego.com/mcp/register
      openid_configuration: null
      openid_configuration_note: >-
        An `openid` scope is offered but no /.well-known/openid-configuration is served on any
        Wego host, so OIDC discovery is unavailable.

Work with this as data

Every overlay here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for openapi overlays

4 MCP tools reach this
  • find_overlaysBrowse and filter every overlay in the catalog.
  • apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
  • resolveTurn a domain, URL or GitHub org into the provider it belongs to.
  • find_cohortsEvery scored population of providers in the catalog.
All 92 tools →

Call it yourself

curl for this page
This overlay
curl "https://apis.io/api/v1/overlays/wego-api-overlay"
All openapi overlays
curl "https://apis.io/api/v1/overlays?limit=25"

Calls without X-API-Key need no key. Calls with it need a paid plan — get a key.

Get an API key

Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.

A second provider on the same verified email joins the account you already have.