Skip to main content

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​

  1. Mute on Entry: For large conferences, mute participants on entry
  2. Clear Audio: Unmute only active speakers to maintain clarity
  3. Hold Music: Use hold music when placing participants on hold
  4. Notifications: Inform participants when muted/unmuted
  5. Testing: Test audio controls before hosting large events
  6. Backup: Have a backup participant in case presenter disconnects

Participant Audio States​

StateDescriptionActions Available
speakingParticipant unmuted, actively talkingMute, Hold, Disconnect
mutedParticipant muted, cannot be heardUnmute, Hold, Disconnect
on_holdParticipant on hold with musicResume, Disconnect
disconnectedParticipant no longer in conferenceReconnect (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