Hellou AI Reports API

The Reports API from Hellou AI — 5 operation(s) for reports.

GitHub OpenAPI

Operations 5

GET /api/v2/accounts/{account_id}/reports Get Account reports #
GET /api/v2/accounts/{account_id}/reports/summary Get Account reports summary #
GET /api/v1/accounts/{account_id}/usage Get the plan usage #
GET /api/v2/accounts/{account_id}/reports/conversations Conversation Metrics #
GET /api/v1/accounts/{account_id}/reporting_events List reporting events #

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/hellou-ai:hellou-ai-reports-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"

Calls without X-API-Key need no key. Calls with it need a paid plan — get a key.

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

hellou-ai-reports-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: HellouOne Reports API
  version: 1.0.0
  description: 'The HellouOne REST API: everything the dashboard does, available to your

    own systems — CRMs, bots, BI tools and back-office automation.'
  termsOfService: https://hellou.ai/en/legal/terms/
  contact:
    name: HellouOne support
    email: support@hellou.ai
servers:
- url: https://one.hellou.ai
  description: HellouOne cloud
security:
- userApiKey: []
tags:
- name: Reports
paths:
  /api/v2/accounts/{account_id}/reports:
    parameters:
    - $ref: '#/components/parameters/account_id'
    - $ref: '#/components/parameters/report_metric'
    - $ref: '#/components/parameters/report_type'
    - in: query
      name: id
      schema:
        type: string
      description: The Id of specific object in case of agent/inbox/label
    - in: query
      name: since
      schema:
        type: string
      description: The timestamp from where report should start.
    - in: query
      name: until
      schema:
        type: string
      description: The timestamp from where report should stop.
    get:
      tags:
      - Reports
      operationId: list-all-conversation-statistics
      summary: Get Account reports
      description: Get Account reports for a specific type, metric and date range
      responses:
        '200':
          description: Success
          content:
            application/json:
              schema:
                type: array
                description: Array of date based conversation statistics
                items:
                  type: object
                  properties:
                    value:
                      type: string
                    timestamp:
                      type: number
        '404':
          description: reports not found
        '403':
          description: Access denied
  /api/v2/accounts/{account_id}/reports/summary:
    parameters:
    - $ref: '#/components/parameters/account_id'
    - $ref: '#/components/parameters/report_type'
    - in: query
      name: id
      schema:
        type: string
      description: The Id of specific object in case of agent/inbox/label
    - in: query
      name: since
      schema:
        type: string
      description: The timestamp from where report should start.
    - in: query
      name: until
      schema:
        type: string
      description: The timestamp from where report should stop.
    get:
      tags:
      - Reports
      operationId: list-all-conversation-statistics-summary
      summary: Get Account reports summary
      description: Get Account reports summary for a specific type and date range
      responses:
        '200':
          description: Success
          content:
            application/json:
              schema:
                description: Object of summary metrics
                $ref: '#/components/schemas/account_summary'
        '404':
          description: reports not found
        '403':
          description: Access denied
  /api/v1/accounts/{account_id}/usage:
    parameters:
    - $ref: '#/components/parameters/account_id'
    get:
      tags:
      - Reports
      operationId: getAccountUsage
      summary: Get the plan usage
      description: 'What the account has used of its plan in the current billing period, against

        what the plan includes: agents, inboxes, conversations, AI agents, AI messages,

        marketing sends and AI phone minutes. A limit the plan does not cap has

        `allowed: null`.


        AI phone minutes are measured to the second and reported as decimal minutes

        rounded to two places. `consumed` is the total, `standard_consumed` and

        `premium_consumed` split it by voice engine. Minutes used beyond those

        included in the plan are billed as overage.


        **Administrators only.**'
      parameters: []
      responses:
        '200':
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/account_usage'
        '401':
          $ref: '#/components/responses/unauthorized'
        '403':
          $ref: '#/components/responses/forbidden'
  /api/v2/accounts/{account_id}/reports/conversations:
    parameters:
    - $ref: '#/components/parameters/account_id'
    get:
      tags:
      - Reports
      operationId: get-conversation-metrics
      summary: Conversation Metrics
      description: 'Live conversation counts. With `type=account` the response is one object of

        account-wide counts; with `type=agent` it is an array with one entry per agent

        (narrow it to a single agent with `user_id`).'
      parameters:
      - in: query
        name: type
        required: true
        description: Type of report
        schema:
          type: string
          enum:
          - account
          - agent
      - in: query
        name: user_id
        description: The numeric ID of the user (only with `type=agent`)
        schema:
          type: string
      responses:
        '200':
          description: Success
          content:
            application/json:
              schema:
                oneOf:
                - type: object
                  description: Account conversation metrics (`type=account`)
                  properties:
                    open:
                      type: number
                    unattended:
                      type: number
                    unassigned:
                      type: number
                - type: array
                  description: Agent conversation metrics (`type=agent`)
                  items:
                    $ref: '#/components/schemas/agent_conversation_metrics'
        '404':
          description: reports not found
        '403':
          description: Access denied
  /api/v1/accounts/{account_id}/reporting_events:
    parameters:
    - $ref: '#/components/parameters/account_id'
    get:
      tags:
      - Reports
      operationId: listReportingEvents
      summary: List reporting events
      description: 'The raw rows behind the report numbers: first response, reply time, resolution, AI agent and call events.

        Newest first, 25 per page. Without `since` and `until` the last 30 days are returned. `since` and `until`

        filter the moment the event was recorded and take unix seconds or an ISO 8601 date; the range may not exceed

        90 days. An unparseable or inverted range, or an id filter that is not a number (inbox_id, user_id,

        conversation_id), is refused with 422. All time fields in the response are unix seconds.


        `conversation_id` in the response, as in the filter, is the conversation number shown in the dashboard (its

        `display_id`).


        **Administrators only.** Other members get 403.


        **Requires feature:** `reports`'
      x-required-feature: reports
      parameters:
      - $ref: '#/components/parameters/page'
      - in: query
        name: since
        required: false
        schema:
          type: string
        description: Start of the range, unix seconds or ISO 8601. Defaults to 30 days before `until`.
      - in: query
        name: until
        required: false
        schema:
          type: string
        description: End of the range, unix seconds or ISO 8601. Defaults to now. At most 90 days after `since`.
      - in: query
        name: inbox_id
        required: false
        schema:
          type: integer
        description: Only events of this inbox.
      - in: query
        name: user_id
        required: false
        schema:
          type: integer
        description: Only events of this agent.
      - in: query
        name: name
        required: false
        schema:
          type: string
        description: Only events with this name, for example `first_response`.
      - in: query
        name: conversation_id
        required: false
        schema:
          type: integer
        description: Only events of this conversation, by the number shown in the dashboard (`display_id`).
      responses:
        '200':
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/reporting_event_list'
        '422':
          $ref: '#/components/responses/unprocessable'
        '401':
          $ref: '#/components/responses/unauthorized'
        '403':
          $ref: '#/components/responses/forbidden'
