Everhour Reports API

Dashboard reports for projects, clients, and users.

OpenAPI Specification

everhour-reports-api-openapi.yml Raw ↑
openapi: 3.0.3
info:
  title: Everhour Clients Reports API
  description: The Everhour API is a RESTful interface providing programmatic access to time tracking, timesheets, timers, projects, tasks, clients, invoices, expenses, resource scheduling, time off, and reporting data in Everhour. The API accepts and returns JSON (UTF-8 only). All requests are authenticated with an X-Api-Key header carrying an API key found at the bottom of your Everhour profile page. An optional X-Accept-Version header pins a specific API version (the most recent, 1.2, is used by default). The API is labeled BETA by Everhour, meaning some calls can be slightly adjusted; breaking changes are pushed in separate API versions. Time values are in seconds and money amounts are in cents throughout.
  version: '1.2'
  contact:
    name: Everhour
    url: https://everhour.com
    email: ask@everhour.com
servers:
- url: https://api.everhour.com
  description: Everhour production API
security:
- apiKey: []
tags:
- name: Reports
  description: Dashboard reports for projects, clients, and users.
paths:
  /dashboards/projects:
    get:
      operationId: getProjectsReport
      tags:
      - Reports
      summary: Projects report
      description: Returns aggregated time, billable amounts, costs, profit, and expense metrics per project. Time columns are in seconds and amounts in cents.
      parameters:
      - $ref: '#/components/parameters/DateGte'
      - $ref: '#/components/parameters/DateLte'
      - $ref: '#/components/parameters/FilterProjectId'
      - $ref: '#/components/parameters/FilterClientId'
      - $ref: '#/components/parameters/FilterMemberId'
      responses:
        '200':
          description: Per-project report rows.
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/ProjectsDashboardItem'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '429':
          $ref: '#/components/responses/TooManyRequests'
  /dashboards/clients:
    get:
      operationId: getClientsReport
      tags:
      - Reports
      summary: Clients report
      description: Returns aggregated time, billable amounts, costs, profit, and expense metrics per client.
      parameters:
      - $ref: '#/components/parameters/DateGte'
      - $ref: '#/components/parameters/DateLte'
      - $ref: '#/components/parameters/FilterProjectId'
      - $ref: '#/components/parameters/FilterClientId'
      - $ref: '#/components/parameters/FilterMemberId'
      responses:
        '200':
          description: Per-client report rows.
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/ClientsDashboardItem'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '429':
          $ref: '#/components/responses/TooManyRequests'
  /dashboards/users:
    get:
      operationId: getUsersReport
      tags:
      - Reports
      summary: Users report
      description: Returns aggregated time, time off, billable amounts, costs, and profit metrics per team member.
      parameters:
      - $ref: '#/components/parameters/DateGte'
      - $ref: '#/components/parameters/DateLte'
      - $ref: '#/components/parameters/FilterProjectId'
      - $ref: '#/components/parameters/FilterClientId'
      - $ref: '#/components/parameters/FilterMemberId'
      responses:
        '200':
          description: Per-user report rows.
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/UsersDashboardItem'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '429':
          $ref: '#/components/responses/TooManyRequests'
components:
  parameters:
    DateGte:
      name: date.gte
      in: query
      description: Report start date (YYYY-MM-DD).
      schema:
        type: string
        format: date
    FilterProjectId:
      name: projectId
      in: query
      description: Filter by project ID.
      schema:
        type: string
    FilterMemberId:
      name: memberId
      in: query
      description: Filter by user ID.
      schema:
        type: integer
    FilterClientId:
      name: clientId
      in: query
      description: Filter by client ID.
      schema:
        type: integer
    DateLte:
      name: date.lte
      in: query
      description: Report end date (YYYY-MM-DD).
      schema:
        type: string
        format: date
  schemas:
    Error:
      type: object
      properties:
        code:
          type: integer
        message:
          type: string
    UsersDashboardItem:
      type: object
      description: Per-user report row. Time is in seconds and amounts in cents.
      properties:
        memberId:
          type: integer
        memberName:
          type: string
        memberHeadline:
          type: string
        memberStatus:
          type: string
          enum:
          - active
          - invited
          - pending
          - removed
        time:
          type: integer
        billableTime:
          type: integer
        nonBillableTime:
          type: integer
        timeOffTime:
          type: integer
        timeOffDays:
          type: number
        billableAmount:
          type: integer
        costs:
          type: integer
        profit:
          type: integer
        expenses:
          type: integer
    ProjectsDashboardItem:
      type: object
      description: Per-project report row. Time is in seconds and amounts in cents.
      properties:
        projectId:
          type: string
        projectName:
          type: string
        projectStatus:
          type: string
          enum:
          - open
          - archived
        clientId:
          type: integer
        clientName:
          type: string
        billingType:
          type: string
          enum:
          - non_billable
          - hourly
          - fixed_fee
        time:
          type: integer
        billableTime:
          type: integer
        nonBillableTime:
          type: integer
        billableAmount:
          type: integer
        costs:
          type: integer
        profit:
          type: integer
        uninvoicedAmount:
          type: integer
        expenses:
          type: integer
    ClientsDashboardItem:
      type: object
      description: Per-client report row. Time is in seconds and amounts in cents.
      properties:
        clientId:
          type: integer
        clientName:
          type: string
        time:
          type: integer
        billableTime:
          type: integer
        nonBillableTime:
          type: integer
        billableAmount:
          type: integer
        costs:
          type: integer
        profit:
          type: integer
        uninvoicedAmount:
          type: integer
        expenses:
          type: integer
  responses:
    Unauthorized:
      description: Missing or invalid X-Api-Key header.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
    TooManyRequests:
      description: Rate limit exceeded (around 20 requests per 10 seconds per API key). The Retry-After response header specifies the number of seconds to wait before making another request.
      headers:
        Retry-After:
          description: Seconds to wait before retrying.
          schema:
            type: integer
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
  securitySchemes:
    apiKey:
      type: apiKey
      in: header
      name: X-Api-Key
      description: API key from the bottom of your Everhour profile page.
Where this information came from

This is an independent, third-party profile of Everhour Reports API, published by API Evangelist. We do not operate, host, resell, or support these APIs, and we are not affiliated with or endorsed by the company unless stated above. Everything here is built from publicly available information — the company's own site, developer portal, documentation, public repositories, and the specifications it publishes for public use. Nothing is obtained by breaching a system, defeating an access control, or using credentials.

The Kin Score and Agent Readiness rating are independently calculated assessments of a company's public API artifacts, scored against a published rubric. They are not certifications, endorsements, security assessments, or audits.

Corrections, re-scores, and removal are free — no partnership or purchase required, and you do not need to justify the request. A removed company is recorded as unrated, never scored zero for having asked. Acknowledgement within one business day; removal within two.

info@apievangelist.com · Read the full data-sourcing policy →
On a security or compliance team? Put security in the subject line and you will get a person, not a form — we will tell you exactly which public URLs this profile was built from.