- Notify: Detect when a call ends and the recording is ready.
- Fetch: Download the audio from your VoIP provider.
- Forward: Upload phone recordings into Siro
Overview
What you’ll build: A 3-step pipeline enabling:- Automatic ingestion of completed phone recordings into Siro
- Rep attribution and CRM linking for phone recordings
- Siro’s AI insights and coaching on phone recordings
- API development capabilities
- Admin access to Siro workspace
- A VoIP/Phone System with recording export/download and API access
Step 1: Get Your Siro API Credentials
Generate your organization API token
- Log into your Siro workspace as an admin.
- Navigate to Person Icon → API Tokens.
- Click Generate New API Token.
- Store this securely - you’ll use it to create OAuth apps and access tokens.
Create an OAuth app and access token
The audio upload endpoints require an OAuth access token (user-scoped).- Create an OAuth app (use your org API token):
clientId and clientSecret. Store the client secret securely. It is only shown once.
Full documentation HERE.
- Create an OAuth access token (use your org API token):
accessToken. Token expires after 16 hours. Once accessToken expires, a new one must be generated by making a new POST to the above endpoint.
Full documentation HERE.
API Base URL
The signed-urls endpoint lives in Siro’s API Gateway, with the base URL:https://api.siro.ai/
Authentication: Use your OAuth access token (not the org API token) in the header.
Step 2: Understand the Basics of the Data Model
Siro’s integration data model to map recordings to reps and CRM objects:| Your System | Siro Equivalent | Purpose |
|---|---|---|
| Sales rep/agent | userId | Links the recording to the rep on call |
| Rep email | userEmail | Fallback to link the recording to the rep on call |
| Rep phone number | userPhone | Fallback to link the recording to the rep on call |
| Recorded audio file | fileUrl | Points to the audio file for Siro to ingest and transcribe |
| Call start time | dateCreated | Sets the actual call timestamp in Siro (not the upload time) |
| Your connected CRM account | integrationConnectionId | Identifies the connected CRM instance (your Salesforce, HubSpot, Dynamics, etc.) so CRM linking is scoped correctly |
| CRM record IDs you want to link (Opportunity, Account, Contact, Lead, etc.) | crmObjects[] = {objectType, objectId} | Creates ‘definite’ links between the recording and specific CRM objects |
| Customer phone | customerPhone | Fallback to link recording to CRM object when CRM object IDs are not shared |
| Customer name | customerName | Fallback to link recording to CRM object when CRM object IDs are not shared |
Key Relationships
Recording ↔ User
- Prerequisite : Your reps must be set up in Siro as users so recordings can be uploaded and properly attached to the correct rep
- To successfully link a recording to a user, share the
userIdto create a definite link to the rep. - If no
userIdis provided,userEmailoruserPhonewill be used to look up the rep and link the recording the associated rep. - Once the recording is linked to a user, it is attributed to the rep in Siro and treated as Siro native recording, which unlocks the same features and insights as any recording captured directly in Siro, including coaching, call analytics, and insights.
Recording ↔ CRM Object
- Prerequisite : Your CRM must be integrated with Siro to link phone recordings to CRM objects. If you do not have your CRM integrated with Siro yet, reach out to your Customer Success Manager or support@siro.ai to get set up. You can also use an API-based CRM integration, follow this guide to get set up https://docs.siro.ai/Integrations/Available_Integrations
- To successfully link a recording to a CRM object you must share
integrationConnectionIdandcrmObjects[] = {objectType, objectId}. This creates a definite link to those records. Note: theobjectIdmust already be present in our database (either from a native CRM integration or an API-based CRM integration) for the link to be created. - If no
crmObjects[] = {objectType, objectId}is provided,customerPhoneandcustomerNamewill be used to recommend links that can confirmed in the Siro platform.
Step 3: Send Phone Call Recordings to Siro
How It Works
- Your VoIP system/phone carrier notifies your server when a call ends
- Your server downloads the audio
- Your server pushes downloaded audio to Siro
3.1 Notify — Detect Call End (Recording Ready Signal)
VoIP → Your Server
Set up a reliable way for your system to detect when a call has ended and its recording is available to fetch from your VoIP. Common approaches include:- Webhooks: Have your VoIP provider notify your server when a call ends or when the recording is ready.
- Incremental polling: Periodically check call logs or recording endpoints until the recording URL becomes available.
Exact fields vary by VoIP provider — use whatever fields your provider includes as metadata that will be used to facilitate the matching of the recording to a rep and CRM object in Siro as outlined in the data model.
Payload Notes
emailandnumbermap touserEmailoruserNumberrespectively in the data model and are used to resolve the rep when theuserIdis not available.- Best practice: use the VoIP payload to look up the rep’s Siro
userIdand match the recording to the correctuserId. This will enable the most reliable linking of recording to a rep. Use this endpoint to get rep’s SirouserIdto map recordings to reps https://docs.siro.ai/api-references/get-users.
3.2 Fetch — Download the Audio from Your VoIP Provider
VoIP → Your Server
Use therecording_url and your VoIP credentials to download the audio file. Follow the instructions of your VoIP provider for guidance on how to download audio files via API.
Payload Notes
- Supported formats: .mp3, .aac, .wav.
- Max File Size: 100MB
3.3 Forward — Upload the Phone Recording to Siro
Your Server → Siro API
Uploading to Siro is a three-step process: get a signed URL, upload recording via the signed upload URL, then create the recording in Siro.1. Get a Signed Upload URL & Download URL
Post to the signed-urls endpoint to receive anuploadUrl to upload your recording to Siro in step 2 and a downloadUrl as a unique identifier for attaching metadata to your uploaded recording in Siro in step 3.
Endpoint: POST /v1/core/recordings/signed-urls
Request
200 OK
Payload notes
- Use
uploadUrlto complete upload recording in step 2 downloadUrlwill be a unique identifier that needs to be passed in step 3 to attach recording metadata to the uploaded recording
2. Upload recording to the uploadUrl
Make a PUT request to the uploadUrl
Request
2xx OK
- This code means that the recording was uploaded successfully.
- The upload must be completed successfully before moving to the next step — creating recording in Siro.
3. Create the Recording
Once the audio file is uploaded,POST to the recordings endpoint.
Use the downloadUrl identifier from step 1 to attach correct metadata to the related audio file to match the audio file to the correct rep, match the audio file to the correct CRM object, and allow the recording to be processed properly in Siro.
Endpoint: POST /v2/core/recordings
Request
201 Created
Payload notes:
dateCreated: Use the actual call time (not the upload time).- Recording ↔ User (rep attribution) : Provide
userIdwhen possible. If not, provideuserEmailoruserNumberso Siro can attach the recording to the correct rep.- If there is no
userId,userEmail, oruserNumberthe recording will not be ingested or processed.
- If there is no
- Recording ↔ CRM Objects (CRM linking) : If your CRM is integrated, include
integrationConnectionIdandcrmObjectsto create a link between the recording and the CRM object.- If
crmObjectsare not available to share, sharecustomerNameandcustomerPhonefor suggested linking in Siro.
- If
Notes
- Recordings should be available in Siro platform within 30 minutes of upload
- Technical questions: Email your Customer Success Manager or reach out to customersuccess@siro.ai
- API issues: Include your request details (method, endpoint, payload) and organization ID when reaching out.