API Documentation
Integrate Sales Seraph directly into your CRM, dashboards, or internal tools. Everything you need to get started is right here.
Authentication
All API requests require a valid API key sent via the Authorization header. Keys are scoped per environment and can be rotated at any time from your dashboard.
API Key Generation
Navigate to Settings → API Keys in your dashboard to create a new key. Each key is tied to a single workspace and inherits its permission scope.
Rate Limiting
The default rate limit is 60 requests per minute per API key. Exceeding this returns a 429 Too Many Requests response with a Retry-After header.
Example request:
curl -X GET https://api.salesseraph.com/v1/calls \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json"Available Endpoints
The core resources you can interact with through the Sales Seraph API.
/v1/callsList all calls with pagination and filters
/v1/calls/:id/transcriptRetrieve the full transcript for a call
/v1/calls/:id/analysisGet AI-generated analysis and scoring for a call
/v1/calls/:id/recordingStream or download the call recording
/v1/metricsRetrieve aggregated sales performance metrics
/v1/calls/:id/contextPush CRM context to enrich coaching prompts
/v1/calls/:id/followupsGenerate AI-drafted follow-up emails
Real-Time Events
Subscribe to webhook events to keep your systems in sync without polling.
Available Events
Configure your webhook URL in Settings → Webhooks and select which events to receive.
call.startedFires when a new coaching session begins
call.completedFires when a call ends and recordings are ready
analysis.readyFires when AI analysis for a call is available
transcript.readyFires when a call transcript has been processed
followup.generatedFires when a follow-up email draft is created
Signature Verification
Every webhook request includes an X-Seraph-Signature header containing an HMAC-SHA256 digest. Verify it against your webhook secret to confirm the request originated from Sales Seraph.
// Verify webhook signature (Node.js)
const crypto = require("crypto");
const expected = crypto
.createHmac("sha256", WEBHOOK_SECRET)
.update(rawBody)
.digest("hex");
if (signature === expected) {
// Request is authentic
}Sample API Response
A typical response when retrieving a call object from the API.
GET /v1/calls/:id
Returns a single call object with metadata, scoring, and links to related resources.
{
"id": "call_8f3a2b1c",
"status": "completed",
"created_at": "2026-02-21T14:32:00Z",
"duration_seconds": 1847,
"platform": "zoom",
"participant": {
"name": "Alex Morgan",
"email": "alex@prospect.io",
"company": "Prospect Inc."
},
"scoring": {
"overall": 87,
"rapport": 92,
"discovery": 84,
"objection_handling": 88,
"closing": 79
},
"objections_detected": 3,
"objections_handled": 3,
"methodology": "SPIN",
"links": {
"transcript": "/v1/calls/call_8f3a2b1c/transcript",
"analysis": "/v1/calls/call_8f3a2b1c/analysis",
"recording": "/v1/calls/call_8f3a2b1c/recording",
"followups": "/v1/calls/call_8f3a2b1c/followups"
}
}Rate Limits
Default quotas and how to request higher throughput for your integration.
| Plan | Rate Limit | Burst | Daily Cap |
|---|---|---|---|
| Sales Taster | 60 req/min | 10 req/sec | 10,000 requests |
| Management | 120 req/min | 20 req/sec | 50,000 requests |
| Enterprise | Custom | Custom | Unlimited |
Need higher limits? Contact our support team to discuss a custom rate plan for your integration.
Need API Access?
Get started with a Sales Taster account to generate your API key and begin building your integration today.
Get Started With Sales Taster