---
title: REST API — App Config
menu_group: REST API
menu_order: 5
tab: App Config
tab_order: 5
summary: Public platform app configuration feed for Roku and future TV/mobile clients.
---

# REST API — App Config

Platform-specific **behavior, branding, layout, and feature visibility** for connected apps.

## Endpoint

```
GET /wp-json/mediablaster/v3/config?platform=roku
```

| Property | Value |
|----------|-------|
| Auth | None (public) |
| Method | GET |
| Query `platform` | Default `roku`; currently only `roku` is supported |

Discovery index includes `links.config` pointing to this URL.

## What this endpoint is (and is not)

**Is:**

- Remote source of truth for user-configurable app settings managed under **MediaBlaster → App Config**
- Branding colors, labels, navigation feature flags, home layout, boot behavior, and similar client settings

**Is not:**

- API discovery — the client must already know the WordPress base URL
- Subscription or Stripe configuration — use `GET /app/config` instead (requires subscriptions REST enabled)
- A place for secrets — never include API keys, tokens, or `apiBaseUrl` / `apiOrigin`

## Query parameters

| Param | Default | Description |
|-------|---------|-------------|
| `platform` | `roku` | Platform slug (`roku` only in v1) |

Invalid platform:

```json
{
  "code": "mediablaster_invalid_platform",
  "message": "Unsupported platform.",
  "data": { "status": 400 }
}
```

## Response overview (Roku)

Top-level fields include:

| Field | Description |
|-------|-------------|
| `platform` | `roku` |
| `schemaVersion` | Config schema version (e.g. `1.0`) |
| `appName` | Display name |
| `debugMode` | Diagnostic logging toggle |
| `enableSubscriptions` | App-level subscriptions UI toggle |
| `enableVod`, `enableMovies`, `enableSeries`, … | Content availability flags |
| `brandColor`, `accentOrange`, … | Branding colors (hex) |
| `heroFallbackImage`, `posterFallbackImage` | Roku asset paths |
| `supportUrl`, `privacyUrl` | Public legal/help links |
| `sidebarEnabled` | Sidebar visibility |
| `features` | Navigation destination flags (`home`, `movies`, `series`, …) |
| `labels` | Custom UI strings |
| `layout` | Home screen layout flags |
| `sidebar` | `expandedWidth`, `collapsedWidth` |
| `homeTagRows` | Tag row settings |
| `homeRows` | Always `[]` in v1 |
| `boot` | `requireDiscovery`, `loadFeaturedOnStart` |
| `meta.generatedAt` | ISO 8601 timestamp (UTC) |

Values merge saved WordPress options over plugin defaults. Unsaved installs still return sensible defaults.

## Admin configuration

Manage values at **MediaBlaster → App Config → App Settings**. See [App Config](app-config.md).

Option key: `mediablaster_app_config`

## Compare with `/app/config`

| Route | Purpose | Auth | Requires subscriptions |
|-------|---------|------|------------------------|
| `GET /config?platform=roku` | Platform app UI/behavior config | Public | No |
| `GET /app/config` | Stripe keys, tiers, auth flags | Public when REST on | Yes (+ REST enabled) |

## Verification

```powershell
wp eval "do_action('rest_api_init'); `$req = new WP_REST_Request('GET', '/mediablaster/v3/config'); `$req->set_param('platform','roku'); `$res = rest_get_server()->dispatch(`$req); echo `$res->get_status();" --path="c:\Users\rob\Local Sites\wp-smart-tv\app\public"
```

Or open `/wp-json/mediablaster/v3/config?platform=roku` in a browser.

## Related guides

- [App Config](app-config.md)
- [REST API Overview](rest-api-overview.md)
- [Subscriptions and Apps API](rest-api-subscriptions.md) — `/app/config`
