Apperio Analytics API

A set of non resource based endpoints that power various components within Apperio. These endpoints primarily support discovery and data investigation.

Operations 1

GET /api/v1/data/analytics Analytics #

Work with this as data

Every API here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for apis

7 MCP tools reach this
  • find_apisBrowse and filter every API in the catalog.
  • get_api_artifactsOne API's artifacts, grouped by type.
  • get_openapiThe primary OpenAPI for this API.
  • find_similar_apisAPIs that look like this one.
  • apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
  • resolveTurn a domain, URL or GitHub org into the provider it belongs to.
  • find_cohortsEvery scored population of providers in the catalog.
All 92 tools →

Call it yourself

curl for this page
This API
curl "https://apis.io/api/v1/apis/apperio-analytics-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"

Discovery needs no key. Ratings and market analysis are Pro.

Get an API key

Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.

A second provider on the same verified email joins the account you already have.

OpenAPI Specification

apperio-analytics-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: Apperio API Documentation Analytics API
  description: '# Introduction


    The Apperio API allows law firms and businesses to enhance their internal

    business intelligence capabilities.'
servers:
- url: https://sandbox.apperio.com/
- url: https://app.apperio.com/
tags:
- name: Analytics
  description: 'A set of non resource based endpoints that power various components

    within Apperio. These endpoints primarily support discovery and data

    investigation.'
