Saperly

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.

57.7/100 strong Agent 57/100 agent native Full breakdown ↓
scored 2026-10-09 · rubric v0.23.0
3 published contracts 1 MCP Servers
TelephonyVoiceSMSPhone NumbersAI AgentsConsentComplianceMCPMessagingCommunications

Kin Score

Kin Score Kin Score How this is scored →
scored 2026-10-09 · rubric v0.23.0
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 →

APIs 16

Individual APIs this provider publishes, each with its own machine-readable definition.

Saperly API Token Registry API

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 ...

Saperly Assistant API

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.

Saperly Connections API

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...

Saperly Consent API

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...

Saperly Custom Voices API

The customVoices API from Saperly — 2 operation(s) for customvoices.

Saperly Health API

Service liveness. A lightweight, unauthenticated probe for uptime checks and load balancers.

Saperly Keys API

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...

Saperly Languages API

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 ...

Saperly Messaging API

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...

Saperly Numbers API

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...

Saperly Pricing API

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,...

Saperly Usage API

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...

Saperly Voice API

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...

Saperly Voices API

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...

Saperly Workspace API

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 Workspace Invitations API

Invite teammates to a workspace by email address.

Scroll for all 16

MCP Servers 1

Model Context Protocol servers that expose these APIs to AI agents.

Saperly MCP Server

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...

MCP SERVER

Pricing Plans 1

Published pricing tiers and plan structures.

Saperly Plans Pricing

2 plans

PLANS

Rate Limits 1

Documented rate limits and quota policies.

Saperly Rate Limits

0 limits

RATE LIMITS

Event Specifications 1

AsyncAPI definitions for this provider's event-driven and streaming APIs.

Semantic Vocabularies 1

JSON-LD contexts and semantic vocabularies used across these APIs.

Saperly Context

32 classes · 30 properties

JSON-LD

Spectral Rules 1

Spectral governance rulesets for linting and validating these APIs.

Saperly API Rules

15 rules · 9 errors 4 warnings 2 info

SPECTRAL

OpenAPI Overlays 1

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.

Saperly Openapi Overlay

5 actions · documentation · saperly-openapi.yml

GENERATED

Security Posture 3

Authentication, domain security, vulnerability disclosure, and trust-center signals.

Saperly Authentication

2 schemes

SECURITY

Saperly Domain Security

TLSv1.3 · DMARC

SECURITY

Saperly Vulnerability Disclosure

no policy recorded

SECURITY

Scopes 1

OAuth scopes governing access to this provider's APIs.

Saperly Scopes

7 scopes

7 scopes

SCOPES

Agentic Access 1

Recommended x-agentic-access execution contracts for AI agents.

Saperly Agentic Access

48 operations · 24 acting · 3 human-in-the-loop

48 operations · 24 acting

AGENTIC

Resources

Get Started 4

Portal, sign-up, and the first successful call

Documentation 2

Reference material describing how the API behaves

Agent Surfaces 5

MCP servers, agent skills, and machine-readable catalogs

Design & Contract 10

Pagination, idempotency, versioning, errors, and events

Scroll for all 10

Build 4

SDKs, sample code, and the tooling you integrate with

Access & Security 5

Authentication, authorization, and security posture

Operate 1

Status, limits, changes, and where to get help

Commercial 4

Pricing, plans, and the legal terms of use

Company 2

The organization behind the API

Other 3

Properties that don't map to a standard resource type

Source (apis.yml)

apis.yml Raw ↑
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

Work with this as data

Every provider 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 providers

9 MCP tools reach this
  • find_providersBrowse and filter every provider in the catalog.
  • get_provider_artifactsEvery artifact this provider publishes, grouped by type.
  • get_provider_operationsEvery operation across all of their OpenAPIs — one call instead of parsing every spec.
  • get_provider_toolsEvery MCP tool they ship, with the operation each wraps.
  • get_provider_evidenceHow each part of their score was established. Free — the basis for a claim should not sit behind it.
  • get_provider_ratingPRO — composite, band, trend and facet scores.
  • 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.
All 92 tools →

Call it yourself

curl for this page
This provider
curl "https://apis.io/api/v1/providers/saperly"
All providers
curl "https://apis.io/api/v1/providers?limit=25"
Every operation they expose
curl "https://apis.io/api/v1/providers/saperly/operations?limit=25"
How their score was established
curl "https://apis.io/api/v1/providers/saperly/evidence"

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.

A second provider on the same verified email joins the account you already have.