Saperly, worked by an AI employee
Not another app for your team to learn, and not a set of rules for you to build. You hire an AI employee, you give it access to your Saperly account, and you ask it for things in Slack or Teams the way you would ask anyone else on the team. There is nothing to map and nothing to maintain.
- Phone & SMS
- Connects with a key
- 30 ready-made tools
- Asked in Slack or Teams
An illustration of how the conversation reads, not a transcript from a client account.
What Saperly is
Saperly is the phone carrier for AI agents — phone numbers, voice, SMS, and compliance in one API.
You paste in a key from your own Saperly account. It is kept encrypted, and you can withdraw it from inside Saperly whenever you like.
One message in, the work done in Saperly.
- 01
You ask
You message your AI employee in the chat your team already has open, in one sentence, in your own words.
- 02
It works out the step
It decides what the job needs in Saperly. You do not pick anything from a menu or wire anything together.
- 03
It does the work
Signed in to your own Saperly account, inside the access you granted it, doing the thing you asked for.
- 04
It reports back
It tells you what it did, in the same thread. If it could not do something, it says so rather than guessing.
What it can do in Saperly
These are the ready-made tools your AI employee already has in Saperly. It is not limited to them, but it never has to be taught these.
- Bind Connection to NumberAttach a connection (the AI persona / answering brain from SAPERLYCREATECONNECTION) to a phone number, so inbound calls and SMS to that number — and outbound calls placed from it —
- Check ConsentCheck whether a contact currently has active TCPA consent for one of your Saperly numbers, given numberId (your number) and peerNumber (the contact's E.164 number) as query params.
- Create ConnectionCreate a connection: the AI 'brain' that answers calls and (optionally) SMS on a Saperly phone number. A phone number binds to a connection via SAPERLYASSIGNNUMBERCONNECTION in ord
- Delete ConnectionPERMANENTLY AND IRREVERSIBLY delete a connection (the AI answering brain / persona that handles calls and SMS) by its id. THIS CANNOT BE UNDONE — there is no restore. WARNING: any
- End CallEnd an in-progress call by its id, hanging up and settling the metered cost. This is the safe, cheap, RECOMMENDED companion to SAPERLYPLACECALL: placing a call starts per-minute bi
- Get CallFetch a single call by its id, returning its status, per-minute rate, final duration (durationSec) and cost (costCents), and the hasRecording / hasTranscript flags. costCents and d
- Get Call RecordingGet the audio recording for a call and return it as a downloadable file. The API answers with a 302 redirect to a signed download URL when a recording exists; the recording is fetc
- Get Call TranscriptFetch the transcript (conversation turns/segments) of a completed call by its id. Transcripts only exist AFTER a call connects, ends, and is processed. The endpoint uses the same 4
- Get ConnectionFetch a single connection (the AI answering brain / persona that handles calls and SMS) by its id, returning its full config: name, mode, backend, instructions, tts voice, language
- Get Phone NumberFetch a single phone number by its id, returning its E.164 phoneNumber, bound connectionId, webhookUrl, country, numberType, pricing and lifecycle fields. Use after SAPERLYLISTNUMB
- Get Usage & BalanceReturn the workspace usage summary and prepaid balance: calls {count, totalCostCents, totalDurationSec}, messages {count}, and balanceCents (the prepaid balance, in cents). ALWAYS
- List CallsReturn the full voice-call history (inbound + outbound) for the connected Saperly workspace. Each call carries its id, numberId, direction, to and fromnumber (E.164), status, rateC
- List ConnectionsReturn every connection (the AI persona / answering 'brain' that handles calls and SMS) in the connected Saperly workspace. Each carries id, name, mode (hosted|manual), backend, in
- List Consent RecordsReturn every TCPA consent record in the connected Saperly workspace, with each record's id, numberId (the Saperly number contact is authorized FROM), peerNumber (the contact's E.16
- List LanguagesReturn the spoken languages Saperly supports for voice connections, each as a {code, name} pair (about 42 entries, e.g. {'code':'en','name':'English'}). A language code is what you
- List MessagesReturn SMS messages in the connected Saperly workspace (both inbound and outbound). Each message has id, numberId, direction, to, fromnumber, body, segments, status and createdAt.
- List Phone NumbersReturn every phone number provisioned in the connected Saperly workspace, with each number's id, phoneNumber (E.164), the connectionId (answering brain) bound to it, webhookUrl, co
- List VoicesList the text-to-speech voices available for Saperly connections. Each voice has an id, name, gender and language; a voice id is what you pass as tts.voiceId when creating or updat
- Place CallPAID / METERED — places a REAL outbound voice call that RINGS A REAL PHONE and BILLS PER MINUTE (~26¢/min); it keeps billing until hung up — end it with SAPERLYENDCALL to stop the
- Provision Phone NumberPAID / METERED: provision (buy) a new phone number in a country. This SPENDS MONEY — it charges the workspace prepaid balance an upfront fee plus a RECURRING MONTHLY rent (US local
- Quote Number PriceREAD-ONLY and FREE: quote the price to provision a phone number in a country/type, returning { customerMonthlyCents, customerUpfrontCents }. This DOES NOT provision, reserve, or ch
- Record ConsentRecord TCPA consent for a contact so outbound SMS (SAPERLYSENDSMS) and calls (SAPERLYPLACECALL) from your number are permitted. Saperly's compliance gate: for a cold contact call t
- Release Phone NumberPERMANENTLY AND IRREVERSIBLY release a phone number back to the carrier. THIS CANNOT BE UNDONE: the number leaves the workspace, is returned to the carrier pool, and CANNOT be reco
- Revoke ConsentRevoke a contact's TCPA consent for a given Saperly number, blocking further outbound contact to them. CALL THIS WHEN A RECIPIENT SAYS 'STOP' / 'UNSUBSCRIBE' / 'do not contact me'
- Send SMSPAID / METERED: send a single SMS from one of your Saperly numbers to an E.164 destination. This SPENDS REAL MONEY and sends a REAL text message to a REAL phone (~2 cents per 160-c
- Set Number Caller ID NameSet the outbound caller ID name / CNAM (1-15 characters: letters, digits, spaces) presented to recipients on outbound calls from a Saperly phone number, or pass callerIdName=null t
- Set Number SMS Sender IDSet the alphanumeric SMS sender id (1-11 alphanumeric chars, e.g. a brand name) shown as the 'from' on outbound SMS from this number, or pass smsSenderId=null to CLEAR it. Returns
- Set Number WebhookSet the HTTPS webhook URL that Saperly POSTs this number's events (inbound SMS/calls, status) to. The url is required and must be https://. Returns the updated number object. NOTE:
- Transfer CallPAID / METERED — BLIND-transfers a LIVE, in-progress voice call to another destination to (an E.164 number like +15551230000, or a sip: URI). BLIND means the call is handed off UNC
- Update ConnectionPartially update a connection (the AI answering brain bound to a number). Send only the fields you want to change (name, mode, instructions, llm, tts, language, mcpServers, callCon
You stay the boss of your Saperly account.
Nothing connects until you approve it. You grant access one app at a time, you can take it back the same way, and everything your AI employee does in there is written down where you can see it.
How we handle your data- It signs in to your own Saperly account. You are not moving anything into ours.
- You grant access one app at a time, and you can take it back the same way.
- Everything it does in Saperly is written down, with what it did and when.
- Anything you tell it to check with you first, it checks with you first.
It works in Saperly and the rest of your software in the same job
A real job rarely stays in one place. Reading a message in one app, checking a record in another and writing the result in a third is one request to your AI employee, not three.
Questions people ask about Saperly
- Can an AI employee really work inside Saperly?
- Yes. It signs in to your own Saperly account and works in it the way a new hire would, from the chat your team already has open. Nobody installs anything, and nobody learns a new screen.
- Do I have to move anything out of Saperly?
- No. Nothing moves and nothing is replaced. Your records stay in Saperly, your team carries on in the same screens they used yesterday, and your AI employee works alongside them in there.
- How does it get into my Saperly account?
- You paste in a key from your own Saperly account. It is kept encrypted, and you can withdraw it from inside Saperly whenever you like. You approve it before anything connects, and you can take the access back the same way you gave it.
- What can it actually do in Saperly?
- It has 30 ready-made tools in Saperly today, among them Bind Connection to Number, Check Consent and Create Connection. The full list is on this page. It is not limited to those, but it never has to be taught them.
- Can it use Saperly and the rest of my software in the same job?
- Yes, and that is usually the point. Reading a message in one app, checking a record in Saperly and writing the result somewhere else is one request to your AI employee, not three separate ones you stitch together.
- Who decides what it is allowed to do in Saperly?
- You do. You grant access one app at a time and can withdraw it at any time, anything you ask it to check with you first it checks with you first, and everything it does in Saperly is written down with what it did and when.