Skip to main content
AI/MLjeremylongshore

retellai-core-workflow-b

"Retell AI core workflow b \u2014 AI voice agent and phone call automation.\n\

Stars
2,267
Source
jeremylongshore/claude-code-plugins-plus-skills
Updated
2026-05-31
Slug
jeremylongshore--claude-code-plugins-plus-skills--retellai-core-workflow-b
View on GitHubRaw SKILL.md

// install — copy + paste into any project

mkdir -p .claude/skills && curl -fsSL https://raw.githubusercontent.com/jeremylongshore/claude-code-plugins-plus-skills/HEAD/plugins/saas-packs/retellai-pack/skills/retellai-core-workflow-b/SKILL.md -o .claude/skills/retellai-core-workflow-b.md

Drops the SKILL.md into .claude/skills/retellai-core-workflow-b.md. Works with Claude Code, Cursor, and any agent that loads SKILL.md files from .claude/skills/.

Retell AI Core Workflow B

Overview

Manage phone calls: outbound campaigns, call transfers, recordings, and concurrent call handling.

Prerequisites

  • Completed retellai-core-workflow-a

Instructions

Step 1: Outbound Call Campaign

const phoneNumbers = ['+14155551001', '+14155551002', '+14155551003'];

for (const number of phoneNumbers) {
  try {
    const call = await retell.call.createPhoneCall({
      from_number: process.env.RETELL_PHONE_NUMBER!,
      to_number: number,
      override_agent_id: agentId,
      metadata: { campaign: 'appointment-reminder', date: '2026-04-01' },
    });
    console.log(`Called ${number}: ${call.call_id}`);
  } catch (err) {
    console.error(`Failed to call ${number}: ${err.message}`);
  }
  // Rate limit: space calls apart
  await new Promise(r => setTimeout(r, 2000));
}

Step 2: List and Filter Calls

const calls = await retell.call.list({
  sort_order: 'descending',
  limit: 20,
});
for (const call of calls) {
  console.log(`${call.call_id}: ${call.call_status} — ${call.end_timestamp - call.start_timestamp}ms`);
}

Step 3: Get Call Recording and Transcript

const callDetail = await retell.call.retrieve(callId);
if (callDetail.recording_url) {
  console.log(`Recording: ${callDetail.recording_url}`);
}
if (callDetail.transcript) {
  console.log(`Transcript:\n${callDetail.transcript}`);
}

Output

  • Outbound call campaign with rate limiting
  • Call listing with status and duration
  • Recordings and transcripts retrieved

Error Handling

Error Cause Solution
Call fails immediately Bad phone number format Use E.164 format
No recording Recording not enabled Enable in agent settings
Concurrent limit Too many active calls Upgrade plan or queue calls

Resources

Next Steps

Handle call events: retellai-webhooks-events