Avoca Scheduler Analytics (v0) API
Simple Scheduler analytics — legacy flat endpoints
Simple Scheduler analytics — legacy flat endpoints
Every API here is available over the APIs.io API and to AI agents over MCP.
One button, every client — Claude, Cursor, VS Code and the rest.
https://apis.io/mcp
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.curl "https://apis.io/api/v1/apis/avoca:avoca-scheduler-analytics-v0-api"
curl "https://apis.io/api/v1/apis?limit=25"
Discovery needs no key. Ratings and market analysis are Pro.
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: 3.2.0
info:
title: Avoca Enterprise Scheduler Analytics (v0) API
description: 'Read-only programmatic access to Avoca data: calls, transcripts, leads, coach evaluations, Simple Scheduler sessions and analytics, and outbound texting activity.'
version: 1.3.0
servers:
- url: https://enterprise-api.avoca.ai
security:
- bearerAuth: []
tags:
- name: Scheduler Analytics (v0)
description: Simple Scheduler analytics — legacy flat endpoints
paths:
/api/scheduler-analytics:
get:
tags:
- Scheduler Analytics (v0)
summary: Get scheduler analytics
description: 'Detailed Simple Scheduler analytics. Select which metric blocks to include with the `metrics` parameter: `funnel`, `bookings`, `chart`, `utm`, `google_ads`, `service_areas`, `issue_types`, `customer_events`. Requires the `read:scheduler_analytics` permission.'
operationId: getSchedulerAnalytics
parameters:
- $ref: '#/components/parameters/xTeamId'
- $ref: '#/components/parameters/startDate7d'
- $ref: '#/components/parameters/endDateNow'
- $ref: '#/components/parameters/timezone'
- name: scheduler_id
in: query
description: Filter to a specific scheduler
schema:
type: integer
- name: metrics
in: query
description: 'Comma-separated metric blocks to include (default: all)'
schema:
type: string
- $ref: '#/components/parameters/limit1000'
- $ref: '#/components/parameters/offset'
responses:
'200':
description: Requested analytics blocks
content:
application/json:
schema:
type: object
properties:
data:
$ref: '#/components/schemas/SchedulerAnalytics'
pagination:
$ref: '#/components/schemas/OffsetPagination'
metadata:
type: object
properties:
startDate:
type: string
format: date-time
endDate:
type: string
format: date-time
timezone:
type: string
schedulerId:
type:
- integer
- 'null'
metricsRequested:
type: array
items:
type: string
'400':
$ref: '#/components/responses/BadRequest'
'401':
$ref: '#/components/responses/Unauthorized'
/api/scheduler-analytics/summary:
get:
tags:
- Scheduler Analytics (v0)
summary: Get scheduler analytics summary
description: Summary Simple Scheduler stats for today, this week, and this month. Requires the `read:scheduler_analytics` permission.
operationId: getSchedulerAnalyticsSummary
parameters:
- $ref: '#/components/parameters/xTeamId'
- $ref: '#/components/parameters/timezone'
responses:
'200':
description: Summary stats
content:
application/json:
schema:
type: object
properties:
data:
type: object
properties:
today:
$ref: '#/components/schemas/PeriodSummary'
thisWeek:
$ref: '#/components/schemas/PeriodSummary'
thisMonth:
$ref: '#/components/schemas/PeriodSummary'
metadata:
type: object
properties:
timezone:
type: string
generatedAt:
type: string
format: date-time
'401':
$ref: '#/components/responses/Unauthorized'
/api/simple_scheduler_booking_requests:
get:
tags:
- Scheduler Analytics (v0)
summary: List Simple Scheduler booking requests
description: Booking requests submitted through Simple Scheduler. Supports offset pagination (`offset` + `limit`, returns `meta.total`) or cursor pagination (`cursor` = `created_at` from a previous page; response includes `next_cursor` and `has_more`). Requires the `read:scheduler_analytics` permission.
operationId: listSimpleSchedulerBookingRequests
parameters:
- $ref: '#/components/parameters/xTeamId'
- name: status
in: query
description: Filter by request status
schema:
type: string
- name: scheduler_id
in: query
description: Filter to a specific scheduler
schema:
type: integer
- name: has_utm
in: query
description: When `true`, only requests with UTM attribution
schema:
type: boolean
- name: cursor
in: query
description: ISO 8601 `created_at` cursor from a previous page (cursor mode)
schema:
type: string
format: date-time
- $ref: '#/components/parameters/limit500'
- $ref: '#/components/parameters/offset'
responses:
'200':
description: Booking requests
content:
application/json:
schema:
type: object
properties:
data:
type: array
items:
type: object
properties:
id:
type: integer
team_id:
type: integer
scheduler_id:
type: integer
status:
type: string
st_job_id:
type:
- integer
- 'null'
description: ServiceTitan job ID when the request produced a job
created_at:
type: string
format: date-time
request_data:
type: object
description: Raw booking request payload
meta:
type: object
properties:
total:
type:
- integer
- 'null'
description: Total rows (offset mode only)
next_cursor:
type:
- string
- 'null'
description: Cursor for the next page (cursor mode)
has_more:
type: boolean
'400':
$ref: '#/components/responses/BadRequest'
'401':
$ref: '#/components/responses/Unauthorized'
/api/simple_scheduler_config:
get:
tags:
- Scheduler Analytics (v0)
summary: List Simple Scheduler configs
description: Scheduler configurations for the team. Team is resolved from `x-team-id` or the optional `team_id` query parameter (multi-team keys must have access to that team). Requires the `read:scheduler_analytics` permission.
operationId: listSimpleSchedulerConfigs
parameters:
- $ref: '#/components/parameters/xTeamId'
- name: team_id
in: query
description: Target team (alternative to the x-team-id header for multi-team keys)
schema:
type: integer
responses:
'200':
description: Scheduler configs
content:
application/json:
schema:
type: object
properties:
data:
type: array
items:
$ref: '#/components/schemas/SchedulerConfig'
'403':
$ref: '#/components/responses/Forbidden'
components:
responses:
Forbidden:
description: API key lacks the required permission or team access
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
Unauthorized:
description: Missing or invalid API key
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
BadRequest:
description: Invalid parameters
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
parameters:
xTeamId:
name: x-team-id
in: header
description: Target team ID. Required for multi-team (`enterprise_all_teams` / `portfolio_all_teams`) keys on v0 endpoints; single-team keys are locked to their team and omit it.
schema:
type: integer
offset:
name: offset
in: query
description: Pagination offset (default 0)
schema:
type: integer
default: 0
limit500:
name: limit
in: query
description: Results per page (default 50, max 500)
schema:
type: integer
default: 50
maximum: 500
timezone:
name: timezone
in: query
description: IANA timezone for date calculations (default America/New_York)
schema:
type: string
default: America/New_York
limit1000:
name: limit
in: query
description: Results per page (default 100, max 1000)
schema:
type: integer
default: 100
maximum: 1000
endDateNow:
name: end_date
in: query
description: End of date range (ISO 8601; default now)
schema:
type: string
format: date-time
startDate7d:
name: start_date
in: query
description: Start of date range (ISO 8601; default 7 days ago)
schema:
type: string
format: date-time
schemas:
Error:
type: object
properties:
error:
type: string
description: Error type
message:
type: string
description: Human-readable description (newer endpoints)
required:
- error
UtmRow:
type: object
properties:
source:
type: string
examples:
- google
medium:
type: string
examples:
- cpc
campaign:
type: string
term:
type: string
content:
type: string
sessions:
type: integer
conversions:
type: integer
SchedulerAnalytics:
type: object
description: 'Metric blocks are present only when requested via the `metrics` parameter (default: all).'
properties:
funnel:
type: object
properties:
sessions:
type: integer
bookingStarted:
type: integer
customerInfoCompleted:
type: integer
bookingCompleted:
type: integer
conversionRate:
type: number
bookings:
type: object
properties:
total:
type: integer
avgBookingTimeSeconds:
type: number
chartData:
type: array
items:
type: object
properties:
date:
type: string
format: date
sessions:
type: integer
conversions:
type: integer
utmData:
type: array
items:
$ref: '#/components/schemas/UtmRow'
googleAdsData:
type: array
items:
type: object
properties:
gclid:
type: string
wbraid:
type: string
gbraid:
type: string
sessions:
type: integer
conversions:
type: integer
serviceAreaData:
type: array
items:
type: object
properties:
serviceArea:
type: string
count:
type: integer
issueTypeData:
type: array
items:
type: object
properties:
issueType:
type: string
count:
type: integer
customerEvents:
type: array
description: Individual customer sessions with PII (paginated via `limit`/`offset`)
items:
type: object
properties:
sessionId:
type: string
status:
type: string
customerInfo:
type: object
properties:
name:
type:
- string
- 'null'
email:
type:
- string
- 'null'
phone:
type:
- string
- 'null'
address:
type:
- string
- 'null'
issueType:
type:
- string
- 'null'
jobType:
type:
- string
- 'null'
selectedDate:
type:
- string
- 'null'
selectedTime:
type:
- string
- 'null'
utmSource:
type:
- string
- 'null'
gclid:
type:
- string
- 'null'
conversionValue:
type:
- number
- 'null'
lastActivity:
type:
- string
- 'null'
format: date-time
OffsetPagination:
type: object
properties:
limit:
type: integer
offset:
type: integer
has_more:
type: boolean
PeriodSummary:
type: object
properties:
sessions:
type: integer
examples:
- 312
bookings:
type: integer
examples:
- 89
conversionRate:
type: number
examples:
- 28.5
SchedulerConfig:
type: object
properties:
id:
type: integer
team_id:
type: integer
name:
type: string
created_at:
type: string
format: date-time
updated_at:
type: string
format: date-time
securitySchemes:
bearerAuth:
type: http
scheme: bearer
description: API key in the format `avoca_<64 hex characters>`