Assembled QA API

Upload QA scores in bulk so external quality-management tools such as Klaus, Rippit (MaestroQA), evaluagent, and Observe.AI can feed conversation scores back into Assembled for adherence-vs-quality analysis and coaching workflows.

Assembled QA API is one of 12 APIs that Assembled publishes on the APIs.io network, described by a machine-readable OpenAPI specification.

This API exposes 1 machine-runnable capability that can be deployed as REST, MCP, or Agent Skill surfaces via Naftiko.

Tagged areas include Quality Assurance, Scoring, and Coaching. The published artifact set on APIs.io includes API documentation, an OpenAPI specification, and 1 Naftiko capability spec.

OpenAPI Specification

assembled-qa-api-openapi.yml Raw ↑
openapi: 3.1.0
info:
  title: Assembled QA API
  description: |
    Upload QA scores in bulk so external quality-management tools such as
    Klaus, Rippit (MaestroQA), evaluagent, and Observe.AI can feed
    conversation scores back into Assembled for adherence-vs-quality
    analysis and coaching workflows.
  version: '2026-05-24'
  contact:
    name: Assembled Support
    url: https://support.assembled.com
servers:
  - url: https://api.assembledhq.com
    description: Production Server
security:
  - BasicAuth: []
tags:
  - name: Quality Assurance
paths:
  /v0/qa_scores/bulk:
    post:
      summary: Assembled Bulk Upload QA Scores
      description: Submit a batch of QA scores from an external QM tool.
      operationId: bulkUploadQaScores
      tags: [Quality Assurance]
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                qa_scores:
                  type: array
                  items: { $ref: '#/components/schemas/QaScoreInput' }
      responses:
        '202':
          description: Accepted
components:
  securitySchemes:
    BasicAuth: { type: http, scheme: basic }
  schemas:
    QaScoreInput:
      type: object
      required: [agent_id, score, source, scored_at]
      properties:
        agent_id: { type: string }
        conversation_external_id: { type: string }
        source: { type: string, example: klaus }
        score: { type: number, description: Normalised 0-100 quality score }
        max_score: { type: number, default: 100 }
        rubric: { type: string }
        notes: { type: string }
        reviewer: { type: string }
        scored_at: { type: string, format: date-time }