Assembled Reports API

Asynchronously generate and retrieve structured reports including adherence, ticket statistics, and handle times. Reports are kicked off with a POST /v0/reports/:reportType call and polled via GET /v0/reports/:reportID for results, enabling automated weekly and monthly KPI exports into BI tools.

Assembled Reports 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 Reports, Analytics, Adherence, and Handle Time. The published artifact set on APIs.io includes API documentation, an OpenAPI specification, and 1 Naftiko capability spec.

OpenAPI Specification

assembled-reports-api-openapi.yml Raw ↑
openapi: 3.1.0
info:
  title: Assembled Reports API
  description: |
    Asynchronously generate and retrieve structured reports including
    adherence, ticket statistics, and handle times.

    Reports are kicked off with a POST /v0/reports/:reportType call and
    polled via GET /v0/reports/:reportID for results, enabling automated
    weekly and monthly KPI exports into BI tools.
  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: Reports
paths:
  /v0/reports/{reportType}:
    post:
      summary: Assembled Start Report
      description: Kick off generation of a structured report.
      operationId: startReport
      tags: [Reports]
      parameters:
        - in: path
          name: reportType
          required: true
          schema:
            type: string
            enum: [adherence, ticket_stats, handle_time]
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                start_time: { type: string, format: date-time }
                end_time: { type: string, format: date-time }
                queue_ids:
                  type: array
                  items: { type: string }
                team_ids:
                  type: array
                  items: { type: string }
                site_ids:
                  type: array
                  items: { type: string }
                agent_ids:
                  type: array
                  items: { type: string }
                granularity: { type: string, enum: [interval, day, week, month], default: day }
      responses:
        '202':
          description: Report job accepted
          content:
            application/json:
              schema:
                type: object
                properties:
                  reportID: { type: string }
                  status: { type: string, example: pending }
  /v0/reports/{reportID}:
    get:
      summary: Assembled Get Report
      description: Retrieve a generated report by ID. Poll until status is `complete`.
      operationId: getReport
      tags: [Reports]
      parameters:
        - in: path
          name: reportID
          required: true
          schema: { type: string }
      responses:
        '200':
          description: Report result
          content:
            application/json:
              schema:
                type: object
                properties:
                  reportID: { type: string }
                  status: { type: string, enum: [pending, running, complete, failed] }
                  reportType: { type: string }
                  generated_at: { type: string, format: date-time, nullable: true }
                  rows:
                    type: array
                    items:
                      type: object
                      additionalProperties: true
components:
  securitySchemes:
    BasicAuth: { type: http, scheme: basic }