API Overview
The generated API Reference has the exact request and response shapes.
This page answers a different question: which endpoints matter for which workflow?
Typical first workflow
- create account or get key
- create line
- receive an inbound call or SMS
- inspect calls or conversations
- add consent for outbound calling
- place outbound call
Resource map
Auth
POST /api/v1/auth/keysGET /api/v1/auth/keys
Lines
POST /api/v1/linesGET /api/v1/linesGET /api/v1/lines/{id}PATCH /api/v1/lines/{id}DELETE /api/v1/lines/{id}
Calls
POST /api/v1/callsGET /api/v1/callsGET /api/v1/calls/{id}POST /api/v1/calls/{id}/hangupPOST /api/v1/calls/conversation
SMS and conversations
POST /api/v1/messagesGET /api/v1/conversationsGET /api/v1/conversations/{lineId}/{phoneNumber}
Compliance
POST /api/v1/consentGET /api/v1/consentDELETE /api/v1/consentGET /api/v1/compliance/auditGET /api/v1/compliance/eventsPOST /api/v1/disclosuresGET /api/v1/disclosures
Webhooks and delivery inspection
GET /api/v1/webhooks/deliveriesGET /api/v1/webhooks/statsPOST /api/v1/webhooks/test
Billing and settings
GET /api/v1/billing/balanceGET /api/v1/billing/transactions
POST /api/v1/billing/add-funds was removed in v0.5.2.0. Saperly is now postpaid — when your balance runs low, the saved card on file is auto-charged. Add or update a payment method at app.saperly.com/billing.GET /api/v1/settingsPATCH /api/v1/settingsGET /api/v1/usage/dailyGET /api/v1/usage/monthlyGET /api/v1/voices
If you only read three endpoints
Read these first:
POST /api/v1/linesPOST /api/v1/callsPOST /api/v1/messages
That gives you the product shape fast.
Key request fields — POST /api/v1/lines
Pagination
Saperly uses two pagination styles depending on the endpoint:
Cursor-based pagination
Used by: transactions, conversations list, conversation messages.
Pass cursor from the previous response to fetch the next page. Response includes next_cursor and has_more.
Offset-based pagination
Used by: calls list, webhook deliveries, compliance audit.
Pass limit and offset as query params. Response includes total.
Default page size varies per endpoint (typically 20 for cursor, 50 for offset). Max is usually 100.
Streaming responses
Webhook mode supports NDJSON streaming for lower latency. Instead of returning one JSON object, return newline-delimited JSON chunks. Each chunk is spoken as it arrives. See the Webhook Mode guide for details.
Raw spec and local development
- OpenAPI spec source:
fern/openapi.yaml - App-served spec:
GET /api/openapi.yaml - Local docs preview:
fern docs dev
