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.
Call it yourself
curl for this page
This API
curl "https://apis.io/api/v1/apis/weave:weave-hq-contacts-api"
All apis
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.
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
openapi: 3.2.0
info:
title: Weave Contacts 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: Contacts
description: Patient/customer contacts and contact info.
paths:
/v1/contacts:
get:
operationId: listContacts
tags:
- Contacts
summary: List contacts
description: Lists the contacts (patients/customers) for a location.
parameters:
- $ref: '#/components/parameters/LocationId'
- $ref: '#/components/parameters/Limit'
responses:
'200':
description: A list of contacts.
content:
application/json:
schema:
type: object
properties:
data:
type: array
items:
$ref: '#/components/schemas/Contact'
'401':
$ref: '#/components/responses/Unauthorized'
/v1/contacts/search:
post:
operationId: searchContacts
tags:
- Contacts
summary: Search contacts
description: Searches contacts by name, phone, email, or other attributes.
parameters:
- $ref: '#/components/parameters/LocationId'
requestBody:
required: true
content:
application/json:
schema:
type: object
properties:
query:
type: string
responses:
'200':
description: Matching contacts.
content:
application/json:
schema:
type: object
properties:
data:
type: array
items:
$ref: '#/components/schemas/Contact'
'401':
$ref: '#/components/responses/Unauthorized'
/v1/contact-infos:
get:
operationId: listContactInfos
tags:
- Contacts
summary: List contact info records
description: Lists contact-info records (phone numbers, emails) for a location's contacts.
parameters:
- $ref: '#/components/parameters/LocationId'
responses:
'200':
description: A list of contact info records.
content:
application/json:
schema:
type: object
properties:
data:
type: array
items:
type: object
additionalProperties: true
'401':
$ref: '#/components/responses/Unauthorized'
/v1/contacts/block:
post:
operationId: blockContact
tags:
- Contacts
summary: Block a contact
description: Blocks a contact from receiving messages from the location.
parameters:
- $ref: '#/components/parameters/LocationId'
requestBody:
required: true
content:
application/json:
schema:
type: object
properties:
person_id:
type: string
responses:
'200':
description: Block confirmation.
content:
application/json:
schema:
type: object
additionalProperties: true
'401':
$ref: '#/components/responses/Unauthorized'
/v1/contacts/unblock:
post:
operationId: unblockContact
tags:
- Contacts
summary: Unblock a contact
description: Unblocks a previously blocked contact.
parameters:
- $ref: '#/components/parameters/LocationId'
requestBody:
required: true
content:
application/json:
schema:
type: object
properties:
person_id:
type: string
responses:
'200':
description: Unblock confirmation.
content:
application/json:
schema:
type: object
additionalProperties: true
'401':
$ref: '#/components/responses/Unauthorized'
components:
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
schemas:
Error:
type: object
properties:
error:
type: object
properties:
code:
type: string
message:
type: string
Contact:
type: object
properties:
id:
type: string
format: uuid
first_name:
type: string
last_name:
type: string
mobile_phone:
type: string
email:
type: string
format: email
blocked:
type: boolean
responses:
Unauthorized:
description: Missing or invalid access token.
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
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`.'