PetExec Reports API

Billing and statistics reports.

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/petexec-reports-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 email required.

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

OpenAPI Specification

petexec-reports-api-openapi.yml Raw ↑
openapi: 3.0.3
info:
  title: PetExec Authentication Reports API
  description: The PetExec API is a REST API for existing PetExec customers and their developers to extend the PetExec pet-care business management platform (daycare, boarding, grooming, training, and scheduled services). Every endpoint, path, and scope in this document is transcribed directly from PetExec's own public GitHub examples repository (https://github.com/PetExec/API-Examples), which is the only complete source of PetExec API technical detail publicly available - PetExec's interactive apidoc reference at https://secure.petexec.net/api/apidoc/index.html is a JavaScript-rendered single-page app and does not expose a machine-readable spec. Access requires an active PetExec account. Client credentials (client_id / client_secret) are self-issued from Company Preferences > Misc. Settings > Maintain API Applications inside the PetExec console, then exchanged for a scoped Bearer token via an OAuth2 Resource Owner Password Credentials (password) grant against POST /token. PetExec was acquired by Togetherwork in November 2024 and is being migrated toward Gingr; PetExec is no longer accepting new customers, but this API surface is documented as live for existing accounts as of the review date. Some of PetExec's own published examples are internally inconsistent (mixed "user-card" / "userCard" casing, a menu example that appears to call the wrong path) - those inconsistencies are called out inline below rather than silently corrected.
  version: '1.0'
  contact:
    name: PetExec
    url: https://www.petexec.net/features/api-for-developers
servers:
- url: https://secure.petexec.net/api
  description: PetExec production API (used by nearly all official PHP and most JavaScript examples)
- url: https://beta.petexec.net/api
  description: PetExec beta/staging API (referenced by some official JavaScript examples for the same paths; not separately documented)
security:
- bearerAuth: []
tags:
- name: Reports
  description: Billing and statistics reports.
paths:
  /report/billing-report/{start_date}/{end_date}/{pay_type}/{owner_portal}:
    get:
      operationId: getBillingReport
      tags:
      - Reports
      summary: Get a billing report
      description: Requires the report_read scope.
      parameters:
      - $ref: '#/components/parameters/StartDate'
      - $ref: '#/components/parameters/EndDate'
      - name: pay_type
        in: path
        required: true
        description: All Types, Cash, Check, Credit, Clover Mini, Gift Certificate, No Payment, Paw Point Redemption, Refund, Tradeout, or Unprocessed.
        schema:
          type: string
      - name: owner_portal
        in: path
        required: true
        description: yes or no
        schema:
          type: string
          enum:
          - true
          - 'no'
      responses:
        '200':
          description: The billing report.
          content:
            application/json:
              schema:
                type: object
                additionalProperties: true
        '401':
          $ref: '#/components/responses/Unauthorized'
  /report/statistics-report/{start_date}/{end_date}/{taxable_only}:
    get:
      operationId: getStatisticsReport
      tags:
      - Reports
      summary: Get a statistics report
      parameters:
      - $ref: '#/components/parameters/StartDate'
      - $ref: '#/components/parameters/EndDate'
      - name: taxable_only
        in: path
        required: true
        description: yes or no
        schema:
          type: string
          enum:
          - true
          - 'no'
      responses:
        '200':
          description: The statistics report.
          content:
            application/json:
              schema:
                type: object
                additionalProperties: true
        '401':
          $ref: '#/components/responses/Unauthorized'
  /report/statistics-report/{start_date}/{end_date}/breakdown/{pay_type}:
    get:
      operationId: getStatisticsReportByPayType
      tags:
      - Reports
      summary: Get a statistics report broken down by payment type
      parameters:
      - $ref: '#/components/parameters/StartDate'
      - $ref: '#/components/parameters/EndDate'
      - name: pay_type
        in: path
        required: true
        description: Cash, Check, Credit, Clover Mini, Tradeout, Refund, No Payment, Gift Certificate, Paw Point Redemption, Not Processed, Discount, Tax, or Tip / Gratuity.
        schema:
          type: string
      responses:
        '200':
          description: The statistics report broken down by payment type.
          content:
            application/json:
              schema:
                type: object
                additionalProperties: true
        '401':
          $ref: '#/components/responses/Unauthorized'
  /report/statistics-report/{start_date}/{end_date}/breakdown/service/{service_id}:
    get:
      operationId: getStatisticsReportByServiceType
      tags:
      - Reports
      summary: Get a statistics report broken down by service
      parameters:
      - $ref: '#/components/parameters/StartDate'
      - $ref: '#/components/parameters/EndDate'
      - name: service_id
        in: path
        required: true
        schema:
          type: integer
      responses:
        '200':
          description: The statistics report broken down by service.
          content:
            application/json:
              schema:
                type: object
                additionalProperties: true
        '401':
          $ref: '#/components/responses/Unauthorized'
components:
  schemas:
    Error:
      type: object
      additionalProperties: true
  responses:
    Unauthorized:
      description: Missing, invalid, or expired Bearer token, or insufficient scope.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
  parameters:
    EndDate:
      name: end_date
      in: path
      required: true
      description: yyyy-mm-dd
      schema:
        type: string
        format: date
    StartDate:
      name: start_date
      in: path
      required: true
      description: yyyy-mm-dd
      schema:
        type: string
        format: date
  securitySchemes:
    bearerAuth:
      type: http
      scheme: bearer
      description: 'OAuth2 password-grant access token obtained from POST /token. Passed as `Authorization: Bearer YOUR_ACCESS_TOKEN`.'