Keap Reporting API

The Reporting API from Keap — 4 operation(s) for reporting.

Operations 4

POST /rest/v2/reporting/reports/{report_id}:run Run a Report #
GET /rest/v2/reporting/reports List Reports #
GET /rest/v2/reporting/reports/{report_id} Retrieve Report #
GET /rest/v2/reporting/reports/{report_id}/model Retrieve Report Model #

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/keap-reporting-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

keap-reporting-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: Keap Reporting API
  description: Keap Public API Documentation
  termsOfService: https://www.thryv.com/terms-of-use
  contact:
    name: Keap
    url: https://developer.keap.com/get-support
    email: api.keap@thryv.com
  license:
    name: Apache 2.0
    url: https://www.apache.org/licenses/LICENSE-2.0
  version: v2
servers:
- url: https://api.infusionsoft.com/crm
security:
- oauth2: []
tags:
- name: Reporting
paths:
  /rest/v2/reporting/reports/{report_id}:run:
    post:
      tags:
      - Reporting
      summary: Run a Report
      description: Runs a report as defined in the application (identified as Saved Search)<br/><span style='color:red'>Deprecated as of v2</span>
      operationId: runReport
      parameters:
      - name: report_id
        in: path
        description: The unique identifier of the report (Saved Search) to execute
        required: true
        schema:
          type: string
        example: 123
      - name: runReportRequest
        in: query
        required: true
        schema:
          $ref: '#/components/schemas/RunReportRequest'
      responses:
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '403':
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '409':
          description: Conflict
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '500':
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '501':
          description: Method Not Implemented
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '405':
          description: Method Not Allowed
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ReportExecutionResult'
  /rest/v2/reporting/reports:
    get:
      tags:
      - Reporting
      summary: List Reports
      description: Retrieves a list of Reports as defined in the application (identified as Saved Search)<br/><span style='color:red'>Deprecated as of v2</span>
      operationId: listReports
      parameters:
      - name: filter
        in: query
        description: "Filter to apply, allowed fields are:\n- (String) `name`\n- (DateTime) `since_created_time`\n- (DateTime) `until_created_time`\n\nYou will need to apply the `==` operator to check the equality of one of the filters with your searched\n word, in the encoded form `%3D%3D`. For the filters listed above, here are some examples:\n- `filter=name%3D%3DMonthly%20Sales`\n- `filter=since_created_time%3D%3D2024-01-01`\n"
        required: false
        schema:
          type: string
        example: name%3D%3DMonthly%20Sales
      - name: page_token
        in: query
        description: Page token
        required: false
        schema:
          type: string
      - name: order_by
        in: query
        description: 'Attribute and direction to order items.

          One of the following fields:

          - `name`

          - `created_time`


          One of the following directions:

          - `asc`

          - `desc`'
        required: false
        schema:
          type: string
        example: name asc
      - name: page_size
        in: query
        description: Total number of items to return per page
        required: false
        schema:
          type: integer
          format: int32
          maximum: 1000
          minimum: 0
        example: 0
      responses:
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '403':
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '409':
          description: Conflict
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '500':
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '501':
          description: Method Not Implemented
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '405':
          description: Method Not Allowed
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ListReportsResponse'
  /rest/v2/reporting/reports/{report_id}:
    get:
      tags:
      - Reporting
      summary: Retrieve Report
      description: Retrieves information about a Report as defined in the application (identified as Saved Search)<br/><span style='color:red'>Deprecated as of v2</span>
      operationId: retrieveReport
      parameters:
      - name: report_id
        in: path
        description: The unique identifier of the report (Saved Search)
        required: true
        schema:
          type: string
        example: 123
      responses:
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '403':
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '409':
          description: Conflict
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '500':
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '501':
          description: Method Not Implemented
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '405':
          description: Method Not Allowed
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Report'
  /rest/v2/reporting/reports/{report_id}/model:
    get:
      tags:
      - Reporting
      summary: Retrieve Report Model
      description: Retrieves the list of fields available for a Report (Saved Search). The returned field `name` values can be used in the `fields` parameter when running the report.
      operationId: retrieveReportModel
      parameters:
      - name: report_id
        in: path
        description: The unique identifier of the report (Saved Search)
        required: true
        schema:
          type: string
        example: 123
      responses:
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '403':
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '409':
          description: Conflict
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '500':
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '501':
          description: Method Not Implemented
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '405':
          description: Method Not Allowed
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ReportModel'
components:
  schemas:
    Report:
      type: object
      properties:
        id:
          type: string
          description: The unique identifier of the report (Saved Search)
          example: 123
        name:
          type: string
          description: The name of the report
          example: Monthly Sales Report
        updated_time:
          type: string
          description: The last update timestamp
          example: '2024-01-15T10:30:00Z'
        created_time:
          type: string
          description: The creation timestamp
          example: '2024-01-01T08:00:00Z'
        user_ids:
          type: array
          description: A list of Users who have access to this Saved Search, or ALL_USERS if visible to all
          example:
          - '1'
          - '2'
          - ALL_USERS
          items:
            type: string
    ReportEntryValue:
      type: object
      properties:
        field_name:
          type: string
          description: The name of the field/column
          example: contact_email
        value:
          type: string
          description: The value of the field
          example: john.smith@example.com
    ErrorDetails:
      type: object
      properties:
        domain:
          type: string
        resource:
          type: string
    ReportField:
      type: object
      properties:
        name:
          type: string
          description: The field name as accepted by the report execution `fields` parameter
          example: Id
        label:
          type: string
          description: The human-readable label for the field
          example: ID
    RunReportRequest:
      type: object
      properties:
        page_token:
          type: string
        order_by:
          type: string
        page_size:
          type: integer
          format: int32
        fields:
          type: string
    ListReportsResponse:
      type: object
      properties:
        reports:
          type: array
          items:
            $ref: '#/components/schemas/Report'
        next_page_token:
          type: string
    ReportExecutionResult:
      type: object
      properties:
        results:
          type: array
          description: The list of report result records
          items:
            $ref: '#/components/schemas/ReportEntryRecord'
        page_token:
          type: string
          description: Token for retrieving the next page of results
          example: eyJsYXN0Um93IjoxMDB9
    ReportModel:
      type: object
      properties:
        fields:
          type: array
          description: The list of fields available for this Report (Saved Search)
          items:
            $ref: '#/components/schemas/ReportField'
    ReportEntryRecord:
      type: object
      properties:
        columns:
          type: array
          description: The set of column values for this record
          items:
            $ref: '#/components/schemas/ReportEntryValue'
          uniqueItems: true
    Error:
      type: object
      properties:
        code:
          type: integer
          format: int32
        message:
          type: string
        status:
          type: string
        details:
          type: array
          items:
            $ref: '#/components/schemas/ErrorDetails'
  securitySchemes:
    oauth2:
      type: oauth2
      flows:
        authorizationCode:
          authorizationUrl: https://accounts.infusionsoft.com/app/oauth/authorize
          tokenUrl: https://api.infusionsoft.com/token
          scopes: {}