Conference Controls
Control conference audio settings, mute/unmute participants, place participants on hold, and manage conference flow.
Endpoints​
Mute Participant​
POST https://api.audian.com:8443/v2/conferences/{conferenceId}/participants/{participantId}/mute
Unmute Participant​
POST https://api.audian.com:8443/v2/conferences/{conferenceId}/participants/{participantId}/unmute
Hold Participant​
POST https://api.audian.com:8443/v2/conferences/{conferenceId}/participants/{participantId}/hold
Resume Participant​
POST https://api.audian.com:8443/v2/conferences/{conferenceId}/participants/{participantId}/resume
Disconnect Participant​
POST https://api.audian.com:8443/v2/conferences/{conferenceId}/participants/{participantId}/disconnect
Mute All Participants​
POST https://api.audian.com:8443/v2/conferences/{conferenceId}/mute-all
Mute Participant​
Mute audio from a specific participant.
Request​
curl -X POST https://api.audian.com:8443/v2/conferences/conf_abc123def456/participants/part_xyz789/mute \
-H "X-Auth-Token: YOUR_API_KEY" \
-H "Content-Type: application/json"
JavaScript/Node.js​
const axios = require('axios');
const muteParticipant = async (conferenceId, participantId) => {
try {
const response = await axios.post(
`https://api.audian.com:8443/v2/conferences/${conferenceId}/participants/${participantId}/mute`,
{},
{
headers: {
'Authorization': 'Bearer YOUR_API_KEY',
'Content-Type': 'application/json'
}
}
);
console.log('Participant muted:', response.data);
} catch (error) {
console.error('Failed to mute:', error);
}
};
// Usage
muteParticipant('conf_abc123def456', 'part_xyz789');
Python​
import requests
def mute_participant(api_key, conference_id, participant_id):
url = f'https://api.audian.com:8443/v2/conferences/{conference_id}/participants/{participant_id}/mute'
headers = {
'X-Auth-Token': api_key,
'Content-Type': 'application/json'
}
response = requests.post(url, headers=headers)
return response.json()
# Usage
result = mute_participant(
api_key='YOUR_API_KEY',
conference_id='conf_abc123def456',
participant_id='part_xyz789'
)
print(result)
Mute All Participants​
Mute all participants in the conference at once.
curl -X POST https://api.audian.com:8443/v2/conferences/conf_abc123def456/mute-all \
-H "X-Auth-Token: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"allow_presenter_unmute": true,
"except_participants": ["part_xyz789"]
}'
Hold Participant​
Place a participant on hold while keeping them in the conference.
curl -X POST https://api.audian.com:8443/v2/conferences/conf_abc123def456/participants/part_xyz789/hold \
-H "X-Auth-Token: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"hold_music_id": "media_hold_music_123"
}'
Disconnect Participant​
Remove a participant from the conference.
curl -X POST https://api.audian.com:8443/v2/conferences/conf_abc123def456/participants/part_xyz789/disconnect \
-H "X-Auth-Token: YOUR_API_KEY" \
-H "Content-Type: application/json"
Response Format​
Success (200)​
{
"id": "part_xyz789",
"conference_id": "conf_abc123def456",
"phone_number": "+12025551234",
"name": "John Smith",
"status": "connected",
"muted": true,
"on_hold": false,
"duration": 245,
"updated_at": "2024-02-04T11:20:00Z"
}
Batch Operations​
Mute Multiple Participants​
const muteMultiple = async (conferenceId, participantIds) => {
const results = [];
for (const participantId of participantIds) {
try {
const response = await axios.post(
`https://api.audian.com:8443/v2/conferences/${conferenceId}/participants/${participantId}/mute`,
{},
{
headers: {
'Authorization': 'Bearer YOUR_API_KEY',
'Content-Type': 'application/json'
}
}
);
results.push({ participantId, status: 'muted' });
} catch (error) {
results.push({ participantId, status: 'failed', error: error.message });
}
}
return results;
};
Conference Control Workflow​
Typical Meeting Start Sequence​
// 1. Create conference
const conference = await createConference('Team Standup', 20);
// 2. Add participants
const presenter = await addParticipant(conference.id, '+1-presenter', 'Leader');
const attendee1 = await addParticipant(conference.id, '+1-attendee1', 'Dev 1');
const attendee2 = await addParticipant(conference.id, '+1-attendee2', 'Dev 2');
// 3. Mute attendees for opening remarks
await muteParticipant(conference.id, attendee1.id);
await muteParticipant(conference.id, attendee2.id);
// 4. Unmute for discussion
await unmuteParticipant(conference.id, attendee1.id);
await unmuteParticipant(conference.id, attendee2.id);
// 5. Disconnect when done
await disconnectParticipant(conference.id, attendee1.id);
Webinar Moderation Pattern​
// All listeners muted on entry
await muteAll(conference.id, { allow_presenter_unmute: false });
// Selectively unmute speakers
for (const speaker of speakers) {
await unmuteParticipant(conference.id, speaker.id);
}
// Re-mute noisy speaker
await muteParticipant(conference.id, disruptive_participant.id);
Best Practices​
- Mute on Entry: For large conferences, mute participants on entry
- Clear Audio: Unmute only active speakers to maintain clarity
- Hold Music: Use hold music when placing participants on hold
- Notifications: Inform participants when muted/unmuted
- Testing: Test audio controls before hosting large events
- Backup: Have a backup participant in case presenter disconnects
Participant Audio States​
| State | Description | Actions Available |
|---|---|---|
speaking | Participant unmuted, actively talking | Mute, Hold, Disconnect |
muted | Participant muted, cannot be heard | Unmute, Hold, Disconnect |
on_hold | Participant on hold with music | Resume, Disconnect |
disconnected | Participant no longer in conference | Reconnect (new participant) |
Limits and Quotas​
- Max mute/unmute operations: 100 per second per conference
- Max hold capacity: Equal to max participants
- Control latency: < 500ms for most operations
- Concurrent control operations: Unlimited