Weave Phone & Calls API
VoIP call records, recordings, voicemails, and call queues.
VoIP call records, recordings, voicemails, and call queues.
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/weave:weave-hq-phone-calls-api"
curl "https://apis.io/api/v1/apis?limit=25"
Calls without X-API-Key need no key. Calls with it need a paid plan — get a 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: 3.2.0
info:
title: Weave Phone & Calls API
description: The Weave API is the developer surface of the Weave customer/patient communication and payments platform for small healthcare businesses (dental, optometry, veterinary, medical, and specialty practices).
version: '1.0'
contact:
name: Weave
url: https://www.getweave.com
license:
name: Proprietary
url: https://www.getweave.com/legal/terms/
servers:
- url: https://api.weaveconnect.com
description: Weave production API
security:
- oauth2: []
- bearerAuth: []
tags:
- name: Phone & Calls
description: VoIP call records, recordings, voicemails, and call queues.
paths:
/v1/call-records:
get:
operationId: listCallRecords
tags:
- Phone & Calls
summary: List call records
description: Lists inbound and outbound call records for a location.
parameters:
- $ref: '#/components/parameters/LocationId'
- $ref: '#/components/parameters/Limit'
responses:
'200':
description: A list of call records.
content:
application/json:
schema:
type: object
properties:
data:
type: array
items:
$ref: '#/components/schemas/CallRecord'
'401':
$ref: '#/components/responses/Unauthorized'
/v1/call-recordings:
get:
operationId: listCallRecordings
tags:
- Phone & Calls
summary: List call recordings
description: Lists available call recordings for a location.
parameters:
- $ref: '#/components/parameters/LocationId'
responses:
'200':
description: A list of call recordings.
content:
application/json:
schema:
type: object
properties:
data:
type: array
items:
$ref: '#/components/schemas/CallRecording'
'401':
$ref: '#/components/responses/Unauthorized'
/v1/call-recording/signed-url:
get:
operationId: getCallRecordingSignedUrl
tags:
- Phone & Calls
summary: Get a call recording signed URL
description: Returns a short-lived signed URL to download a specific call recording.
parameters:
- $ref: '#/components/parameters/LocationId'
- name: recording_id
in: query
required: true
schema:
type: string
responses:
'200':
description: A signed download URL.
content:
application/json:
schema:
type: object
properties:
url:
type: string
format: uri
expires_at:
type: string
format: date-time
'401':
$ref: '#/components/responses/Unauthorized'
'404':
$ref: '#/components/responses/NotFound'
/v1/voicemail-messages:
get:
operationId: listVoicemailMessages
tags:
- Phone & Calls
summary: List voicemail messages
description: Lists voicemail messages for a location.
parameters:
- $ref: '#/components/parameters/LocationId'
responses:
'200':
description: A list of voicemails.
content:
application/json:
schema:
type: object
properties:
data:
type: array
items:
$ref: '#/components/schemas/Voicemail'
'401':
$ref: '#/components/responses/Unauthorized'
/v1/call-queues:
get:
operationId: listCallQueues
tags:
- Phone & Calls
summary: List call queues
description: Lists the call queues configured for a location.
parameters:
- $ref: '#/components/parameters/LocationId'
responses:
'200':
description: A list of call queues.
content:
application/json:
schema:
type: object
properties:
data:
type: array
items:
type: object
additionalProperties: true
'401':
$ref: '#/components/responses/Unauthorized'
/v1/call-queues/metrics:
get:
operationId: getCallQueueMetrics
tags:
- Phone & Calls
summary: Get call queue metrics
description: Returns performance metrics for the location's call queues.
parameters:
- $ref: '#/components/parameters/LocationId'
responses:
'200':
description: Call queue metrics.
content:
application/json:
schema:
type: object
additionalProperties: true
'401':
$ref: '#/components/responses/Unauthorized'
/v1/department/phone-numbers:
get:
operationId: listDepartmentPhoneNumbers
tags:
- Phone & Calls
summary: List department phone numbers
description: Lists phone numbers assigned to departments within a location.
parameters:
- $ref: '#/components/parameters/LocationId'
responses:
'200':
description: A list of department phone numbers.
content:
application/json:
schema:
type: object
properties:
data:
type: array
items:
$ref: '#/components/schemas/PhoneNumber'
'401':
$ref: '#/components/responses/Unauthorized'
components:
schemas:
PhoneNumber:
type: object
properties:
id:
type: string
number:
type: string
label:
type: string
Error:
type: object
properties:
error:
type: object
properties:
code:
type: string
message:
type: string
CallRecording:
type: object
properties:
id:
type: string
format: uuid
call_record_id:
type: string
format: uuid
duration_seconds:
type: integer
created_at:
type: string
format: date-time
Voicemail:
type: object
properties:
id:
type: string
format: uuid
from:
type: string
duration_seconds:
type: integer
viewed:
type: boolean
created_at:
type: string
format: date-time
CallRecord:
type: object
properties:
id:
type: string
format: uuid
direction:
type: string
enum:
- inbound
- outbound
from:
type: string
to:
type: string
duration_seconds:
type: integer
person_id:
type: string
started_at:
type: string
format: date-time
responses:
NotFound:
description: The requested resource was not found.
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
Unauthorized:
description: Missing or invalid access token.
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
parameters:
LocationId:
name: location_id
in: query
required: false
description: The Weave location (sub-account) the request is scoped to. Required on most endpoints; may alternatively be supplied via a location header.
schema:
type: string
format: uuid
Limit:
name: limit
in: query
required: false
description: Maximum number of items to return.
schema:
type: integer
default: 50
securitySchemes:
oauth2:
type: oauth2
description: 'OAuth 2.0 access token issued by Weave''s OIDC provider. Authorization and token endpoints are served under https://auth.weaveconnect.com/oauth2/default (issuer https://oidc.weaveconnect.com). Present as `Authorization: Bearer ACCESS_TOKEN`.'
flows:
authorizationCode:
authorizationUrl: https://auth.weaveconnect.com/oauth2/default/v1/authorize
tokenUrl: https://auth.weaveconnect.com/oauth2/default/v1/token
scopes: {}
bearerAuth:
type: http
scheme: bearer
description: 'OAuth 2.0 bearer access token passed as `Authorization: Bearer ACCESS_TOKEN`.'