Keen Saved Queries API

The Keen Saved Queries API enables developers to create and manage reusable query definitions. Saved queries store query parameters as named resources that can be retrieved and executed later, enabling consistent analytics across applications and simplifying the management of complex query configurations.

OpenAPI Specification

keen-saved-queries-api-openapi.yml Raw ↑
openapi: 3.1.0
info:
  title: Keen Cached Queries Saved Queries API
  description: The Keen Cached Queries API allows developers to create, manage, and retrieve pre-defined queries that are automatically refreshed on a schedule. Cached queries improve performance for frequently accessed analytics by storing pre-computed results, making them ideal for powering dashboards and embedded analytics experiences without incurring per-request rate limits.
  version: '3.0'
  contact:
    name: Keen Support
    url: https://keen.io/support
  license:
    name: Proprietary
    url: https://keen.io/terms-of-service
servers:
- url: https://api.keen.io/3.0
  description: Keen production API
security:
- masterKey: []
- readKey: []
tags:
- name: Saved Queries
  description: Create, manage, and execute reusable saved queries.
paths:
  /projects/{projectId}/queries/saved:
    parameters:
    - $ref: '#/components/parameters/projectId'
    get:
      operationId: listSavedQueries
      summary: Keen List saved queries
      description: Returns the list of saved queries defined for the project. Requires a Master Key.
      tags:
      - Saved Queries
      responses:
        '200':
          description: List of saved query metadata.
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/SavedQuery'
        '401':
          $ref: '#/components/responses/Unauthorized'
  /projects/{projectId}/queries/saved/{queryName}:
    parameters:
    - $ref: '#/components/parameters/projectId'
    - $ref: '#/components/parameters/queryName'
    get:
      operationId: getSavedQuery
      summary: Keen Get a saved query
      description: Returns the definition of a single saved query.
      tags:
      - Saved Queries
      responses:
        '200':
          description: Saved query definition.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SavedQuery'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '404':
          description: Saved query not found.
    put:
      operationId: createOrUpdateSavedQuery
      summary: Keen Create or update a saved query
      description: Creates a new saved query or updates an existing one with the given name. Requires a Master Key.
      tags:
      - Saved Queries
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/SavedQueryDefinition'
      responses:
        '201':
          description: Saved query created or updated.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SavedQuery'
        '401':
          $ref: '#/components/responses/Unauthorized'
    delete:
      operationId: deleteSavedQuery
      summary: Keen Delete a saved query
      description: Removes a saved query from the project. Requires a Master Key.
      tags:
      - Saved Queries
      responses:
        '204':
          description: Saved query deleted.
        '401':
          $ref: '#/components/responses/Unauthorized'
  /projects/{projectId}/queries/saved/{queryName}/result:
    parameters:
    - $ref: '#/components/parameters/projectId'
    - $ref: '#/components/parameters/queryName'
    get:
      operationId: runSavedQuery
      summary: Keen Run a saved query
      description: Executes the saved query and returns its result. Requires a Read Key.
      tags:
      - Saved Queries
      responses:
        '200':
          description: Saved query result.
          content:
            application/json:
              schema:
                type: object
                properties:
                  result: {}
        '401':
          $ref: '#/components/responses/Unauthorized'
components:
  schemas:
    SavedQuery:
      allOf:
      - $ref: '#/components/schemas/SavedQueryDefinition'
      - type: object
        properties:
          query_name:
            type: string
          last_modified_date:
            type: string
            format: date-time
    SavedQueryDefinition:
      type: object
      required:
      - query
      properties:
        query:
          type: object
          additionalProperties: true
          description: Underlying query definition (analysis type and parameters).
        metadata:
          type: object
          additionalProperties: true
          description: Optional metadata for the saved query.
    Error:
      type: object
      properties:
        error_code:
          type: string
        message:
          type: string
  parameters:
    queryName:
      name: queryName
      in: path
      required: true
      schema:
        type: string
      description: Name of the saved query.
    projectId:
      name: projectId
      in: path
      required: true
      schema:
        type: string
      description: Keen project identifier.
  responses:
    Unauthorized:
      description: Missing or invalid API key.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
  securitySchemes:
    masterKey:
      type: apiKey
      in: header
      name: Authorization
      description: Keen Master Key for management endpoints.
    readKey:
      type: apiKey
      in: header
      name: Authorization
      description: Keen Read Key for retrieving cached results.
externalDocs:
  description: Keen Cached Queries API Documentation
  url: https://keen.io/docs/api/#cached-queries