Seth commited on
Commit
b765ec8
·
1 Parent(s): d154f53
Files changed (1) hide show
  1. backend/app/smartlead_client.py +28 -17
backend/app/smartlead_client.py CHANGED
@@ -113,25 +113,36 @@ class SmartleadClient:
113
  def create_campaign(self, name: str) -> Dict:
114
  """Create a new campaign
115
 
116
- According to Smartlead API docs, the endpoint might be:
117
- POST /campaigns/create or POST /campaigns
118
- With body: {"campaign_name": "..."}
119
  """
120
- # Try the standard format first
121
- data = {
122
- "campaign_name": name
123
- }
124
- try:
125
- return self._make_request("POST", "/campaigns/create", data)
126
- except Exception as e:
127
- # If /campaigns/create fails, try /campaigns
128
- if "400" in str(e) or "404" in str(e):
 
 
 
129
  try:
130
- return self._make_request("POST", "/campaigns", data)
131
- except:
132
- # Re-raise original error
133
- raise e
134
- raise
 
 
 
 
 
 
 
 
 
135
 
136
  def save_campaign_sequence(self, campaign_id: str, sequences: List[Dict]) -> Dict:
137
  """Save campaign sequence steps"""
 
113
  def create_campaign(self, name: str) -> Dict:
114
  """Create a new campaign
115
 
116
+ Smartlead API might expect different parameter names.
117
+ Try common variations: "name", "campaign_name", "title"
 
118
  """
119
+ # Try different parameter name variations
120
+ variations = [
121
+ {"name": name}, # Most common format
122
+ {"campaign_name": name}, # Alternative
123
+ {"title": name}, # Another alternative
124
+ ]
125
+
126
+ endpoints = ["/campaigns/create", "/campaigns"]
127
+
128
+ last_error = None
129
+ for endpoint in endpoints:
130
+ for data in variations:
131
  try:
132
+ return self._make_request("POST", endpoint, data)
133
+ except Exception as e:
134
+ last_error = e
135
+ # If it's a 400 error about parameter name, try next variation
136
+ if "400" in str(e) and ("not allowed" in str(e) or "invalid" in str(e).lower()):
137
+ continue
138
+ # If it's a 404, try next endpoint
139
+ if "404" in str(e):
140
+ break
141
+ # For other errors, re-raise
142
+ raise
143
+
144
+ # If all variations failed, raise the last error
145
+ raise last_error if last_error else Exception("Failed to create campaign: All parameter variations failed")
146
 
147
  def save_campaign_sequence(self, campaign_id: str, sequences: List[Dict]) -> Dict:
148
  """Save campaign sequence steps"""