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.
openapi: 3.2.0
info:
title: KaiCalls Public Consent Proof API
version: '2026-06-05'
description: Machine-readable surface for KaiCalls external developers and client agents.
servers:
- url: https://www.kaicalls.com/api
security:
- bearerAuth: []
tags:
- name: Consent Proof
paths:
/v1/consent-proof:
get:
summary: Consent proof for one phone number at a business (leads:read)
description: 'Mirrors the get_consent_proof tool. For service texts, marketing texts, calls and WhatsApp: current status, when consent was given or revoked, the source (web form, keyword, call, manual, API), the exact wording shown and the stored proof payload (form page, form time, submission id), plus up to 50 history entries, newest first. found is false when no consent record exists. IP addresses are never returned.'
parameters:
- name: business_id
in: query
required: true
schema:
type: string
- name: phone
in: query
required: true
schema:
type: string
description: Phone number, E.164 preferred (+15551234567).
responses:
'200':
description: Consent proof
'400':
description: Missing business_id or phone, or phone is not a valid number
'403':
description: Missing leads:read scope or no access to business_id
x-required-scopes: leads:read
tags:
- Consent Proof
operationId: getV1ConsentProof
x-operation-id-source: derived
components:
securitySchemes:
bearerAuth:
type: http
scheme: bearer
description: 'KaiCalls API key. Per-operation scope requirements are published on each operation as `x-required-scopes` — a scope string, or a nested `{ allOf: [...] }` / `{ anyOf: [...] }` expression. An operation with no `x-required-scopes` requires a valid key but no particular scope.'
x-scopes:
- workspaces:read
- workspaces:write
- numbers:read
- numbers:write
- agents:read
- agents:write
- communication-runs:read
- communication-runs:write
- calls:read
- calls:write
- sms:read
- sms:write
- webhooks:read
- webhooks:write
- events:read
- events:replay
- lifecycle:write
- leads:read
- leads:write
- emails:read
- emails:write
- sdr:read
- sdr:write
- evals:read
- evals:write
- appointments:read
- appointments:write
- knowledge:read
- knowledge:write
- products:read
- products:write
- integrations:write
- approvals:write
- concierge:write
- billing:read
- billing:write
- call_evidence:read
- call_evidence:write
- support:write
sessionAuth:
type: apiKey
in: cookie
name: sb-access-token
description: Authenticated dashboard session cookie. Used by first-party flows that mint or manage API keys.