aid: saperly
name: Saperly
description: 'Saperly is the phone carrier for AI agents: one API call gives an agent a real phone number with inbound and outbound voice and SMS, routing to a hosted in-network voice agent or to your own runtime (manual mode), and TCPA compliance enforced in the carrier layer — AI disclosure, consent records, 10DLC brand/campaign registration and an append-only audit trail. The v2 REST API at api.saperly.com (48 operations, OpenAPI 3.2) covers numbers, connections, messaging, voice, voices, consent, pricing quotes, usage and ceiling-bounded scoped API keys; a remote MCP server at api.saperly.com/mcp (Streamable HTTP, OAuth 2.1 or sap_sk_ bearer) exposes the same surface as tools, with official Node and Python SDKs, signed webhooks and prepaid usage-based pricing.'
url: https://raw.githubusercontent.com/api-evangelist/saperly/refs/heads/main/apis.yml
x-type: company
x-source: harvest:monid-connectors
x-tier: profiled
x-tier-reason: enrichment pass 2026-10-07 (local-v5; was harvest)
specificationVersion: '0.20'
created: '2026-10-07'
modified: '2026-10-07'
tags:
- Telephony
- Voice
- SMS
- Phone Numbers
- AI Agents
- Consent
- Compliance
- MCP
- Messaging
- Communications
maintainers:
- FN: Kin Lane
  email: kin@apievangelist.com
- FN: APIs.json
  email: info@apis.io
image: https://saperly.com/saperly-flower-hero.jpg
common:
- type: CapabilityMap
  url: capabilities/saperly-capability-edges.yml
  name: Saperly Business Capability Map
- type: RateLimits
  url: rate-limits/saperly-rate-limits.yml
- type: DeveloperPortal
  url: https://api.saperly.com</code
- type: AgenticAccess
  url: agentic-access/saperly-agentic-access.yml
- type: Plans
  url: plans/saperly-plans-pricing.yml
- type: Spectral
  url: rules/saperly-rules.yml
- type: JSONLD
  url: json-ld/saperly-context.jsonld
- type: Vocabulary
  url: vocabulary/saperly-vocabulary.yml
- type: AgentSkill
  url: skills/_index.yml
- type: Webhooks
  url: asyncapi/saperly-webhooks.yml
- type: DataModel
  url: data-model/saperly-data-model.yml
- type: Idempotency
  url: conventions/saperly-conventions.yml
- type: Conventions
  url: conventions/saperly-conventions.yml
- type: Authentication
  url: authentication/saperly-authentication.yml
- type: OAuthScopes
  url: scopes/saperly-scopes.yml
- type: Lifecycle
  url: lifecycle/saperly-lifecycle.yml
- type: ErrorCatalog
  url: errors/saperly-problem-types.yml
- type: Conformance
  url: conformance/saperly-conformance.yml
- type: Overlay
  url: overlays/saperly-openapi-overlay.yaml
- type: LLMsTxt
  url: llms/saperly-llms.txt
- type: ToolCrosswalk
  url: mcp/saperly-tool-crosswalk.yml
- type: MCPServer
  url: mcp/saperly-mcp.yml
- type: WellKnown
  url: well-known/saperly-well-known.yml
- type: Hosts
  url: hosts/saperly-hosts.yml
- type: Vendors
  url: vendors/saperly-vendors.yml
- type: SDKs
  url: packages/saperly-packages.yml
- type: Packages
  url: packages/saperly-packages.yml
- type: Website
  url: https://saperly.com
- type: Documentation
  url: https://saperly.com/docs
- type: APIReference
  url: https://saperly.com/docs/api-reference
- type: GettingStarted
  url: https://saperly.com/docs/quickstart
- type: Blog
  url: https://saperly.com/blog
- type: GitHubOrganization
  url: https://github.com/Saperly
- type: SignUp
  url: https://saperly.com/sign-in
- type: Login
  url: https://saperly.com/sign-in
- type: Pricing
  url: https://saperly.com/#pricing
- type: Security
  url: https://saperly.com/security
- type: TermsOfService
  url: https://saperly.com/terms
- type: PrivacyPolicy
  url: https://saperly.com/privacy
- type: VulnerabilityDisclosure
  url: security/saperly-vulnerability-disclosure.yml
- type: DomainSecurity
  url: security/saperly-domain-security.yml
apis:
- aid: saperly:saperly-api-token-registry-api
  name: Saperly API Token Registry API
  description: >-
    Manage the scoped `sk_` API keys agents use to call Saperly. Each key carries a set of scopes, an
    optional number allow-list, and an optional spend cap; revoke a key when it is no longer needed.
  humanURL: https://saperly.com/docs/api-reference
  baseURL: https://api.saperly.com
  tags:
  - api-token-registry
  properties:
  - type: OpenAPI
    url: openapi/saperly-api-token-registry-api-openapi.yml
  - type: Documentation
    url: https://saperly.com/docs/api-reference
  - type: APIReference
    url: https://api.saperly.com/reference