paths:
  /api/v1/data/analytics:
    get:
      summary: Analytics
      description: 'Capabilities: BUSINESS, LAW_FIRM, PAGINATION


        Denormalised data is split along one or more "dimensions". Each

        dimension supplied segments the requested data over that dimension.

        For example, if you were interested in finding your total WIP, you

        would simply supply `wip` as a metric. If you were interested in

        finding this per law firm, you would also supply `law_firm_id` as a

        dimension, and if you wanted this over time, you would supply

        `date,law_firm_id`.'
      parameters:
      - name: start_date
        in: query
        required: true
        schema:
          type: string
          enum:
          - NdaysAgo
          - today
          - dd-mm-yyyy
        description: Inclusive date to gather data from
        example: 90daysAgo
      - name: end_date
        in: query
        required: true
        schema:
          type: string
          enum:
          - NdaysAgo
          - today
          - dd-mm-yyyy
        description: Inclusive date to gather data to
        example: today
      - name: metrics
        in: query
        schema:
          type: string
          enum:
          - hours_worked_wip
          - hours_worked_billed
          - hours_worked
          - hours_worked_wip_no_budget
          - hours_worked_billed_no_budget
          - hours_worked_no_budget
          - fees_worked_billed
          - fees_worked_wip
          - fees_worked
          - fees_worked_billed_no_budget
          - fees_worked_wip_no_budget
          - fees_worked_no_budget
          - rate
          - rate_no_budget
          - rate_percentile
          - rate_percentile_no_budget
          - rate_min
          - rate_min_no_budget
          - rate_max
          - rate_max_no_budget
          - rate_avg
          - rate_avg_no_budget
          - fees_wip
          - fees_wip_no_budget
          - fees_billed
          - fees_billed_no_budget
          - fees_billable
          - fees_billable_no_budget
          - fees_write_down_billed
          - fees_write_down_wip
          - fees_write_down
          - fees_activity_cost
          - fees_write_down_billed_no_budget
          - fees_write_down_wip_no_budget
          - fees_write_down_no_budget
          - fees_activity_cost_no_budget
          - disbursements_wip
          - disbursements_wip_no_budget
          - disbursements_billed
          - disbursements_billed_no_budget
          - disbursements_billable
          - disbursements_billable_no_budget
          - disbursements_write_down_billed
          - disbursements_write_down_wip
          - disbursements_write_down
          - disbursements_activity_cost
          - disbursements_write_down_billed_no_budget
          - disbursements_write_down_wip_no_budget
          - disbursements_write_down_no_budget
          - disbursements_activity_cost_no_budget
          - write_down
          - write_down_no_budget
          - activity_cost
          - activity_cost_no_budget
          - engagement_opened
          - wip
          - wip_no_budget
          - billed
          - billed_no_budget
          - billable
          - billable_no_budget
          - engagement_worked
        description: CSV of metrics to include in the results
        required: true
        example: wip,billed
      - name: dimensions
        in: query
        schema:
          type: string
          enum:
          - date
          - week
          - month
          - quarter
          - year
          - age
          - engagement_id
          - fee_earner_id
          - fee_earner_role_id
          - standard_role_id
          - law_firm_id
          - business_id
          - currency
          - folder_id
          - pass_through
          - team_id
          - fee_structure
          - standard_fee_structure_id
          - business_matter_type_id
          - law_firm_currency
          - business_currency
          - engagement_currency
          - expense_type_id
          - invoice_id
          - ebilling_invoice_id
          - business_config_id
          - tag_id
        description: CSV of dimensions to apply to the query
      - name: page
        in: query
        schema:
          type: string
      - name: limit
        in: query
        schema:
          type: integer
          minimum: 1
        description: The number of items to return
      - name: engagement_id
        in: query
        schema:
          type: int
          description: Filter by a single matter
      - name: engagement_id__in
        in: query
        schema:
          type: string
          description: 'Comma separated list of Apperio matter identifiers. The commas must

            be URL encoded (%2C)

            '
          example: 25%2C66
      - name: business_config_id
        in: query
        schema:
          type: int
          description: 'Filter matters to the one Apperio business-law firm connection identifier

            '
      - name: business_config_id__in
        in: query
        schema:
          type: string
          description: 'Comma separated list of Apperio business-law firm connection identifiers.

            The commas must be URL encoded (%2C)

            '
      - name: business_id
        in: query
        schema:
          type: int
          description: 'Filter matters to the one business

            '
      - name: business_matter_type_id__isnull
        in: query
        schema:
          type: boolean
          description: 'Filter matters where the matter type isn''t set

            '
      - name: business_matter_type_id__in
        in: query
        schema:
          type: string
          description: 'Comma separated list of Apperio business matter type identifiers. The commas must

            be URL encoded (%2C)

            '
      - name: fee_structure
        in: query
        schema:
          type: int
          description: 'Filter matters to the one fee structure

            '
      - name: fee_structure__in
        in: query
        schema:
          type: string
          example: fixed%2Ccapped
          description: 'Comma separated list of fee_structures. The commas must

            be URL encoded (%2C)

            '
      - name: folder_id__isnull
        in: query
        schema:
          type: boolean
          description: 'Filter matters that haven''t been assigned to a folder

            '
      - name: folder_id__in
        in: query
        schema:
          type: string
          description: 'Comma separated list of folders. The commas must

            be URL encoded (%2C)

            '
      - name: law_firm_id
        in: query
        schema:
          type: int
          description: 'Filter matters to the one firm

            '
      - name: law_firm_id__in
        in: query
        schema:
          type: string
          description: 'Comma separated list of firms. The commas must

            be URL encoded (%2C)

            '
      - name: pass_through
        in: query
        schema:
          type: boolean,
          description: Filter matters where costs are(n't) passed through to the end client
      - name: tag_id__in
        in: query
        schema:
          type: string
          description: 'Comma separated list of tags in the form of `[TAG_SET_ID]__[TAG_ID]`

            or `[TAG_SET_ID]__isnull`. Those tags with the same tag set identifier

            will first be combined with an OR and then the groups will be combined

            with an AND. That is, matters need to belong to at least one tag per

            tag set group. `[TAG_SET_ID]__isnull` corresponds to matters that have

            not been assigned any tag in `TAG_SET_ID`.

            The commas must be URL encoded (%2C).

            '
          example: 2__78%2C2__80%2C5__isnull
      - name: team_id__isnull
        in: query
        schema:
          type: int
          description: 'Filter matters that haven''t been assigned to a business team

            '
      - name: team_id__in
        in: query
        schema:
          type: string
          description: 'Comma separated list of business teams. The commas must

            be URL encoded (%2C)

            '
      tags:
      - Analytics
      responses:
        '200':
          description: 'Analytic data

            '
          content:
            application/json:
              schema:
                type: object
                properties:
                  analytics:
                    type: object
                    properties:
                      query:
                        type: object
                        description: 'Contains the data used when querying analytics.

                          '
                        properties:
                          start_date:
                            type: string
                            example: 90daysAgo
                          end_date:
                            type: string
                            example: today
                          limit:
                            type:
                            - integer
                            - 'null'
                            example: null
                          ordering:
                            type:
                            - string
                            - 'null'
                            example: null
                          currency:
                            type:
                            - string
                            - 'null'
                            example: null
                      columns:
                        type: array
                        items:
                          type: string
                        example:
                        - date
                        - law_firm_id
                        - wip
                        description: 'The name of each column, dimensions followed by metrics.

                          '
                      column-types:
                        type: array
                        items:
                          type: string
                          enum:
                          - DIMENSION
                          - METRIC
                          example:
                          - DIMENSION
                          - DIMENSION
                          - METRIC
                        description: 'Is the value at index a dimension or metric value

                          '
                      column-data-types:
                        type: array
                        items:
                          type: string
                          enum:
                          - CURRENCY
                          - INT
                          - FLOAT
                          - DATE
                          - STRING
                          - COUNT
                          - BOOL_COUNT
                          - BOOL
                          example:
                          - DATE
                          - INT
                          - CURRENCY
                        description: 'The data type of the value at each index within thr row

                          '
                      rows:
                        type: array
                        items:
                          type: array
                        description: 'Each array contains the requested dimensions followed by metrics.

                          '
                        example:
                        - - 01-03-2020
                          - 1
                          - 100
                        - - 01-03-2020
                          - 2
                          - 500
                        - - 02-03-2020
                          - 1
                          - 400
                      pagination:
                        type: object
                        properties:
                          next:
                            type:
                            - string
                            - 'null'
                            description: location of the next page
                            example: aAbBcCdDeEfFgG
                          previous:
                            type:
                            - string
                            - 'null'
                            description: location of the previous page
                            example: null
                          nextPage:
                            type:
                            - string
                            - 'null'
                            description: value of the next page paginator
                            example: https://app.apperio.com/api/v1/analytics?page=aAbBcCdDeEfFgG
                          previousPage:
                            type:
                            - string
                            - 'null'
                            description: value of the previous page paginator
                            example: null
        '400':
          description: 'Bad request

            '
          content:
            application/json:
              schema:
                type: object
                additionalProperties:
                  type: array
                  items:
                    type: string
                  description: 'Error messages

                    '
      operationId: getApiV1DataAnalytics
      x-operation-id-source: derived