Facts reviewed: 2026-10-21

There are two ways to connect an AI workflow:

- **Your own model:** call the [stats or events APIs](/docs/api/analytics/) from a trusted tool executor with the appropriate read scope, then provide only the necessary results to your model.
- **Owleye Analytics's analyst:** call the prompt endpoint with an `ai:prompt` developer key. This uses the configured Owleye Analytics AI service and the organization's shared prompt allowance.

There is no separate LLM key type or hosted MCP server documented by this service. Developer keys provide the supported scoped access.

## Ask the analyst

```sh
curl --fail-with-body \
  'https://api.owleye.dev/v1/developer/sites/owl_your_tracking_id/prompt' \
  --header "Authorization: Bearer $OWLEYE_DEVELOPER_KEY" \
  --header 'Content-Type: application/json' \
  --data '{"prompt":"Show daily page views from India in the last seven days"}'
```

Requires Business or Custom, `ai:prompt`, developer access, enabled app/member AI access, and available organization credits. The prompt is bounded to 16 KiB of UTF-8 text. Reports cover one app and a range of up to 366 days when data is retained. Supported analysis includes traffic, locations, events, primitive properties, campaigns, and ordered conversions; see the [analyst guide](/docs/ai/).

The response provides an answer and aggregate supporting evidence. A completed answer uses one credit; failed requests and clarifications consume none. Developer requests do not save prompts or answers as chat history. Input flagged for a security block can be retained separately as encrypted evidence with a 90-day expiry; see [AI security checks](/docs/ai/#security-checks). The configured AI provider receives the question and bounded context; review the [AI data flow](/docs/ai/#access-privacy-and-supporting-data).

## Request IDs and clarification

Supply an optional UUID `request_id` generated for the logical request to prevent duplicate execution. A repeat returns 409; it does not replay a cached answer. Do not automatically generate a new ID and resubmit an uncertain request, which could spend another credit.

The public request accepts `prompt` and `request_id`; it does not accept the console's conversation history. If the response asks for clarification, submit a new, self-contained question including the original dates and the resolved event or location.

## Keep keys outside model context

Store the key in your server-side tool executor. Bind the tool to an approved app, expose only required parameters, and enforce your own user authorization before calling Owleye Analytics. Never let a prompt choose an arbitrary destination URL carrying the authorization header. Treat returned event names and user-authored strings as data, not instructions.

For documentation context without account access, use [llms.txt](/llms.txt) and [Markdown documentation](/docs/llms/). These public files do not expose your analytics.

## Choose an answer model

Reviewed October 21, 2026 against the private API implementation and OpenRouter model metadata. AI mode offers Auto, Claude Haiku 5.5, GLM 5.3, Grok 4.7, and GPT 6.1 Sol. The authenticated analytics prompt API and Growth review also accept an optional `model` field:

```json
{
  "prompt": "Compare page views this week with the previous week",
  "model": "openai/gpt-6.1-sol"
}
```

Allowed values are `auto`, `anthropic/claude-haiku-5.5`, `z-ai/glm-5.3`, `x-ai/grok-4.7`, and `openai/gpt-6.1-sol`. Omit the field to use the configured server default (Claude Haiku 5.5). Unknown models are rejected before provider calls or allowance reservation. A manual choice remains fixed for planning and answer selection; a provider failure does not silently select another answer model. Responses and saved replies include `model.requested`, `model.selected`, and `model.routing`.

Auto sends a redacted, bounded question and a context-complexity flag to Jev 1.14's Decisions API. Jev selects Haiku for simple questions or GPT for complex ones. Invalid, uncertain, or unavailable routing falls back to GLM 5.3. Jev does not receive analytics facts, the event catalog, or conversation history and cannot authorize queries. Jev is billed for input; it is not a free answer model. Public competitor research uses Haiku separately and receives only the supplied competitor names and category.

All inference requests require zero-retention, no-data-collection routing and bounded provider prices. If no eligible endpoint is available, privacy requirements stay in place. Availability depends on the deployed OpenRouter account and provider status. One completed request still uses one prompt; a completed Growth evidence fallback also uses one prompt. Clarifications and failed analytics requests use none.

The broader planning examples and deterministic evaluation corpus cover traffic, comparisons, conversions, performance, visibility, ambiguity and unsupported requests. These are prompt examples and regression checks, not fine-tuning or proof of live model accuracy.

For Growth review, send the same `model` value alongside its `question` and required UUID `request_id` fields. Its response also identifies the separate `research_model` when public research was requested. Existing `OWLEYE_AI_MODEL=z-ai/glm-5.2` deployments upgrade that default to GLM 5.3; new example environments default to Haiku.

Model and routing references: [OpenRouter model catalog](https://openrouter.ai/models), [Jev Decisions API](https://openrouter.ai/docs/api/api-reference/alphadecisions/submit-a-decisions-request), and [zero-retention routing](https://openrouter.ai/docs/guides/features/zdr).