API live · Muse review pending

FlightClaim API

Structured preliminary flight guidance, protected by an integration API key.

Purpose and scope

FlightClaim provides preliminary flight-compensation guidance and official self-claim next steps. Its deterministic assessment is limited to delayed direct flights departing its supported German-airport list. It is not a claims representative, airline database, legal adjudicator or guaranteed compensation calculator. Other airports, connections and other disruption types are outside this tool's supported assessment—not a conclusion that the traveler has no rights.

No end-user account or paid plan is required. An integration API key is required for tool calls. There is no claim submission, purchase, payment or AirHelp API action.

Base URL and OpenAPI

https://api.invokeforge.com

OpenAPI 3.1 specification · Health · Readiness

MethodPathAccess
POST/v1/flightclaim/assess_disruptionIntegration key
POST/v1/flightclaim/get_claim_optionsIntegration key
GET/, /healthz, /readyz, /v1/openapi.jsonPublic metadata

No eSIM, CreatorScout, SellThis, remote MCP, static project files or other tool endpoints are exposed here.

Authentication

Configure Muse's API-key authentication to send the key in the X-API-Key header. This is OpenAPI type: apiKey, in: header; it is not OAuth or Bearer authentication. Receive/store the integration credential through a secure owner-approved channel.

X-API-Key: <secure integration credential>
Content-Type: application/json

The placeholder above is NOT a real key. Never put the key in a query string, client-side website, source, screenshot, transcript or request log. No browser cookies are accepted. Missing/invalid keys return a safe 401. This is a server-to-server integration; cross-origin browser tool calls are not enabled. The public spec permits cross-origin discovery without credentials.

Request fields

Both tools use the existing bounded structured FlightClaim schema below. Fields are optional; missing information is handled conservatively. Unknown extra fields are rejected. Do not send passenger names, email, flight/booking references, documents, free-text descriptions, payment data or arbitrary URLs. No locale field has been added.

FieldValues / boundsMeaning
departure_airportstring; pattern ^[A-Z]{3}$Three-letter IATA airport code (uppercase).
arrival_delay_minutesinteger; 0–1440Arrival delay at the final destination in minutes.
categoryshort_haul | medium_haul | long_haul | unknownRough flight distance band used for the preliminary reference.
journeydirect | connection | unknownWhether the flight was a direct flight or a connection. Connections are outside the supported scope.
disruptiondelay | cancellation | denied_boardingWhat actually happened on the flight. Cancellation and denied_boarding are outside_supported_scope in this RC.
had_bookingyes | no | unknownWhether the eligibility fact is true, false, or unknown.
had_check_inyes | no | unknownWhether the eligibility fact is true, false, or unknown.
causeunknown | confirmed_not_extraordinary | disputed_or_extraordinaryCertainty about whether extraordinary circumstances apply.

Examples

Synthetic examples generated from the same production handlers and validated against the published schemas. Values are illustrative, not a real traveler's claim.

Assess a disruption

POST /v1/flightclaim/assess_disruption
{
  "departure_airport": "FRA",
  "arrival_delay_minutes": 240,
  "category": "short_haul",
  "journey": "direct",
  "disruption": "delay",
  "had_booking": "yes",
  "had_check_in": "yes",
  "cause": "confirmed_not_extraordinary"
}
Example 200 assessment response
{
  "outcome": "possible_eligibility",
  "explanation": "Preliminary: MAY be entitled to EU261 compensation (direct flight, German-airport departure, ≥3h delay, no extraordinary circumstances, valid booking, on-time check-in). Airline bears burden of proof.",
  "missing_facts": [],
  "next_steps": [
    "Read official EU guidance, then contact the airline directly. Consult the guidance for escalation to an enforcement body.",
    "Gather booking confirmation, boarding pass and any airline communication about the disruption."
  ],
  "jurisdiction_note": "Departure airport FRA (Frankfurt) is in Germany; within EU261 perimeter for German-airport departures.",
  "source": {
    "id": "youreurope-air-passenger-rights",
    "title": "Air passenger rights — Your Europe (europa.eu)",
    "url": "https://europa.eu/youreurope/citizens/travel/passenger-rights/air/index_en.htm",
    "last_checked": "2026-09-29",
    "fetched_at": "2026-09-29"
  }
}

