> ## Documentation Index
> Fetch the complete documentation index at: https://docs.airrating.io/llms.txt
> Use this file to discover all available pages before exploring further.

# Route News

> Get recent news and disruption reports for a route.

## Overview

Returns recent news articles, strike alerts, weather warnings, and disruption reports relevant to a given route. Powered by AI curation from Google News and ANSA — only items with meaningful impact on flight reliability are included.

News is cached for 6 hours per route. Pass `refresh=true` to force a fresh fetch.

## Request

<ParamField query="origin" type="string" required>
  IATA code of the departure airport.
</ParamField>

<ParamField query="dest" type="string" required>
  IATA code of the arrival airport.
</ParamField>

<ParamField query="refresh" type="boolean" default="false">
  If `true`, bypasses the cache and fetches fresh news. Use sparingly.
</ParamField>

<ParamField query="api_key" type="string" required>
  Your API key.
</ParamField>

## Response

<ResponseField name="origin" type="string">
  IATA code of the departure airport.
</ResponseField>

<ResponseField name="dest" type="string">
  IATA code of the arrival airport.
</ResponseField>

<ResponseField name="news" type="array">
  List of news items relevant to the route.

  <Expandable title="News item">
    <ResponseField name="title" type="string">
      Article or alert title.
    </ResponseField>

    <ResponseField name="summary" type="string">
      AI-generated one-sentence summary of the disruption impact.
    </ResponseField>

    <ResponseField name="source" type="string">
      Source name (e.g. `AviationHerald`, `ANSA`).
    </ResponseField>

    <ResponseField name="url" type="string">
      Link to the original article.
    </ResponseField>

    <ResponseField name="published_at" type="string">
      ISO 8601 publication timestamp.
    </ResponseField>

    <ResponseField name="impact" type="string">
      Estimated disruption impact: `low`, `medium`, or `high`.
    </ResponseField>

    <ResponseField name="event_type" type="string">
      Category: `strike`, `weather`, `atc`, `security`, `technical`, or `general`.
    </ResponseField>

    <ResponseField name="severity" type="float">
      Numeric severity estimate 0.0–1.0.
    </ResponseField>
  </Expandable>
</ResponseField>

<ResponseField name="meta" type="object">
  Cache and fetch metadata.

  <Expandable title="meta fields">
    <ResponseField name="count" type="integer">Number of news items returned.</ResponseField>
    <ResponseField name="cached" type="boolean">Whether the response was served from cache.</ResponseField>
    <ResponseField name="fetched_at" type="string">ISO 8601 timestamp of the last fetch.</ResponseField>
    <ResponseField name="cache_ttl_hours" type="integer">Cache TTL in hours (default: 6).</ResponseField>
  </Expandable>
</ResponseField>

## Example

<CodeGroup>
  ```bash cURL theme={null}
  curl "https://app.airrating.io/api/news?origin=FCO&dest=LHR&api_key=YOUR_API_KEY"
  ```

  ```python Python theme={null}
  import httpx

  response = httpx.get(
      "https://app.airrating.io/api/news",
      params={"origin": "FCO", "dest": "LHR", "api_key": "YOUR_API_KEY"}
  )
  data = response.json()
  for item in data["news"]:
      print(f"[{item['impact'].upper()}] {item['title']}")
  ```
</CodeGroup>

```json Response theme={null}
{
  "origin": "FCO",
  "dest": "LHR",
  "news": [
    {
      "title": "Heathrow ATC staffing issues expected this weekend",
      "summary": "Air traffic control understaffing at Heathrow may cause ground delays of 30–60 minutes on Saturday.",
      "source": "AviationHerald",
      "url": "https://example.com/article",
      "published_at": "2026-04-08T14:30:00Z",
      "impact": "medium",
      "event_type": "atc",
      "severity": 0.55
    }
  ],
  "meta": {
    "count": 1,
    "cached": true,
    "fetched_at": "2026-04-09T08:00:00Z",
    "cache_ttl_hours": 6
  }
}
```

<Tip>
  You can include news inline in the `/api/score` response by passing `news=true`. This avoids a second API call when you need both score and news context together.
</Tip>
