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

# Get the canonical seller decision record for an intelligence run

> Fetch the seller-readable chronology for one intelligence run, including the recorded buyer ask, fit decision, selling posture, response state, approval, commercial outcome, learning eligibility, and provenance. Historical facts that were not persisted are marked unavailable rather than inferred.



## OpenAPI

````yaml /v2/storefront-api-v2.yaml get /intelligence-runs/{id}/decision-record
openapi: 3.0.0
info:
  title: Scope3 Storefront API
  version: 2.0.0
  description: |-
    REST API for partners to manage storefronts, 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: 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 storefronts
  - name: AI Usage
    description: Storefront AI token usage visibility by model
  - name: MCP
    description: Model Context Protocol endpoints
paths:
  /intelligence-runs/{id}/decision-record:
    get:
      tags:
        - Storefront
      summary: Get the canonical seller decision record for an intelligence run
      description: >-
        Fetch the seller-readable chronology for one intelligence run, including
        the recorded buyer ask, fit decision, selling posture, response state,
        approval, commercial outcome, learning eligibility, and provenance.
        Historical facts that were not persisted are marked unavailable rather
        than inferred.
      operationId: getSellerDecisionRecord
      parameters:
        - in: path
          name: id
          schema:
            description: Surrogate id of the intelligence-run row.
            example: 42
            type: integer
            maximum: 9007199254740991
            minimum: 1
          required: true
          description: Surrogate id of the intelligence-run row.
      responses:
        '200':
          description: Get the canonical seller decision record for an intelligence run
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SellerDecisionRecord'
        '400':
          description: Bad request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '401':
          description: Unauthorized
          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:
    SellerDecisionRecord:
      description: >-
        Canonical seller-readable decision record projected from one storefront
        intelligence run and its attributed approval/commercial evidence.
      type: object
      properties:
        id:
          type: string
        status:
          type: string
          enum:
            - pending
            - responded
            - declined
            - failed
            - booked
            - delivered
            - rejected
            - unattributed
        createdAt:
          type: string
          format: date-time
          pattern: >-
            ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d(?::[0-5]\d(?:\.\d+)?)?(?:Z))$
        purpose:
          type: object
          properties:
            availability:
              type: string
              enum:
                - recorded
                - unavailable
            value:
              nullable: true
              type: string
              enum:
                - live
                - setup_test
                - simulation
                - probe
                - evaluation
          required:
            - availability
            - value
          additionalProperties: false
        buyer:
          type: object
          properties:
            operatorDomain:
              nullable: true
              type: string
            brandDomain:
              nullable: true
              type: string
            country:
              nullable: true
              type: string
            customerId:
              nullable: true
              type: integer
              minimum: -9007199254740991
              maximum: 9007199254740991
          required:
            - operatorDomain
            - brandDomain
            - country
            - customerId
          additionalProperties: false
        ask:
          type: object
          properties:
            brief:
              nullable: true
              type: string
            buyingMode:
              type: string
            requestAsks:
              type: array
              items:
                type: string
            inputSnapshotAvailability:
              type: string
              enum:
                - recorded
                - unavailable
          required:
            - brief
            - buyingMode
            - requestAsks
            - inputSnapshotAvailability
          additionalProperties: false
        fit:
          type: object
          properties:
            disposition:
              nullable: true
              type: string
              enum:
                - responded
                - declined_fit
                - declined_policy
                - not_live
            qualified:
              nullable: true
              type: boolean
            reasonAxis:
              nullable: true
              type: string
              enum:
                - fit
                - policy
            reason:
              nullable: true
              type: string
            matchedProducts:
              type: array
              items:
                $ref: '#/components/schemas/IntelligenceRunProductExplanation'
            unavailableProducts:
              type: array
              items:
                $ref: '#/components/schemas/IntelligenceRunUnpricedProductExplanation'
          required:
            - disposition
            - qualified
            - reasonAxis
            - reason
            - matchedProducts
            - unavailableProducts
          additionalProperties: false
        posture:
          type: object
          properties:
            recommended:
              nullable: true
              type: string
              enum:
                - direct_fit
                - hold_value
                - value_preserving_compromise
                - tradeoff_ladder
                - price_first
                - wholesale_mirror
            selected:
              nullable: true
              type: string
              enum:
                - direct_fit
                - hold_value
                - value_preserving_compromise
                - tradeoff_ladder
                - price_first
                - wholesale_mirror
            rationale:
              nullable: true
              type: string
            intensity:
              nullable: true
              type: string
              enum:
                - low
                - medium
                - high
            signals:
              type: array
              items:
                type: string
            guidance:
              type: array
              items:
                type: string
            matchedPricingFactIds:
              type: array
              items:
                type: string
            operatingInstructionsVersion:
              type: integer
              minimum: -9007199254740991
              maximum: 9007199254740991
            matchedBuyerInstructionIds:
              type: array
              items:
                type: string
            override:
              type: object
              properties:
                availability:
                  type: string
                  enum:
                    - recorded
                    - unavailable
                actor:
                  nullable: true
                  type: string
              required:
                - availability
                - actor
              additionalProperties: false
            acceptancePolicyVersion:
              type: object
              properties:
                availability:
                  type: string
                  enum:
                    - recorded
                    - unavailable
                value:
                  nullable: true
                  type: integer
                  minimum: -9007199254740991
                  maximum: 9007199254740991
              required:
                - availability
                - value
              additionalProperties: false
          required:
            - recommended
            - selected
            - rationale
            - intensity
            - signals
            - guidance
            - matchedPricingFactIds
            - operatingInstructionsVersion
            - matchedBuyerInstructionIds
            - override
            - acceptancePolicyVersion
          additionalProperties: false
        response:
          type: object
          properties:
            status:
              type: string
              enum:
                - responded
                - withheld
                - failed
                - unavailable
            summary:
              type: string
            exactSentState:
              type: object
              properties:
                availability:
                  type: string
                  enum:
                    - recorded
                    - unavailable
                productCount:
                  nullable: true
                  type: integer
                  minimum: 0
                  maximum: 9007199254740991
                proposalHistoryAvailability:
                  type: string
                  enum:
                    - recorded
                    - unavailable
              required:
                - availability
                - productCount
                - proposalHistoryAvailability
              additionalProperties: false
            negotiationChanges:
              type: object
              properties:
                requestAsks:
                  type: array
                  items:
                    type: string
                refinementApplied:
                  nullable: true
              required:
                - requestAsks
                - refinementApplied
              additionalProperties: false
          required:
            - status
            - summary
            - exactSentState
            - negotiationChanges
          additionalProperties: false
        approval:
          type: object
          properties:
            availability:
              type: string
              enum:
                - recorded
                - unavailable
            id:
              nullable: true
              type: string
            status:
              nullable: true
              type: string
              enum:
                - pending
                - approved
                - rejected
                - revoked
            reviewedBy:
              nullable: true
              type: string
            reviewedAt:
              nullable: true
              type: string
              format: date-time
              pattern: >-
                ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d(?::[0-5]\d(?:\.\d+)?)?(?:Z))$
            reviewerNotes:
              nullable: true
              type: string
            forwardedAt:
              nullable: true
              type: string
              format: date-time
              pattern: >-
                ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d(?::[0-5]\d(?:\.\d+)?)?(?:Z))$
          required:
            - availability
            - id
            - status
            - reviewedBy
            - reviewedAt
            - reviewerNotes
            - forwardedAt
          additionalProperties: false
        outcome:
          type: object
          properties:
            state:
              type: string
              enum:
                - pending
                - booked
                - delivered
                - rejected
                - failed
                - unattributed
                - unavailable
            eventType:
              nullable: true
              type: string
            eventAt:
              nullable: true
              type: string
              format: date-time
              pattern: >-
                ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d(?::[0-5]\d(?:\.\d+)?)?(?:Z))$
            mediaBuyId:
              nullable: true
              type: string
            mediaBuyStatus:
              nullable: true
              type: string
            pendingApprovalId:
              nullable: true
              type: string
            bookedBudget:
              nullable: true
              type: number
            deliveredImpressions:
              nullable: true
              type: number
            deliveredSpend:
              nullable: true
              type: number
            deliveredCurrency:
              nullable: true
              type: string
            attribution:
              type: object
              properties:
                availability:
                  type: string
                  enum:
                    - recorded
                    - unavailable
                model:
                  nullable: true
                  type: string
                matchedRunId:
                  nullable: true
                  type: string
                matchedProductIds:
                  type: array
                  items:
                    type: string
              required:
                - availability
                - model
                - matchedRunId
                - matchedProductIds
              additionalProperties: false
          required:
            - state
            - eventType
            - eventAt
            - mediaBuyId
            - mediaBuyStatus
            - pendingApprovalId
            - bookedBudget
            - deliveredImpressions
            - deliveredSpend
            - deliveredCurrency
            - attribution
          additionalProperties: false
        learning:
          type: object
          properties:
            analyticsEligibility:
              type: object
              properties:
                status:
                  type: string
                  enum:
                    - eligible
                    - ineligible
                    - unavailable
                reason:
                  type: string
              required:
                - status
                - reason
              additionalProperties: false
            postureContribution:
              type: object
              properties:
                availability:
                  type: string
                  enum:
                    - recorded
                    - unavailable
                selected:
                  nullable: true
                  type: string
                  enum:
                    - direct_fit
                    - hold_value
                    - value_preserving_compromise
                    - tradeoff_ladder
                    - price_first
                    - wholesale_mirror
                recommended:
                  nullable: true
                  type: string
                  enum:
                    - direct_fit
                    - hold_value
                    - value_preserving_compromise
                    - tradeoff_ladder
                    - price_first
                    - wholesale_mirror
              required:
                - availability
                - selected
                - recommended
              additionalProperties: false
            recommendationLineage:
              type: object
              properties:
                availability:
                  type: string
                  enum:
                    - recorded
                    - unavailable
              required:
                - availability
              additionalProperties: false
          required:
            - analyticsEligibility
            - postureContribution
            - recommendationLineage
          additionalProperties: false
        provenance:
          type: object
          properties:
            modelProvider:
              nullable: true
              type: string
            modelName:
              type: string
            operatingInstructionsVersion:
              type: integer
              minimum: -9007199254740991
              maximum: 9007199254740991
            durationMs:
              nullable: true
              type: integer
              minimum: -9007199254740991
              maximum: 9007199254740991
          required:
            - modelProvider
            - modelName
            - operatingInstructionsVersion
            - durationMs
          additionalProperties: false
      required:
        - id
        - status
        - createdAt
        - purpose
        - buyer
        - ask
        - fit
        - posture
        - response
        - approval
        - outcome
        - learning
        - provenance
      additionalProperties: false
    ErrorResponse:
      description: Standard error response
      type: object
      properties:
        data:
          type: string
          nullable: true
          enum:
            - null
        error:
          $ref: '#/components/schemas/ApiError'
      required:
        - data
        - error
      additionalProperties: false
    IntelligenceRunProductExplanation:
      description: >-
        Buyer-safe explanation of one product selected for the storefront
        response.
      type: object
      properties:
        productId:
          nullable: true
          type: string
        name:
          nullable: true
          type: string
        description:
          nullable: true
          type: string
        reasoning:
          nullable: true
          type: string
        pricing:
          nullable: true
          allOf:
            - $ref: '#/components/schemas/IntelligenceRunProductPricingExplanation'
        bundleIds:
          type: array
          items:
            type: string
        signalIds:
          type: array
          items:
            type: string
        formatIds:
          type: array
          items:
            $ref: '#/components/schemas/IntelligenceRunProductFormatExplanation'
      required:
        - productId
        - name
        - description
        - reasoning
        - pricing
        - bundleIds
        - signalIds
        - formatIds
      additionalProperties: false
    IntelligenceRunUnpricedProductExplanation:
      description: >-
        Composition the model considered but the platform omitted because it
        could not be priced authoritatively.
      type: object
      properties:
        name:
          nullable: true
          type: string
        reasoning:
          nullable: true
          type: string
        reason:
          type: string
        bundleIds:
          type: array
          items:
            type: string
        signalIds:
          type: array
          items:
            type: string
      required:
        - name
        - reasoning
        - reason
        - bundleIds
        - signalIds
      additionalProperties: false
    ApiError:
      description: Structured error object
      type: object
      properties:
        code:
          description: Machine-readable error code
          type: string
        message:
          description: Human-readable error message
          type: string
        field:
          description: Field path associated with the error
          type: string
        details:
          description: Additional error context
          type: object
          additionalProperties: {}
      required:
        - code
        - message
      additionalProperties: false
    IntelligenceRunProductPricingExplanation:
      description: Server-computed CPM pricing summary for a selected composition.
      type: object
      properties:
        baseCpm:
          nullable: true
          type: number
        currency:
          nullable: true
          type: string
        operatorDiscount:
          nullable: true
          type: number
        finalCpm:
          nullable: true
          type: number
      required:
        - baseCpm
        - currency
        - operatorDiscount
        - finalCpm
      additionalProperties: false
    IntelligenceRunProductFormatExplanation:
      description: Creative format selected for an explained product.
      type: object
      properties:
        agentUrl:
          nullable: true
          type: string
        id:
          nullable: true
          type: string
      required:
        - agentUrl
        - id
      additionalProperties: false
  securitySchemes:
    bearerAuth:
      type: http
      scheme: bearer
      description: API key or access token

````