Get claim options

POST /v1/flightclaim/get_claim_options
{
  "departure_airport": "FRA"
}
Example 200 options response
{
  "options": [
    {
      "id": "official-your-europe",
      "label": "Official EU air passenger rights (Your Europe)",
      "kind": "official_self_claim",
      "url": "https://europa.eu/youreurope/citizens/travel/passenger-rights/air/index_en.htm",
      "note": "Authoritative reference for departures from FRA. Filing directly with the airline and the national enforcement body is free."
    },
    {
      "id": "commercial-referral",
      "label": "Optional commercial claim assistance",
      "kind": "commercial_referral",
      "url": "https://www.airhelp.com/en-int/?utm_medium=affiliate&utm_source=pap&utm_campaign=aff-flightclaim&utm_content=&a_aid=flightclaim&a_bid=7f1ca9fa&chan=muse",
      "note": "AirHelp affiliate approved; 15% and user-clicked AI referrals confirmed. Issued link captured; owner activation remains required."
    }
  ],
  "commercial_referral": {
    "status": "available",
    "reason": "The configured commercial referral host is on the allowlist and owner-authorized.",
    "authorized": true
  },
  "disclosure": {
    "affiliate_commission": "AirHelp affiliate approved; 15% and user-clicked AI referrals confirmed. Issued link captured; owner activation remains required.",
    "commercial_referral_authorized": true,
    "commercial_referral_url_configured": true,
    "airhelp_terms_verified": false
  },
  "source": {
    "id": "youreurope-air-passenger-rights",
    "title": "Air passenger rights — Your Europe (europa.eu)",
    "url": "https://europa.eu/youreurope/citizens/travel/passenger-rights/air/index_en.htm",
    "last_checked": "2026-09-29",
    "fetched_at": "2026-09-29"
  }
}

The partner URL in the example is plain text, not an automatically followed link. Clients must never prefetch or visit it as an integration check.

Usage and safe failures

JSON request body maximum: 16 KiB. Content type: application/json. No compressed request bodies or query parameters. Body read deadline: 10 seconds. Cloudflare rate limits are configured at 120 requests/minute for admission and 60 requests/minute per tool, shared by this integration in each Cloudflare location. Limits are eventually consistent and location-local, not a global accounting guarantee or SLA. A 429 includes Retry-After: 60.

400 invalid/extra input; 401 missing/invalid API key; 403 disallowed origin/cookies/non-HTTPS; 404 unknown route; 405 wrong method; 408 body deadline; 413 oversized body; 415 media type; 429 rate limit; 503 configuration/runtime unavailable. Errors do not echo supplied input or secrets. See the spec for exact response schemas.

{
  "error": {
    "code": "unauthorized",
    "message": "A valid X-API-Key integration header is required."
  }
}

Affiliate referral behavior

The AirHelp affiliate account is approved. AirHelp confirmed normal user-clicked AI-origin referrals and a 15% affiliate commission rate for InvokeForge, subject to program conditions. This is not a quoted traveler fee. This does not imply AirHelp endorsement, automatic claims, guaranteed compensation or a fixed payout per passenger.

When owner-authorized routing is enabled, get_claim_options preserves the official self-claim route and may return the exact issued EN-INT fallback with the Muse ad-channel marker. It adds no traveler data. The API never fetches, prefetches, navigates to or submits anything to AirHelp. The user chooses whether to click a normal referral link. Client renderers must preserve the issued destination, show the commission disclosure, avoid automatic previews/clicks and follow applicable link-placement requirements.

The modular locale router is available for a future verified Muse context adapter. The current public schema has no locale input: IP, airport and browser headers are not used to infer one; EN-INT is the fallback. airhelp_terms_verified:false is not a denial of account approval; the API does not certify every operational/legal term. Inspect the explicit referral status and authorization fields.

Privacy and support

The application uses only the structured facts sent for this request. It has no customer database, saved claims, payment information, image downloads or application request-body/header logging. Rate-limit counters use fixed integration/route keys rather than personal identifiers. Cloudflare and the calling AI/platform may process network metadata or retain information under their own settings/policies; this is not a promise of zero retention across all systems.

See Privacy and Terms. For access/support: InvokeForge support or apptreestudios@gmail.com. Do not email API keys or unnecessary booking/personal information.