- aid: saperly:saperly-assistant-api
  name: Saperly Assistant API
  description: >-
    Ask the built-in workspace assistant a natural-language question and get a text answer back. Backed
    by an in-network model; availability depends on the operator configuration.
  humanURL: https://saperly.com/docs/api-reference
  baseURL: https://api.saperly.com
  tags:
  - Assistant
  tags_raw:
  - assistant
  properties:
  - type: OpenAPI
    url: openapi/saperly-assistant-api-openapi.yml
  - type: Documentation
    url: https://saperly.com/docs/api-reference
  - type: APIReference
    url: https://api.saperly.com/reference
- aid: saperly:saperly-connections-api
  name: Saperly Connections API
  description: >-
    Connections — the handler bound to a phone number that answers and talks. Hosted lines run an in-network
    voice assistant (pick the model, voice, language, and MCP tools); manual lines forward turns to your
    own brain. Audio always stays in-network.
  humanURL: https://saperly.com/docs/api-reference
  baseURL: https://api.saperly.com
  tags:
  - Connections
  tags_raw:
  - connections
  properties:
  - type: OpenAPI
    url: openapi/saperly-connections-api-openapi.yml
  - type: Documentation
    url: https://saperly.com/docs/api-reference
  - type: APIReference
    url: https://api.saperly.com/reference
- aid: saperly:saperly-consent-api
  name: Saperly Consent API
  description: >-
    Track opt-in consent for contacts on your numbers. Record, revoke, list, and check the consent that
    backs your outbound messaging compliance. (Inbound STOP/START opt-out is handled automatically by
    the carrier-side keyword path.)
  humanURL: https://saperly.com/docs/api-reference
  baseURL: https://api.saperly.com
  tags:
  - Consent
  tags_raw:
  - consent
  properties:
  - type: OpenAPI
    url: openapi/saperly-consent-api-openapi.yml
  - type: Documentation
    url: https://saperly.com/docs/api-reference
  - type: APIReference
    url: https://api.saperly.com/reference
- aid: saperly:saperly-customvoices-api
  name: Saperly Custom Voices API
  description: The customVoices API from Saperly — 2 operation(s) for customvoices.
  humanURL: https://saperly.com/docs/api-reference
  baseURL: https://api.saperly.com
  tags: []
  tags_raw:
  - customVoices
  properties:
  - type: OpenAPI
    url: openapi/saperly-customvoices-api-openapi.yml
  - type: Documentation
    url: https://saperly.com/docs/api-reference
  - type: APIReference
    url: https://api.saperly.com/reference
- aid: saperly:saperly-health-api
  name: Saperly Health API
  description: >-
    Service liveness. A lightweight, unauthenticated probe for uptime checks and load balancers.
  humanURL: https://saperly.com/docs/api-reference
  baseURL: https://api.saperly.com
  tags:
  - Health
  tags_raw:
  - health
  properties:
  - type: OpenAPI
    url: openapi/saperly-health-api-openapi.yml
  - type: Documentation
    url: https://saperly.com/docs/api-reference
  - type: APIReference
    url: https://api.saperly.com/reference
