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

# Sense batch

> Sense multiple interactions against the same target in a single request.

For large batches (50+ items), the request returns `202 Accepted` with a job ID for async tracking.



## OpenAPI

````yaml /openapi/client_v1_0.json post /api/v1/sense/batch
openapi: 3.1.0
info:
  title: Blankstate IBF API
  version: 0.2.0
  description: >-
    ## Universal Interaction Sensing


    Measure any interaction against configurable **Protocols**, **Metrics**, and
    **Blueprints**.


    ### Core Concepts


    | Concept | Description |

    |---------|-------------|

    | **Protocol** | A sensor that detects specific interaction patterns
    (metamarkers) |

    | **Metric** | Weighted aggregation of protocol scores |

    | **Blueprint** | A complete sensing configuration, multiple protocols +
    metrics |

    | **ICS** | Interaction Computed Signal, outcome-based billing (1 ICS = 1
    triggered metamarker) |

    | **Fidelity** | Information sufficiency, does the input contain enough
    signal for reliable measurement? |


    ### Sensing Profiles


    Every sensing request accepts an optional `profile` parameter. The default
    is `raw`.


    | Profile | Description |

    |---------|-------------|

    | `raw` | *(default)* Raw sensor output. The sensor measures exactly what
    the protocol defines. Nothing added, nothing filtered. |

    | `detailed` | Same measurement + deep evidence chains with segment-level
    attribution and full reconstruction provenance. |

    | `discovery` | Same measurement + weak signal indicators. Near-threshold
    activations are reported separately so you can explore what the sensor
    _almost_ detected. |


    All profiles are **deterministic**: same profile + same input + same
    protocol = same output, always.


    ### SGM Version


    The API currently runs against SGM **0.2** in production. The API URL stays
    `/api/v1/` across model iterations. Existing Protocols continue to run
    against the same URL as the underlying model advances; version pinning lives
    on the Protocol itself.


    ### Base URL


    ```

    https://ibf.blankstate.ai

    ```


    ### Authentication


    ```

    Authorization: Bearer YOUR_API_TOKEN

    ```


    Obtain tokens from the [Atlas
    Dashboard](https://atlas.blankstate.ai/api-dashboard/tokens).


    ### Response Headers


    Every sensing response includes:


    | Header | Description |

    |--------|-------------|

    | `X-ICS-Consumed` | ICS consumed by this request |

    | `X-ICS-Remaining` | Remaining ICS quota for current period |

    | `X-RateLimit-Limit` | Maximum requests per window |

    | `X-RateLimit-Remaining` | Remaining requests in current window |

    | `X-RateLimit-Reset` | Unix timestamp when the rate limit resets |
  contact:
    name: Blankstate AI
    url: https://blankstate.ai
    email: contact@blankstate.ai
servers:
  - url: https://ibf.blankstate.ai
    description: Production
security:
  - BearerAuth: []
tags:
  - name: Health
    description: Service status and token verification
  - name: Sense
    description: >-
      Core measurement, sense interactions against protocols, metrics, or
      blueprints
  - name: Fidelity
    description: Pre-check information sufficiency before sensing (zero ICS cost)
  - name: Protocols
    description: Protocol sensors, browse and inspect detection configurations
  - name: Metrics
    description: Weighted aggregations of protocol scores
  - name: Blueprints
    description: Complete sensing configurations, protocols + metrics composed together
  - name: Usage
    description: ICS consumption, quotas, and cost estimation
  - name: Jobs
    description: Asynchronous job tracking for large file and batch processing
  - name: Capabilities
    description: Machine-readable API capability descriptions for tooling integration
paths:
  /api/v1/sense/batch:
    post:
      tags:
        - Sense
      summary: Sense batch
      description: >-
        Sense multiple interactions against the same target in a single request.


        For large batches (50+ items), the request returns `202 Accepted` with a
        job ID for async tracking.
      operationId: senseBatch
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/SenseBatchRequest'
            examples:
              basic:
                summary: Batch sensing
                value:
                  target:
                    type: protocol
                    id: customer-service-quality
                  interactions:
                    - id: call-001
                      content: Thank you for calling, how can I help?
                    - id: call-002
                      content: Your complaint has been noted. Goodbye.
                    - id: call-003
                      content: >-
                        I completely understand your frustration. Let me
                        escalate this and make sure we resolve it today.
              with_callback:
                summary: Large batch with webhook
                value:
                  target:
                    type: protocol
                    id: disclosure-compliance
                  interactions:
                    - id: doc-001
                      content: ...
                    - id: doc-002
                      content: ...
                  callback:
                    url: https://yourapp.example.com/webhooks/batch-complete
                    events:
                      - complete
                      - error
      responses:
        '200':
          description: Batch complete (synchronous for small batches)
          content:
            application/json:
              example:
                results:
                  - id: call-001
                    score: 0.82
                    metamarkers: 2
                    fidelity: 0.74
                  - id: call-002
                    score: 0.31
                    metamarkers: 1
                    fidelity: 0.68
                  - id: call-003
                    score: 0.94
                    metamarkers: 3
                    fidelity: 0.86
                summary:
                  total: 3
                  average_score: 0.69
                  total_metamarkers: 6
                ics:
                  total_consumed: 6
                  total_cost_usd: 0.018
        '202':
          description: Accepted, large batch processing asynchronously
          content:
            application/json:
              example:
                job_id: job_batch_4e9f1a
                status: processing
                items_queued: 150
                estimated_seconds: 120
                poll_url: /api/v1/jobs/job_batch_4e9f1a
        '400':
          $ref: '#/components/responses/BadRequest'
          description: Invalid request format or missing required fields
        '401':
          $ref: '#/components/responses/Unauthorized'
          description: Invalid or missing authentication token
        '402':
          $ref: '#/components/responses/QuotaExhausted'
          description: ICS quota exhausted for current period
components:
  schemas:
    SenseBatchRequest:
      type: object
      required:
        - target
        - interactions
      properties:
        target:
          type: object
          required:
            - type
            - id
          properties:
            type:
              type: string
              enum:
                - protocol
                - metric
            id:
              type: string
            version:
              type: string
        interactions:
          type: array
          description: List of interactions to sense (max 500 per batch)
          maxItems: 500
          items:
            type: object
            required:
              - id
              - content
            properties:
              id:
                type: string
                description: Your identifier for this interaction
              content:
                type: string
                description: >-
                  Interaction content, the sensor determines the modality
                  automatically
        options:
          type: object
          properties:
            profile:
              type: string
              enum:
                - raw
                - detailed
                - discovery
              default: raw
        callback:
          type: object
          properties:
            url:
              type: string
              format: uri
            events:
              type: array
              items:
                type: string
                enum:
                  - complete
                  - error
                  - progress
  responses:
    BadRequest:
      description: Invalid request, missing required fields or invalid format
      content:
        application/json:
          example:
            error:
              code: invalid_request
              message: The 'interaction.content' field is required for type 'text'
    Unauthorized:
      description: Invalid or missing authentication token
      content:
        application/json:
          example:
            error:
              code: unauthorized
              message: >-
                Invalid or expired API token. Obtain a new token from
                atlas.blankstate.ai
    QuotaExhausted:
      description: ICS quota exhausted, free tier consumed and no payment method on file
      content:
        application/json:
          example:
            error:
              code: quota_exhausted
              message: >-
                Your free ICS quota for this period has been consumed. Add a
                payment method at atlas.blankstate.ai to continue.
              details:
                quota: 50
                used: 50
                reset: '2026-03-01T00:00:00Z'
  securitySchemes:
    BearerAuth:
      type: http
      scheme: bearer
      description: API token from Atlas Dashboard

````