Fastino Labs inference-history API

List and retrieve past inference records.

OpenAPI Specification

fastino-labs-inference-history-api-openapi.yml Raw ↑
openapi: 3.1.0
info:
  title: Pioneer Inference anthropic-compat inference-history API
  version: 1.0.0
  description: Public inference API for Pioneer AI. Covers the Pioneer-native endpoint, OpenAI-compatible endpoints (/v1/chat/completions, /v1/completions, /v1/models), the Anthropic-compatible endpoint (/v1/messages), and inference history. Authenticate with an X-API-Key header (keys begin with pio_sk_).
  contact:
    name: Pioneer AI
    url: https://docs.pioneer.ai
    email: support@pioneer.ai
servers:
- url: https://api.pioneer.ai
  description: Production
security:
- ApiKeyAuth: []
- BearerAuth: []
tags:
- name: inference-history
  description: List and retrieve past inference records.
paths:
  /inferences:
    get:
      operationId: list_inferences
      summary: List inference history
      description: Paginated list of past inference records for the authenticated user's team. Supports filtering by model, project, task type, latency range, and LLM-as-Judge score.
      tags:
      - inference-history
      parameters:
      - name: limit
        in: query
        schema:
          type: integer
          minimum: 1
          maximum: 500
          default: 100
        description: Maximum records to return.
      - name: offset
        in: query
        schema:
          type: integer
          minimum: 0
          default: 0
        description: Records to skip for pagination.
      - name: model_id
        in: query
        schema:
          type: string
        description: Filter by model ID.
      - name: project_id
        in: query
        schema:
          type: string
        description: Filter by project ID.
      - name: training_job_id
        in: query
        schema:
          type: string
        description: Filter by training job UUID.
      - name: task
        in: query
        schema:
          type: string
        description: Filter by task type (extract_entities, classify_text, extract_json, generate).
      - name: latency_min
        in: query
        schema:
          type: number
          minimum: 0
        description: Minimum latency in ms.
      - name: latency_max
        in: query
        schema:
          type: number
          minimum: 0
        description: Maximum latency in ms.
      - name: llmaj_score_min
        in: query
        schema:
          type: number
          minimum: 0.0
          maximum: 1.0
        description: Minimum LLM-as-Judge score [0.0, 1.0].
      - name: llmaj_score_max
        in: query
        schema:
          type: number
          minimum: 0.0
          maximum: 1.0
        description: Maximum LLM-as-Judge score [0.0, 1.0].
      - name: since
        in: query
        schema:
          type: string
          format: date-time
        description: Return records created at or after this ISO 8601 timestamp.
      - name: until
        in: query
        schema:
          type: string
          format: date-time
        description: Return records created at or before this ISO 8601 timestamp.
      responses:
        '200':
          description: Paginated list of inference records.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/InferenceListResponse'
        '401':
          $ref: '#/components/responses/Unauthorized'
  /inferences/{inference_id}:
    get:
      operationId: get_inference
      summary: Get an inference record
      description: Retrieve a single inference record by ID. Includes LLM-as-Judge verdict and score when judging has completed (fields are null until then).
      tags:
      - inference-history
      parameters:
      - name: inference_id
        in: path
        required: true
        schema:
          type: string
        description: The inference record UUID returned in `inference_id` on any inference response.
      responses:
        '200':
          description: The inference record.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/InferenceRecord'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '404':
          $ref: '#/components/responses/NotFound'
  /inferences/{inference_id}/feedback:
    post:
      operationId: submit_inference_feedback
      summary: Submit inference feedback
      description: Submit a human correction on a past inference. Corrections are used as labeled examples for Adaptive Inference — Pioneer's continuous improvement loop that retrains your model on corrected live-traffic examples.
      tags:
      - inference-history
      parameters:
      - name: inference_id
        in: path
        required: true
        schema:
          type: string
        description: The inference record UUID to annotate.
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/InferenceFeedbackRequest'
            examples:
              correct:
                summary: Mark as correct
                value:
                  verdict: correct
              incorrect:
                summary: Mark as incorrect with correction
                value:
                  verdict: incorrect
                  corrected_output:
                    entities:
                    - text: Apple
                      label: organization
                      start: 0
                      end: 5
                    - text: iPhone
                      label: product
                      start: 18
                      end: 24
                  notes: Missed the product entity
      responses:
        '200':
          description: Feedback recorded.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/InferenceFeedbackResponse'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '404':
          $ref: '#/components/responses/NotFound'
        '422':
          $ref: '#/components/responses/ValidationError'
