speakline

REST API

Manage leads, calls, messages, campaigns and appointments from your own applications.

Base URL

Every REST request goes to the address below. The OAuth and MCP endpoints sit at the root of the domain.

Base URL
https://api.speakline.io/api/v1

Authentication

Requests carry an API key or an OAuth access token in the Authorization header as Bearer.

API key

Created in the dashboard under Settings › API keys. A key is limited to the permissions of the member who created it and the scopes you choose; it is shown once, can have an expiry date and can be revoked at any time. Available on plans that include API access.

OAuth 2.1

For applications that connect to other people's accounts. It uses the authorization code flow with PKCE (S256) required. Access tokens last one hour and refresh tokens 90 days, renewed on every use. People see and remove the apps they connected under Connected apps in the dashboard.

EndpointPurpose
GET /oauth/authorizeAuthorization and consent screen
POST /oauth/tokenIssues and refreshes tokens
POST /oauth/revokeRevokes a token
GET /.well-known/oauth-authorization-serverAuthorization server metadata
HTTP
Authorization: Bearer sk_live_…
Applications that use a client secret are registered by the Speakline team. Contact us to register one.

Responses and errors

Successful responses return the result in data. On errors, the HTTP status code names the problem and the body is a JSON object with a description.

StatusMeaning
400Invalid request
401Not authenticated: missing or invalid key or token
402The plan does not include the feature or a usage limit was reached
403Not permitted
404Not found
422Validation failed
429Rate limit exceeded
JSON
{
  "success": true,
  "data": { … }
}

Pagination

Lists are paginated with page (starting at 1) and page_size (default 25, at most 100). The response holds items, total, page, page_size and pages. Busy lists also support cursor paging (next_cursor, has_more).

curl
curl "https://api.speakline.io/api/v1/leads?page=2&page_size=50" \
  -H "Authorization: Bearer $SPEAKLINE_API_KEY"

Rate limits

  • With an API key: 20 requests per second and 1,200 per minute.
  • Above the limit, a 429 response comes with Retry-After and X-RateLimit-* headers.
  • Request bodies can be up to 32 MB.

Main endpoints

Paths are relative to the base URL.

MethodPathPurpose
GET/automation/meChecks the API key and the workspace
GET/leadsLists leads
POST/leadsCreates a lead
GET/leads/{id}One lead in detail
PATCH/leads/{id}Updates a lead
POST/voice/calls/sendStarts or schedules a call by a voice agent
GET/voice/callsLists calls
GET/voice/calls/{id}One call in detail
POST/conversationsSends a message
GET/campaignsLists campaigns
POST/campaigns/{id}/leadsAdds people to a campaign
POST/appointmentsBooks an appointment
GET/appointments/calendarsLists connected calendars
GET/voicemailsLists voicemails
GET/agentsLists voice agents
GET/channelsLists messaging channels
GET/numbersLists phone numbers
GET/webhooks/eventsThe webhook event catalogue
POST/automation/hooksCreates an event subscription (REST hook)
DELETE/automation/hooks/{id}Deletes an event subscription

Example request

Creates a lead. The phone number is written in E.164 format.

curl
curl https://api.speakline.io/api/v1/leads \
  -H "Authorization: Bearer $SPEAKLINE_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "full_name": "Emma Clarke",
    "phone": "+442079460344",
    "email": "emma@example.com",
    "source": "api",
    "language": "en"
  }'
For field details and other endpoints, write to our team.

On this page