# SignIQ Measure — partner integration guide

For Eclipse Digital Media, Embed Signage, Aura, AT&C, and any reseller integrating SignIQ Measure into their stack.

---

## 1. The integration shape

```
┌────────────────────────────────────────┐
│  Digital signage player (Windows /     │
│  Android / Tizen)                      │
│                                        │
│  ┌──────────────────┐  ┌────────────┐ │
│  │ Embed Signage    │◄►│ SignIQ     │ │
│  │ (your CMS)       │  │ Measure    │ │
│  │                  │  │            │ │
│  │ HTTP /v1/...     │──┤ camera     │ │
│  │ or WebSocket     │  │ pipeline   │ │
│  └──────────────────┘  └─────┬──────┘ │
│                              │        │
└──────────────────────────────┼────────┘
                               │
                               ▼ batched aggregates (60 s)
                    ┌──────────────────┐
                    │ SignIQ Cloud API │
                    │ api.signiq.cloud/v1 │
                    └────────┬─────────┘
                             │
                             ▼ REST + MCP
                  Reseller dashboard / customer
```

- **Two surfaces.** A local HTTP+WS server on `127.0.0.1:8765` is what Embed Signage calls for content switching. A separate cloud REST API is what reseller dashboards and AI agents read for analytics. They are different keys with different scopes.
- **Three platforms.** Windows + Android use the local API. Tizen exposes the same data shape via an in-process JS API instead of a localhost server.

## 2. Per-customer onboarding (your workflow)

For each end-customer of yours:

1. From your reseller account on `signiq.cloud`, open the **Partner Dashboard** at `/dashboard/partner`.
2. Click **Create Sub-Account** and enter the customer's name + URL slug.
3. Allocate N nodes from your pool to the sub-account (the *Adjust* button on each row).
4. Invite the customer's primary admin via **Settings → Team → Invite** under that sub-account.
5. From the sub-account dashboard, generate a cloud API key under **Settings → API Keys**. Pass to the customer if they want direct programmatic access.
6. Push the SignIQ Measure installer to each of the customer's players (see deployment docs below).
7. On first run, the player shows a 6-digit pairing code. The customer enters it at `signiq.cloud/pair`. The node activates and starts reporting.

## 3. Platform deployment guides

- **Windows**: [`docs/edge/windows-deployment.md`](../../../docs/edge/windows-deployment.md) — signed MSI, silent install (`msiexec /qn`), camera placement notes.
- **Android**: [`docs/edge/android-deployment.md`](../../../docs/edge/android-deployment.md) — signed APK, ADB sideload, foreground-service permission.
- **Tizen**: [`apps/measure-bundle/tizen/README.md`](../../../apps/measure-bundle/tizen/README.md) — signed `.wgt` widget, Samsung Knox dev programme cert, Tizen Studio CLI build.

## 4. CMS integration on the player

Embed Signage talks to SignIQ via:

```js
// 1. Detect SignIQ is running (unauthenticated)
const alive = await fetch('http://127.0.0.1:8765/v1/health')
  .then((r) => r.ok)
  .catch(() => false);

// 2. Poll current audience (or open a WebSocket for sub-second reaction)
const { attention_viewers } = await fetch(
  'http://127.0.0.1:8765/v1/audience/current?seconds=30',
  { headers: { Authorization: 'Bearer ' + LOCAL_TOKEN } },
).then((r) => r.json());

// 3. Switch content
if (attention_viewers >= 5) playPlaylist('busy-promo');
```

The bearer token is shown on the SignIQ Measure pairing screen and stored locally on the player. Embed Signage's installer should prompt for / store this once per device. See [`/integrations/embed-signage`](https://signiq.cloud/integrations/embed-signage) for the full endpoint reference.

## 5. Reading data outside the player

Two paths:

- **REST**: `api.signiq.cloud/v1` with a customer- or partner-issued API key. See the published SDK at [`@signiq/api-client`](https://www.npmjs.com/package/@signiq/api-client).
- **MCP**: `npx @signiq/mcp-server` for AI agents (Claude Desktop, Claude Code). See [`/api/mcp`](https://signiq.cloud/api/mcp).

Partner keys with `orgId=<sub-account-id>` query parameter can read across all sub-accounts — useful for white-label dashboards.

## 6. Billing for the launch period

Billing is via **manual invoice** for now. Your sub-accounts ship with `billing_mode = manual_invoice` automatically. We invoice your partner account directly each quarter at the wholesale rate × active node count. You bill your end-customers via your own channel — SignIQ does not charge them. Stripe self-serve checkout is in the codebase but UI-hidden; will be reopened when direct sales begin.

## 7. Support escalation

| | |
|---|---|
| Pre-sales / commercial | hello@signiq.cloud |
| Integration / engineering | support@signiq.cloud |
| Production incident | security@signiq.cloud · status.signiq.cloud |
| Account team (existing partners) | account contact you were assigned |

We answer same business day, EU business hours.