components:
  parameters:
    report_type:
      in: query
      name: type
      required: true
      description: Type of report
      schema:
        type: string
        enum:
        - account
        - agent
        - inbox
        - label
        - team
    account_id:
      in: path
      name: account_id
      required: true
      description: The numeric ID of the account
      schema:
        type: integer
    report_metric:
      in: query
      name: metric
      required: true
      description: The type of metric. The `mood_*` counts are sentiment events (one per scored burst of customer messages), written only while sentiment runs in `enforce`.
      schema:
        type: string
        enum:
        - conversations_count
        - incoming_messages_count
        - outgoing_messages_count
        - avg_first_response_time
        - avg_resolution_time
        - resolutions_count
        - mood_scored_count
        - mood_negative_count
        - mood_attention_count
    page:
      in: query
      name: page
      required: false
      description: The page parameter
      schema:
        type: integer
        default: 1
  responses:
    unauthorized:
      description: Missing or invalid `api_access_token`, or a bot token on an endpoint bots cannot use.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/error_message'
    forbidden:
      description: 'Not allowed: the user''s role does not permit it, the feature is not enabled

        for the account (`reason: feature_disabled`), or the account is read-only.

        '
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/error_message'
    unprocessable:
      description: The request was understood but the data is invalid.
      content:
        application/json:
          schema:
            anyOf:
            - $ref: '#/components/schemas/validation_error'
            - $ref: '#/components/schemas/error_message'
  schemas:
    account_usage:
      type: object
      description: The account's plan usage for the current billing period.
      properties:
        id:
          type: integer
          description: The account id.
        plan:
          type:
          - object
          - 'null'
          description: The plan the account is on, or `null` for an account without one.
          properties:
            name:
              type: string
              description: The plan name.
            price_display:
              type:
              - string
              - 'null'
              description: The plan price as shown on the price list.
        trial:
          type:
          - object
          - 'null'
          description: Present only while the account is on a free trial.
          properties:
            active:
              type: boolean
              description: Always `true` when present.
            days_remaining:
              type: integer
              description: Days left of the trial.
            ends_on:
              type: string
              format: date
              description: The last day of the trial.
        period:
          type:
          - object
          - 'null'
          description: The billing period every per-period meter is counted over. `null` without a plan.
          properties:
            starts_on:
              type: string
              format: date
              description: First day of the period.
            ends_on:
              type: string
              format: date
              description: Last day of the period.
        limits:
          type: object
          description: Each meter as `consumed` against `allowed`. When `allowed` is `null` the plan does not cap it.
          properties:
            agents:
              $ref: '#/components/schemas/account_usage_meter'
            inboxes:
              $ref: '#/components/schemas/account_usage_meter'
            conversations:
              allOf:
              - $ref: '#/components/schemas/account_usage_meter'
              - type: object
                properties:
                  grace_allowed:
                    type:
                    - integer
                    - 'null'
                    description: The conversation count at which new conversations are blocked (the allowance plus the plan's grace).
            ai_agents:
              $ref: '#/components/schemas/account_usage_meter'
            ai_messages:
              $ref: '#/components/schemas/account_usage_meter'
            marketing_sends:
              $ref: '#/components/schemas/account_usage_meter'
            ai_voice_minutes:
              type: object
              description: AI phone minutes this period, measured to the second. Minutes beyond `allowed` are billed as overage until the cap.
              properties:
                consumed:
                  type:
                  - number
                  - 'null'
                  description: Total AI phone minutes, standard plus premium, as decimal minutes rounded to two places. `null` without a billing period.
                allowed:
                  type:
                  - integer
                  - 'null'
                  description: The AI phone minutes included in the plan, or `null` when the plan does not cap them.
                standard_consumed:
                  type:
                  - number
                  - 'null'
                  description: Minutes on the standard voice engine, rounded to two places.
                premium_consumed:
                  type:
                  - number
                  - 'null'
                  description: Minutes on the premium voice engine, rounded to two places.
                cap_percent:
                  type:
                  - integer
                  - 'null'
                  description: Percent past the included minutes at which AI calls stop (see the AI phone minutes cap setting). `null` when the account has no included minutes or no cap.
                cap_minutes:
                  type:
                  - number
                  - 'null'
                  description: The minutes at which AI calls stop being taken and are handed to your team, rounded to two places. `null` without included minutes or without a cap.
                cap_reached:
                  type:
                  - boolean
                  - 'null'
                  description: Whether the cap is reached now. `null` when the account has no included minutes.
        warning_ratio:
          type: number
          description: The share of the conversation allowance at which the dashboard starts warning.
    reporting_event:
      type: object
      description: One raw reporting event, the row behind the report numbers (first response, resolution, reply time and so on).
      properties:
        id:
          type: integer
        name:
          type: string
          description: The event name, for example `first_response`, `reply_time` or `conversation_resolved`.
        value:
          type:
          - number
          - 'null'
          description: The measured duration in seconds, when the event has one.
        value_in_business_hours:
          type:
          - number
          - 'null'
          description: The same duration counted only inside business hours, in seconds, when the event has one.
        event_start_time:
          type:
          - integer
          - 'null'
          description: When the measured span started, unix seconds.
        event_end_time:
          type:
          - integer
          - 'null'
          description: When the measured span ended, unix seconds.
        user_id:
          type:
          - integer
          - 'null'
          description: The agent the event belongs to.
        inbox_id:
          type:
          - integer
          - 'null'
          description: The inbox of the conversation.
        conversation_id:
          type:
          - integer
          - 'null'
          description: The conversation number shown in the dashboard (its `display_id`), not the internal row id. `null` when the event has no conversation.
        created_at:
          type: integer
          description: When the event was recorded, unix seconds.
      required:
      - id
      - name
      - created_at
    validation_error:
      type: object
      description: Validation failure for a record.
      properties:
        message:
          type: string
          description: Every validation message, joined with commas.
        attributes:
          type: array
          description: The attributes that failed validation.
          items:
            type: string
      required:
      - message
    reporting_event_list:
      type: object
      properties:
        payload:
          type: array
          description: The events of the page, newest first.
          items:
            $ref: '#/components/schemas/reporting_event'
        meta:
          type: object
          properties:
            count:
              type: integer
              description: Events matching the filters, across all pages.
            current_page:
              type: integer
            per_page:
              type: integer
              description: Always 25.
          required:
          - count
          - current_page
          - per_page
      required:
      - payload
      - meta
    error_message:
      type: object
      description: An error with a human-readable message.
      properties:
        error:
          type: string
          description: What went wrong.
        reason:
          type: string
          description: Machine-readable cause, when there is one (for example `feature_disabled`).
      required:
      - error
    account_usage_meter:
      type: object
      description: One plan meter.
      properties:
        consumed:
          type:
          - integer
          - 'null'
          description: Used so far. `null` when the meter has no billing period yet.
        allowed:
          type:
          - integer
          - 'null'
          description: What the plan includes, or `null` when the plan does not cap it.
    agent_conversation_metrics:
      type: object
      properties:
        id:
          type: number
        name:
          type: string
        email:
          type: string
        thumbnail:
          type: string
        availability:
          type: string
        metric:
          type: object
          properties:
            open:
              type: number
            unattended:
              type: number
    account_summary:
      type: object
      properties:
        avg_first_response_time:
          type: string
        avg_resolution_time:
          type: string
        conversations_count:
          type: number
        incoming_messages_count:
          type: number
        outgoing_messages_count:
          type: number
        resolutions_count:
          type: number
        previous:
          type: object
          properties:
            avg_first_response_time:
              type: string
            avg_resolution_time:
              type: string
            conversations_count:
              type: number
            incoming_messages_count:
              type: number
            outgoing_messages_count:
              type: number
            resolutions_count:
              type: number
  securitySchemes:
    userApiKey:
      type: apiKey
      in: header
      name: api_access_token
      description: 'A user''s access token, from **Profile settings → Access token** in the dashboard.

        Requests act with that user''s role: administrators reach everything in their

        account, agents only what their role and visibility settings allow.

        '
    agentBotApiKey:
      type: apiKey
      in: header
      name: api_access_token
      description: 'An agent bot''s access token, shown to administrators on the bot''s settings page.

        Bot tokens reach a limited set of conversation and message endpoints.

        '
    platformAppApiKey:
      type: apiKey
      in: header
      name: api_access_token
      description: 'A platform app token, issued by the installation operator. Used to provision

        accounts, users, account memberships and agent bots.

        '
    connectorInvokeToken:
      type: http
      scheme: bearer
      description: 'A connector''s invoke token (`hci_…`), sent as `Authorization: Bearer <token>`.

        Each connector install has its own; it is rotated whenever the connector is

        reconnected or disconnected, so a stale copy stops working.

        '
x-tagGroups:
- name: Guides
  tags:
  - Introduction
  - Authentication
  - Errors
  - Pagination
  - Rate limits
  - Webhook events
- name: Webhook payloads
  tags:
  - Event payloads
- name: Platform
  tags:
  - Accounts
  - Account Users
  - AgentBots
  - Users
- name: Application
  tags:
  - Account AgentBots
  - Agents
  - Automation Rule
  - Campaigns
  - Canned Responses
  - Contacts
  - Contact Labels
  - Conversation Assignment
  - Conversation Labels
  - Conversations
  - Custom Attributes
  - Custom Filters
  - Help Center
  - Inboxes
  - Integrations
  - Macros
  - Messages
  - Profile
  - Reports
  - Security Settings
  - Teams
  - Webhooks
- name: Business tools
  tags:
  - AI Classifications
  - Assignment Settings
  - Calls
  - AI Phone Lines
  - Connectors
  - ElevenLabs Integration
  - Facebook Marketing
  - HellouAI Integration
  - Knowledge Base
  - Marketing Consent
  - Plan Upgrades
  - Voice Campaigns
  - WhatsApp Campaigns
  - WhatsApp Flows
  - WhatsApp Templates
- name: Client
  tags:
  - Inbox API
  - Contacts API
  - Conversations API
  - Messages API
- name: Others
  tags:
  - CSAT Survey Page