export async function twilioApiRequest(params: { baseUrl: string; accountSid: string; authToken: string; endpoint: string; body: Record; allowNotFound?: boolean; }): Promise { const response = await fetch(`${params.baseUrl}${params.endpoint}`, { method: "POST", headers: { Authorization: `Basic ${Buffer.from(`${params.accountSid}:${params.authToken}`).toString("base64")}`, "Content-Type": "application/x-www-form-urlencoded", }, body: new URLSearchParams(params.body), }); if (!response.ok) { if (params.allowNotFound && response.status === 404) { return undefined as T; } const errorText = await response.text(); throw new Error(`Twilio API error: ${response.status} ${errorText}`); } const text = await response.text(); return text ? (JSON.parse(text) as T) : (undefined as T); }