> ## Documentation Index
> Fetch the complete documentation index at: https://docs.apostra.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Evaluate a pending creative review

> Run an advisory AI evaluation against one immutable buyer-submitted review version. Use the `reviewRef` returned by the queue. A bare value always selects the legacy AdCP creative-id namespace, including when numeric; `creative:<id>` is the explicit equivalent. The evaluator uses explicit storefront acceptance policy text, answers operator questions, and recommends approve, manual review, or reject. Generic storefront operating instructions are not used as policy input. This endpoint never records the decision.



## OpenAPI

````yaml /v2/storefront-api-v2.yaml post /creative-reviews/{creativeId}/evaluate
openapi: 3.0.0
info:
  title: Scope3 Storefront API
  version: 2.0.0
  description: >-
    REST API for partners to manage Seller Accounts, inventory sources, and
    billing.


    ## Authentication


    All endpoints require a Bearer token in the Authorization header:

    ```

    Authorization: Bearer your-api-key

    ```


    ## Base URL


    `https://api.interchange.io/api/v2/storefront`


    ## For AI Agents


    AI agents can use the MCP endpoint at `/mcp/v2/storefront` with three tools:

    - `initialize`: Start an MCP session

    - `api_call`: Make REST API calls

    - `ask_about_capability`: Learn about API features
servers:
  - url: https://api.interchange.io/api/v2/storefront
    description: Production server
security: []
tags:
  - name: Account
    description: Account management, service tokens, and preferences
  - name: Asks
    description: >-
      What you are waiting on Scope3 for — support, product, and supply asks in
      one list
  - name: Storefront
    description: Manage storefront and inventory sources
  - name: Storefront Agents
    description: List and manage registered sales, signals, and outcomes agents
  - name: Storefront Activity
    description: Audit log of configuration and inventory changes on the storefront
  - name: Storefront Billing
    description: Payout bank details and billing configuration for Seller Accounts
  - name: AI Usage
    description: Seller Account AI token usage visibility by model
  - name: MCP
    description: Model Context Protocol endpoints
paths:
  /creative-reviews/{creativeId}/evaluate:
    post:
      tags:
        - Storefront
      summary: Evaluate a pending creative review
      description: >-
        Run an advisory AI evaluation against one immutable buyer-submitted
        review version. Use the `reviewRef` returned by the queue. A bare value
        always selects the legacy AdCP creative-id namespace, including when
        numeric; `creative:<id>` is the explicit equivalent. The evaluator uses
        explicit storefront acceptance policy text, answers operator questions,
        and recommends approve, manual review, or reject. Generic storefront
        operating instructions are not used as policy input. This endpoint never
        records the decision.
      operationId: evaluateCreativeReview
      parameters:
        - in: path
          name: creativeId
          schema:
            type: string
            minLength: 1
            description: >-
              Creative review identifier. Use the `reviewRef` value returned by
              the queue to select one immutable review. A bare value always
              selects the AdCP creative-id namespace, including when numeric;
              `creative:<id>` is the explicit equivalent.
            example: review:42
          required: true
          description: >-
            Creative review identifier. Use the `reviewRef` value returned by
            the queue to select one immutable review. A bare value always
            selects the AdCP creative-id namespace, including when numeric;
            `creative:<id>` is the explicit equivalent.
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/EvaluateCreativeReviewBody'
      responses:
        '200':
          description: Evaluate a pending creative review
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CreativeReviewEvaluationResponse'
        '400':
          description: Bad request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '409':
          description: >-
            The creative id matches multiple buyer or content versions; retry
            with the intended `reviewRef`.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '500':
          description: Internal server error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
      security:
        - bearerAuth: []
