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.
Saperly publishes 16 API contracts indexed on the APIs.io network, including API Token Registry API, Assistant API, Connections API, and 13 more. Tagged areas include Telephony, Voice, SMS, Phone Numbers, and AI Agents.
The Saperly catalog on APIs.io includes 1 event-driven AsyncAPI specification, 1 JSON-LD context, and 1 Spectral governance ruleset.
Saperly’s developer surface includes authentication, documentation, API reference, getting-started guide, engineering blog, signup flow, pricing, and 33 more developer resources.
Regulatory Posture applies to this provider. Its tags matched the
Telecommunications regime, so
Regulatory Posture carries 15 points of the composite.
If this regime is wrong for your business, say so on your
provider repo — the
applicability map is public and we will correct it.
Create-or-Update Ergonomics could not be measured. We hold no machine-readable contract for
this provider to read, so there is nothing to measure a write surface against. Excluded rather than scored zero:
never-measured and measured-empty are different facts. Publishing an OpenAPI is what makes this facet — and
several others — scorable at all.
The six quality facets above are damped to 85 points between them,
because the conditional facet above carries the other
15. That is why each facet's contribution is shown against a damped
maximum: raising a quality facet moves the composite by 85% of its nominal
weight, not 100%. The full arithmetic is at apis.io/rating/.
Improve this rating by publishing the missing artifacts — every area above can be raised, and the full rubric is at apis.io/rating/. Every facet and dimension name above is a link: it opens that measurement's own page — what it means, the exact checks that feed it, how the whole catalog distributes on it, and the providers at the top of it. This rating is computed from github.com/api-evangelist/saperly: open an issue to ask a question, or submit a pull request to add artifacts.
Submit an artifact on GitHub — free →Manage your own listing — the Influence plan, $499/mo →
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 ...
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.
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...
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 hand...
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 ca...
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 ...
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; inboun...
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...
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,...
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 balan...
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 s...
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 sp...
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.
Saperly operates a remote MCP server at https://api.saperly.com/mcp (Streamable HTTP, JSON-RPC 2.0) authenticated with a scoped sap_sk_ bearer key or an MCP OAuth 2.1 access tok...
Overlays applied on top of this provider's contracts. Each card says who wrote it: a document the provider publishes, or one API Evangelist derived or generated.
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: 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
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
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
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:
- 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
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
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:
- 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
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
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
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
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
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:
- 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
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
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
Discovery needs no key. Ratings and market analysis are Pro.
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.