- aid: saperly:saperly-keys-api
  name: Saperly Keys API
  description: >-
    Provision and manage scoped `sk_` API keys for the workspace. The workspace is always read from the
    calling key, never from client input. A key holding the `keys:admin` scope can mint child keys (and
    list/revoke the workspace's keys), bounded by the parent ceiling: a child's scopes, number allow-list,
    and spend cap must each be a subset of the minting key's own grant.
  humanURL: https://saperly.com/docs/api-reference
  baseURL: https://api.saperly.com
  tags:
  - Keys
  tags_raw:
  - keys
  properties:
  - type: OpenAPI
    url: openapi/saperly-keys-api-openapi.yml
  - type: Documentation
    url: https://saperly.com/docs/api-reference
  - type: APIReference
    url: https://api.saperly.com/reference
- aid: saperly:saperly-languages-api
  name: Saperly Languages API
  description: >-
    Discover the spoken languages a connection can use (its `language` field). The list is derived from
    the voice catalogue — every language here has at least one voice that speaks it (see `GET /voices`)
    — and is ordered most-supported first. Any well-formed BCP-47 tag is also accepted on a connection;
    this is the curated, recommended set.
  humanURL: https://saperly.com/docs/api-reference
  baseURL: https://api.saperly.com
  tags:
  - Language
  tags_raw:
  - languages
  properties:
  - type: OpenAPI
    url: openapi/saperly-languages-api-openapi.yml
  - type: Documentation
    url: https://saperly.com/docs/api-reference
  - type: APIReference
    url: https://api.saperly.com/reference
- aid: saperly:saperly-messaging-api
  name: Saperly Messaging API
  description: >-
    Send and list SMS messages on your numbers. Outbound sends are billed per segment and pass through
    opt-out (STOP) and spend-limit enforcement before reaching the carrier; inbound messages are recorded
    against the receiving number.
  humanURL: https://saperly.com/docs/api-reference
  baseURL: https://api.saperly.com
  tags:
  - Messaging
  tags_raw:
  - messaging
  properties:
  - type: OpenAPI
    url: openapi/saperly-messaging-api-openapi.yml
  - type: Documentation
    url: https://saperly.com/docs/api-reference
  - type: APIReference
    url: https://api.saperly.com/reference
- aid: saperly:saperly-numbers-api
  name: Saperly Numbers API
  description: >-
    Phone numbers — provision, list, release, and configure the lines in your workspace. Bind a connection
    to a number to make it answer calls and messages, set a per-number webhook, and override the SMS sender
    id or caller ID name. The fleet belongs to the workspace your API key resolves to.
  humanURL: https://saperly.com/docs/api-reference
  baseURL: https://api.saperly.com
  tags:
  - Numbers
  tags_raw:
  - numbers
  properties:
  - type: OpenAPI
    url: openapi/saperly-numbers-api-openapi.yml
  - type: Documentation
    url: https://saperly.com/docs/api-reference
  - type: APIReference
    url: https://api.saperly.com/reference
- aid: saperly:saperly-pricing-api
  name: Saperly Pricing API
  description: >-
    Pricing — get a live quote for what a phone number will cost before you provision it. Returns the
    customer-facing monthly and upfront prices for a given country and number type, so you can confirm
    the cost up front and pass it to `POST /numbers` as the `expected*` price.
  humanURL: https://saperly.com/docs/api-reference
  baseURL: https://api.saperly.com
  tags:
  - Pricing
  tags_raw:
  - pricing
  properties:
  - type: OpenAPI
    url: openapi/saperly-pricing-api-openapi.yml
  - type: Documentation
    url: https://saperly.com/docs/api-reference
  - type: APIReference
    url: https://api.saperly.com/reference
- aid: saperly:saperly-usage-api
  name: Saperly Usage API
  description: >-
    Read metered usage for the workspace — call and message counts, total call cost and duration, and
    the current prepaid balance. Aggregated over an optional time window; the balance is point-in-time.
  humanURL: https://saperly.com/docs/api-reference
  baseURL: https://api.saperly.com
  tags:
  - Usage
  tags_raw:
  - usage
  properties:
  - type: OpenAPI
    url: openapi/saperly-usage-api-openapi.yml
  - type: Documentation
    url: https://saperly.com/docs/api-reference
  - type: APIReference
    url: https://api.saperly.com/reference
- aid: saperly:saperly-voice-api
  name: Saperly Voice API
  description: >-
    Place and control outbound calls and fetch call records. Audio always stays in-network — there is
    no live media-control surface here by design. Funds are reserved on start and settled from the carrier-reported
    duration on end.
  humanURL: https://saperly.com/docs/api-reference
  baseURL: https://api.saperly.com
  tags:
  - Voice
  tags_raw:
  - voice
  properties:
  - type: OpenAPI
    url: openapi/saperly-voice-api-openapi.yml
  - type: Documentation
    url: https://saperly.com/docs/api-reference
  - type: APIReference
    url: https://api.saperly.com/reference
- aid: saperly:saperly-voices-api
  name: Saperly Voices API
  description: >-
    Discover the in-network text-to-speech voices a hosted connection can speak with. Each voice carries
    its language, so this endpoint also doubles as the catalogue of supported spoken languages (use a
    voice's `language` value for a connection's `language` field).
  humanURL: https://saperly.com/docs/api-reference
  baseURL: https://api.saperly.com
  tags:
  - Voice
  tags_raw:
  - voices
  properties:
  - type: OpenAPI
    url: openapi/saperly-voices-api-openapi.yml
  - type: Documentation
    url: https://saperly.com/docs/api-reference
  - type: APIReference
    url: https://api.saperly.com/reference
- aid: saperly:saperly-workspace-api
  name: Saperly Workspace API
  description: >-
    Workspace administration — read the members, API tokens, webhook endpoints, and audit log for a workspace.
    Dashboard/management routes keyed by the workspace slug in the path.
  humanURL: https://saperly.com/docs/api-reference
  baseURL: https://api.saperly.com
  tags:
  - Workspace
  tags_raw:
  - workspace
  properties:
  - type: OpenAPI
    url: openapi/saperly-workspace-api-openapi.yml
  - type: Documentation
    url: https://saperly.com/docs/api-reference
  - type: APIReference
    url: https://api.saperly.com/reference
- aid: saperly:saperly-workspace-invitations-api
  name: Saperly Workspace Invitations API
  description: Invite teammates to a workspace by email address.
  humanURL: https://saperly.com/docs/api-reference
  baseURL: https://api.saperly.com
  tags:
  - Workspace Invitations
  tags_raw:
  - workspace-invitations
  properties:
  - type: OpenAPI
    url: openapi/saperly-workspace-invitations-api-openapi.yml
  - type: Documentation
    url: https://saperly.com/docs/api-reference
  - type: APIReference
    url: https://api.saperly.com/reference
x-enrichment:
  date: '2026-10-07'
  status: enriched
  artifacts_added: 37
  pass: local-v5
