openapi: 3.0.0
info:
title: Vapi Analytics API
description: Voice AI for developers.
version: '1.0'
contact: {}
servers:
- url: https://api.vapi.ai
tags:
- name: Analytics
paths:
/analytics:
post:
operationId: AnalyticsController_query
summary: Create Analytics Queries
parameters: []
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/AnalyticsQueryDTO'
responses:
'200':
description: ''
content:
application/json:
schema:
type: array
items:
$ref: '#/components/schemas/AnalyticsQueryResult'
'201':
description: ''
tags:
- Analytics
security:
- bearer: []
components:
schemas:
AnalyticsQueryDTO:
type: object
properties:
queries:
description: This is the list of metric queries you want to perform.
type: array
items:
$ref: '#/components/schemas/AnalyticsQuery'
required:
- queries
AnalyticsOperation:
type: object
properties:
operation:
type: string
description: This is the aggregation operation you want to perform.
enum:
- sum
- avg
- count
- min
- max
- history
column:
type: string
description: This is the columns you want to perform the aggregation operation on.
enum:
- id
- cost
- costBreakdown.llm
- costBreakdown.stt
- costBreakdown.tts
- costBreakdown.vapi
- costBreakdown.transport
- costBreakdown.analysisBreakdown.summary
- costBreakdown.transcriber
- costBreakdown.ttsCharacters
- costBreakdown.llmPromptTokens
- costBreakdown.llmCompletionTokens
- costBreakdown.llmCachedPromptTokens
- duration
- concurrency
- minutesUsed
alias:
type: string
description: This is the alias for column name returned. Defaults to `${operation}${column}`.
maxLength: 40
required:
- operation
- column
TimeRange:
type: object
properties:
step:
type: string
description: 'This is the time step for aggregations.
If not provided, defaults to returning for the entire time range.'
enum:
- second
- minute
- hour
- day
- week
- month
- quarter
- year
- decade
- century
- millennium
start:
format: date-time
type: string
description: 'This is the start date for the time range.
If not provided, defaults to the 7 days ago.'
end:
format: date-time
type: string
description: 'This is the end date for the time range.
If not provided, defaults to now.'
timezone:
type: string
description: 'This is the timezone you want to set for the query.
If not provided, defaults to UTC.'
AnalyticsQueryResult:
type: object
properties:
name:
type: string
description: This is the unique key for the query.
timeRange:
description: This is the time range for the query.
allOf:
- $ref: '#/components/schemas/TimeRange'
result:
description: "This is the result of the query, a list of unique groups with result of their aggregations.\n\nExample:\n\"result\": [\n { \"date\": \"2023-01-01\", \"assistantId\": \"123\", \"endedReason\": \"customer-ended-call\", \"sumDuration\": 120, \"avgCost\": 10.5 },\n { \"date\": \"2023-01-02\", \"assistantId\": \"123\", \"endedReason\": \"customer-did-not-give-microphone-permission\", \"sumDuration\": 0, \"avgCost\": 0 },\n // Additional results\n]"
type: array
items:
type: object
required:
- name
- timeRange
- result
VariableValueGroupBy:
type: object
properties:
key:
type: string
description: This is the key of the variable value to group by.
maxLength: 100
required:
- key
AnalyticsQuery:
type: object
properties:
table:
type: string
description: This is the table you want to query.
enum:
- call
- subscription
groupBy:
type: array
description: This is the list of columns you want to group by.
enum:
- type
- assistantId
- endedReason
- analysis.successEvaluation
- status
items:
type: string
enum:
- type
- assistantId
- endedReason
- analysis.successEvaluation
- status
groupByVariableValue:
description: This is the list of variable value keys you want to group by.
type: array
items:
$ref: '#/components/schemas/VariableValueGroupBy'
name:
type: string
description: This is the name of the query. This will be used to identify the query in the response.
maxLength: 40
timeRange:
description: This is the time range for the query.
allOf:
- $ref: '#/components/schemas/TimeRange'
operations:
description: This is the list of operations you want to perform.
type: array
items:
$ref: '#/components/schemas/AnalyticsOperation'
required:
- table
- name
- operations
securitySchemes:
bearer:
scheme: bearer
bearerFormat: Bearer
type: http
description: Retrieve your API Key from [Dashboard](dashboard.vapi.ai).