StayingAPI · Authentication Profile

Stayingapi Authentication

Authentication

StayingAPI runs two distinct auth surfaces. The REST API at api.stayingapi.com/v1 uses a Bearer API key with an environment-encoding prefix (stay_test_ = deterministic sandbox, stay_live_ = live). The hosted MCP server at mcp.stayingapi.com/mcp uses OAuth 2.1 with PKCE (S256) and dynamic client registration, advertised through RFC 8414 authorization server metadata and RFC 9728 protected-resource metadata. Both draw on the same account and the same single credit balance.

StayingAPI secures its APIs with http and oauth2 across 2 declared security schemes, as derived from its OpenAPI definitions. OAuth 2.0 is offered via the authorizationCode flow(s).

travelhospitalityaccommodation-datahotel-apivacation-rentalshort-term-rentalairbnbbooking.comvrbogoogle-hotelscross-ota-price-comparisonavailabilityreviewsrestmcpagent-nativeopenapi
Methods: http, oauth2 Schemes: 2 OAuth flows: authorizationCode API key in: header

Security Schemes

bearerAuth http
scheme: bearer
mcpOAuth oauth2
· flows: authorizationCode

Source

Authentication Profile

Raw ↑
generated: '2026-08-09'
method: searched
source: openapi/stayingapi-openapi-original.json
docs: https://stayingapi.com/docs/authentication
description: >-
  StayingAPI runs two distinct auth surfaces. The REST API at api.stayingapi.com/v1 uses a
  Bearer API key with an environment-encoding prefix (stay_test_ = deterministic sandbox,
  stay_live_ = live). The hosted MCP server at mcp.stayingapi.com/mcp uses OAuth 2.1 with
  PKCE (S256) and dynamic client registration, advertised through RFC 8414 authorization
  server metadata and RFC 9728 protected-resource metadata. Both draw on the same account
  and the same single credit balance.
summary:
  types:
    - http
    - oauth2
  api_key_in:
    - header
  oauth2_flows:
    - authorizationCode
schemes:
  - name: bearerAuth
    type: http
    scheme: bearer
    surface: REST
    description: >-
      Bearer API key sent as `Authorization: Bearer <key>`. stay_test_ = deterministic
      sandbox (0 credits, synchronous); stay_live_ = live.
    key_prefixes:
      - stay_test_
      - stay_live_
    sources:
      - openapi/stayingapi-openapi-original.json
      - https://stayingapi.com/docs/authentication
  - name: mcpOAuth
    type: oauth2
    surface: MCP
    description: >-
      OAuth 2.1 authorization code + PKCE (S256) with dynamic client registration for the
      hosted MCP server. Not declared in the REST OpenAPI; discovered from the live
      /.well-known metadata on mcp.stayingapi.com.
    flows:
      - flow: authorizationCode
        issuer: https://mcp.stayingapi.com/mcp/oauth
        authorizationUrl: https://mcp.stayingapi.com/mcp/oauth/authorize
        tokenUrl: https://mcp.stayingapi.com/mcp/oauth/token
        registrationUrl: https://mcp.stayingapi.com/mcp/oauth/register
        code_challenge_methods:
          - S256
        token_endpoint_auth_methods:
          - none
          - client_secret_basic
        scopes:
          - stays.read
    sources:
      - well-known/stayingapi-oauth-authorization-server.json
      - well-known/stayingapi-oauth-protected-resource.json
      - https://stayingapi.com/docs/mcp
key_management:
  dashboard: https://stayingapi.com/dashboard/keys
  rotation: Keys can be created, labelled, rotated and revoked from the dashboard.
  storage: Secret is displayed once at creation and stored only as a hash.
  revocation: Revoked keys immediately return 401 revoked_api_key.
  verification_gate: >-
    Live credits are unusable until account email is verified; a 403 permission_denied /
    email_unverified is returned until then. Sandbox keys work throughout.
x-evidence:
  - url: https://api.stayingapi.com/openapi.json
    http_status: 200
    note: components.securitySchemes.bearerAuth
  - url: https://mcp.stayingapi.com/.well-known/oauth-authorization-server
    http_status: 200
  - url: https://mcp.stayingapi.com/.well-known/oauth-protected-resource
    http_status: 200
  - url: https://mcp.stayingapi.com/mcp
    http_status: 401
    note: >-
      WWW-Authenticate: Bearer resource_metadata="https://mcp.stayingapi.com/mcp/.well-known/oauth-protected-resource"