components:
  schemas:
    EvaluateCreativeReviewBody:
      type: object
      properties:
        acceptance_policy_text:
          description: >-
            Optional storefront acceptance policy text for evaluating whether a
            buyer-submitted creative can be approved. This may include
            advertiser/category rules, creative asset rules, and manual-review
            workflow requirements.
          type: string
          minLength: 1
          maxLength: 50000
        expected_brand:
          description: >-
            Optional brand the creative is expected to represent. If omitted,
            the evaluator tries to infer brand evidence from the submitted
            creative payload.
          type: string
          minLength: 1
          maxLength: 200
        questions:
          description: >-
            Optional specific questions for the evaluator to answer about the
            creative.
          maxItems: 8
          type: array
          items:
            type: string
            minLength: 1
            maxLength: 300
      description: >-
        Request body for advisory AI evaluation of a pending storefront creative
        review.
    CreativeReviewEvaluationResponse:
      type: object
      properties:
        creativeId:
          type: string
          description: AdCP creative id that was evaluated.
          example: cr_abc123
        evaluatorId:
          type: string
          description: >-
            Stable evaluator implementation id. Provider-backed evaluators
            expose the provider here.
        evaluatorVersion:
          type: string
          description: Evaluator implementation version.
        status:
          type: string
          enum:
            - pass
            - warn
            - fail
          description: >-
            Aggregate advisory status from the evaluator. `fail` means one or
            more checks recommend rejection.
        recommendation:
          type: string
          enum:
            - approve
            - manual_review
            - reject
          description: Advisory operator action. This endpoint never records the decision.
        policyDecision:
          description: >-
            Policy confidence for automated creative approval. The safe default
            is `needs_human_approval` unless the evaluator has enough evidence
            to decide the creative is definitely on or off policy.
          allOf:
            - $ref: '#/components/schemas/StorefrontApprovalPolicyDecision'
        summary:
          type: string
          description: Short evaluator summary.
        checks:
          type: array
          items:
            type: object
            properties:
              evaluator_id:
                type: string
                minLength: 1
              evaluator_version:
                type: string
                minLength: 1
              category:
                type: string
                enum:
                  - readiness
                  - asset
                  - brand_brief
                  - format_seller
                  - policy_safety
                  - performance
              code:
                type: string
              label:
                type: string
              stage:
                type: string
                enum:
                  - generation
                  - selection
                  - refinement
                  - finalization
                  - adaptation
                  - approval
                  - live_learning
                  - draft
                  - final
              status:
                type: string
                enum:
                  - pass
                  - warn
                  - fail
              detail:
                type: string
              severity:
                type: string
                enum:
                  - hard
                  - soft
              blocking:
                type: boolean
              confidence:
                type: number
                minimum: 0
                maximum: 1
              evidence_refs:
                type: array
                items:
                  type: string
                  minLength: 1
              remediation:
                type: string
                maxLength: 1000
            required:
              - label
              - status
              - detail
            additionalProperties: false
          description: >-
            Individual policy, brand, readiness, and visual checks supporting
            the recommendation.
        answers:
          type: array
          items:
            $ref: '#/components/schemas/CreativeReviewEvaluationAnswer'
          description: Answers to any requested evaluator questions.
      required:
        - creativeId
        - evaluatorId
        - evaluatorVersion
        - status
        - recommendation
        - policyDecision
        - summary
        - checks
        - answers
      additionalProperties: false
      description: >-
        Advisory AI evaluation for a storefront creative review row. Evaluation
        does not approve or reject the creative.
    ErrorResponse:
      type: object
      properties:
        data:
          type: string
          nullable: true
          enum:
            - null
        error:
          $ref: '#/components/schemas/ApiError'
      required:
        - data
        - error
      additionalProperties: false
      description: Standard error response
    StorefrontApprovalPolicyDecision:
      type: string
      enum:
        - definitely_on_policy
        - definitely_not_on_policy
        - needs_human_approval
      description: >-
        Policy confidence for storefront approval automation.
        `definitely_on_policy` is eligible for automatic approval,
        `definitely_not_on_policy` is a clear policy conflict, and
        `needs_human_approval` is the safe default for ambiguous or incomplete
        evidence.
    CreativeReviewEvaluationAnswer:
      type: object
      properties:
        question:
          type: string
          minLength: 1
          description: Question the evaluator answered.
        answer:
          type: string
          minLength: 1
          description: Short evaluator answer grounded in the submitted creative.
        confidence:
          description: Evaluator confidence in the answer, from 0 to 1.
          type: number
          minimum: 0
          maximum: 1
      required:
        - question
        - answer
      additionalProperties: false
      description: Answer to an operator-supplied creative review question.
    ApiError:
      type: object
      properties:
        code:
          type: string
          description: Machine-readable error code
        message:
          type: string
          description: Human-readable error message
        field:
          description: Field path associated with the error
          type: string
        details:
          description: Additional error context
          type: object
          additionalProperties: {}
      required:
        - code
        - message
      additionalProperties: false
      description: Structured error object
  securitySchemes:
    bearerAuth:
      type: http
      scheme: bearer
      description: API key or access token

````