Skip to main content

Overview

A PlatformRequest is the canonical envelope that an AI platform sends to an AIP operator to initiate intent-based monetization. It is operator-agnostic: any conforming operator can process it. The schema is designed around five principles:
  1. Consent is first-class. Every request carries an explicit consent envelope. No consent, no processing.
  2. Classification has two modes. The platform either sends the interaction and the operator classifies it (operator-derived), or the platform sends pre-computed signals and the operator validates them (platform-derived).
  3. Policy is auditable. The operator produces a structured policy decision with thresholds, basis, and sensitivity — separate from classification and monetization.
  4. Monetization is not just auction. The monetization block supports auction as one mechanism, not the only one.
  5. Identity is quarantined by default. Platform-internal fields live in identity.quarantined and must never be forwarded downstream.

Top-Level Fields


Identifier Model

AIP uses one top-level identifier on PlatformRequest:
  • message_id: canonical conversation-turn identifier used for auction identity, replay, dedupe, and downstream traceability
If your SDK or UI layer uses messageId, treat it as a client alias that maps to canonical message_id at the API boundary.

platform


identity


Every request must carry an explicit consent envelope. The operator must not process a request where consent is denied or unknown without a policy basis for doing so. In AIP v1.0, raw query text and message history MUST NEVER be forwarded downstream to brand agents. Those are protocol prohibitions, not consent-controlled options.

classification_input

A PlatformRequest MUST include exactly one classification input form.
If classification_input.type is "interaction", the request is operator-derived. The platform provides the interaction data and the operator derives classification outputs from that interaction.If classification_input.type is "provided_signals", the request is platform-derived. The platform provides structured classification signals and the operator validates, normalizes, and governs those signals before using them for policy or monetization decisions.Platform-derived signals MUST NOT be treated as trusted by default. The operator remains the authoritative decision-maker for validation, policy, monetization eligibility, and downstream participation.

Mode 1: Operator-Derived (type: "interaction")

Use this mode when the platform sends the interaction data and the operator performs classification. The platform provides the user interaction, surface metadata, consent, and identity envelope. The operator then classifies intent, maps taxonomy, evaluates policy, determines monetization eligibility, and optionally runs monetization logic. When to use:
  • The platform does not run its own intent classifier
  • The platform wants the operator to be the source of truth for classification
  • The platform wants simpler integration
  • The operator needs consistent classification across all platforms
Meaning: “Here is what happened. You classify it.”

classification_input.interaction

interaction.session

interaction.surface

interaction.input

interaction.input.messages[]

Operator-derived example


Mode 2: Platform-Derived (type: "provided_signals")

Use this mode when the platform has already generated structured intent signals and sends those signals to the operator. The platform provides structured intent output, signal provenance, optional taxonomy and inferred context. The operator then validates the provided signals, normalizes scores if needed, applies trust rules, evaluates policy, and determines monetization eligibility. The operator MUST NOT assume that platform-provided signals are trusted by default. When to use:
  • The platform runs its own classifier
  • The platform runs a certified shared classifier locally
  • The platform wants lower latency or less raw interaction sharing
  • The operator supports signal validation for upstream classification
Meaning: “Here is our classification. Validate and act on it if acceptable.”

classification_input.signals

signals.source

signals.intent

signals.iab_content

signals.context

Platform-derived example


Normative Difference Between Modes


policy_hints

Non-binding hints from the platform. The operator may use or ignore them.

signal_validation

Present only when classification_input.type is "provided_signals". Contains the operator’s validation and normalization metadata for platform-derived signals. The operator MAY reject platform-derived signals if:
  • Provenance is missing
  • Trust tier is insufficient
  • Calibration is unknown
  • Signals fail validation
  • The request falls into a restricted policy class

policy

Auditable policy decision produced after consent, classification, validation, and operator rules are applied. decision_basis values: interaction_classification · provided_signal · normalized_signal · score_threshold · policy_override · regulated_vertical_control · manual_override · consent_denied · consent_unknown · fallback

policy.opportunity


monetization

Monetization configuration and runtime controls. Auction is one monetization mechanism, not the only one.

Processing Expectations

For operator-derived requests

The operator SHOULD:
  • Derive intent from the interaction
  • Produce classification outputs internally
  • Use those outputs as the basis for policy and monetization decisions

For platform-derived requests

The operator SHOULD:
  • Inspect signal provenance
  • Validate or normalize the provided signals
  • Apply trust-tier logic
  • Use validated or normalized signals as the basis for policy and monetization decisions

Full Example: Operator-Derived


Full Example: Platform-Derived


Validation Rules

  • spec_version must be "1.0".
  • message_id must be a non-empty string.
  • timestamp must be RFC 3339.
  • platform.role must be "platform".
  • consent must contain status, scope, and constraints.
  • classification_input must contain exactly one of interaction or signals based on type.
  • When type is "interaction", interaction.input.query_text and interaction.surface are required.
  • When type is "provided_signals", signals.source and signals.intent are required.
  • signals.intent must contain type and decision_phase.
  • identity.quarantined must never be forwarded downstream.
  • consent.constraints.allow_identity_downstream must be respected when forwarding identity-related data.
  • Raw query text and message history must never be forwarded downstream to brand agents in v1.0.

Schema File

JSON Schema (Draft 2020-12): platform-request.json