components:
  responses:
    Unauthorized:
      description: Missing or invalid API key.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorResponse'
    NotFound:
      description: Resource not found.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorResponse'
    ValidationError:
      description: Request body failed schema validation.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ValidationErrorResponse'
  schemas:
    ValidationErrorResponse:
      type: object
      properties:
        detail:
          type: array
          items:
            type: object
            properties:
              loc:
                type: array
                items:
                  oneOf:
                  - type: string
                  - type: integer
              msg:
                type: string
              type:
                type: string
    InferenceFeedbackRequest:
      type: object
      required:
      - verdict
      properties:
        verdict:
          type: string
          enum:
          - correct
          - incorrect
        corrected_output:
          description: Required when verdict is `incorrect`. Shape should match the original inference schema.
        notes:
          type: string
          maxLength: 5000
    ErrorResponse:
      type: object
      properties:
        detail:
          oneOf:
          - type: string
          - type: object
          description: Human-readable error message or structured detail object.
    InferenceRecord:
      type: object
      required:
      - id
      - user_id
      - model_id
      - input
      - source
      - status
      - created_at
      properties:
        id:
          type: string
        user_id:
          type: string
        model_id:
          type: string
        model_name:
          type: string
        task:
          type: string
        input:
          type: string
        output: {}
        latency_ms:
          type: integer
        tokens:
          type: integer
        input_tokens:
          type: integer
        output_tokens:
          type: integer
        cache_read_tokens:
          type: integer
        cache_write_tokens:
          type: integer
        source:
          type: string
          enum:
          - api
          - ui
        status:
          type: string
          enum:
          - success
          - failed
        error_type:
          type: string
          enum:
          - validation
          - timeout
          - model_not_ready
          - model_not_found
          - model_not_supported
          - capacity_exhausted
          - internal
        error_message:
          type: string
        created_at:
          type: string
          format: date-time
        project_id:
          type: string
        training_job_id:
          type: string
        provider:
          type: string
        base_model:
          type: string
        metadata:
          type: object
        human_verdict:
          type: string
          enum:
          - correct
          - incorrect
        human_corrected_output: {}
        human_feedback_notes:
          type: string
        human_feedback_at:
          type: string
          format: date-time
        llmaj_verdict:
          type: string
          enum:
          - pass
          - fail
          - uncertain
          description: LLM-as-Judge verdict. Null until judging completes.
        llmaj_score:
          type: number
          description: LLM-as-Judge confidence score [0.0, 1.0]. Null until judging completes.
        llmaj_judged_at:
          type: string
          format: date-time
        llmaj_reasoning:
          type: string
    InferenceFeedbackResponse:
      type: object
      properties:
        inference_id:
          type: string
        human_verdict:
          type: string
        human_feedback_at:
          type: string
          format: date-time
    InferenceListResponse:
      type: object
      required:
      - inferences
      - total
      - limit
      - offset
      properties:
        inferences:
          type: array
          items:
            $ref: '#/components/schemas/InferenceRecord'
        total:
          type: integer
          description: Total matching records (for pagination).
        limit:
          type: integer
        offset:
          type: integer
  securitySchemes:
    ApiKeyAuth:
      type: apiKey
      in: header
      name: X-API-Key
      description: Pioneer API key. Generate one at https://agent.pioneer.ai/settings/api-keys. Keys begin with `pio_sk_`.
    BearerAuth:
      type: http
      scheme: bearer
      bearerFormat: JWT
      description: Supabase access token or Pioneer API key as a Bearer token.