> For clean Markdown of any page, append .md to the page URL.
> For a complete documentation index, see https://docs.westiq.ai/llms.txt.
> For AI client integration (Claude Code, Cursor, etc.), connect to the MCP server at https://docs.westiq.ai/_mcp/server.

# Theme

`GET /v1/theme` returns the display theme for your airline — colors, fonts,
shape tokens, and top-bar options a seatback client uses to render its UI in the
airline's brand. There is **one theme per airline**, resolved server-side from
your credential; you never pass a theme id.

It is [airline-scoped](/guides/sessions#endpoints-that-need-no-session): Bearer
token and the `westiq/search` scope, no `X-Session-Id`, no parameters.

```bash
curl "https://api.staging.westiq.ai/v1/theme" \
  -H "Authorization: Bearer $ACCESS_TOKEN"
```

## Response

`200` returns an `AirlineTheme`. The colors object is abbreviated below — it
carries the full Material-style token set:

```json
{
  "airlineId": "demo_airline",
  "airlineName": "Demo Airways",
  "logo": "https://cdn.example/demo/logo.svg",
  "watermarkChar": "✈",
  "colors": {
    "surface": "#0B0F14",
    "accent": "#1F6FEB",
    "onAccent": "#FFFFFF",
    "onSurface": "#E6EDF3",
    "error": "#F85149"
  },
  "fonts": { "heading": "Inter", "body": "Inter", "mono": "IBM Plex Mono" },
  "shape": { "radiusCard": "16px", "radiusBtn": "999px", "glassBlur": "20px" },
  "topBar": { "showFlightInfo": true, "showRouteMap": true }
}
```

| Field                      | Notes                                                                                             |
| -------------------------- | ------------------------------------------------------------------------------------------------- |
| `airlineId`, `airlineName` | Your tenant and its display name.                                                                 |
| `logo`                     | Logo asset URL.                                                                                   |
| `watermarkChar`            | A single character used as a background watermark.                                                |
| `colors`                   | The full palette token set (surface tiers, accent tiers, on-colors, button and state colors).     |
| `fonts`                    | `heading`, `body`, `mono` font families.                                                          |
| `shape`                    | Corner radii and glass/gradient tokens (`radiusCard`, `radiusBtn`, `radiusChip`, `glassBlur`, …). |
| `topBar`                   | Booleans: `showFlightInfo`, `showRouteMap`.                                                       |
| `suggestedRoutes`          | Optional; **omitted** when the airline configures none — null fields are never sent as `null`.    |

## Errors

Standard [error envelope](/guides/errors). The one to handle specifically:

| HTTP | Code              | Cause                                                                                                                                                |
| ---- | ----------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------- |
| 404  | `theme.not_found` | No theme is configured for your airline. **Fail-loud — never a default/fallback theme.** Treat it as "onboarding incomplete," not a transient error. |

`401` / `403` are the usual [auth failures](/guides/authentication#5-auth-failures-you-will-see).