Regenerate campaign
curl --request POST \
--url https://prod-platform-core-api.20x.business/api/v1/campaigns/{id}/regenerate \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"dispositions": [
"<string>"
]
}
'import requests
url = "https://prod-platform-core-api.20x.business/api/v1/campaigns/{id}/regenerate"
payload = { "dispositions": ["<string>"] }
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({dispositions: ['<string>']})
};
fetch('https://prod-platform-core-api.20x.business/api/v1/campaigns/{id}/regenerate', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));Voice Campaigns
Regenerate campaign
Create a follow-up campaign targeting contacts by their final call disposition
POST
/
campaigns
/
{id}
/
regenerate
Regenerate campaign
curl --request POST \
--url https://prod-platform-core-api.20x.business/api/v1/campaigns/{id}/regenerate \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"dispositions": [
"<string>"
]
}
'import requests
url = "https://prod-platform-core-api.20x.business/api/v1/campaigns/{id}/regenerate"
payload = { "dispositions": ["<string>"] }
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({dispositions: ['<string>']})
};
fetch('https://prod-platform-core-api.20x.business/api/v1/campaigns/{id}/regenerate', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));Creates a new draft campaign and an isolated contact list containing only contacts whose final call disposition in the source campaign matched one of the specified criteria (e.g.
NO_ANSWER, BUSY, or FAILED).
The source campaign must be in
COMPLETED or FAILED status before it can be regenerated.Path parameters
string
required
The unique UUID of the source campaign to regenerate from.
Body parameters
string[]
required
Array of final call dispositions to include. Supported values:
NO_ANSWERBUSYFAILEDANSWEREDVOICEMAIL
string
Custom name for the new regenerated campaign. Defaults to
"{source.name} — Regenerated".integer
Override maximum retry attempts (1 to 10) for the new campaign.
integer
Override redial delay in minutes for the new campaign.
integer
Override dial timeout in seconds (10 to 300) for the new campaign.
curl -X POST https://prod-campaign-engine-api.20x.business/api/v1/campaigns/770e8400-e29b-41d4-a716-446655440000/regenerate \
-H "Authorization: Bearer $AGENTIC_OS_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"dispositions": ["NO_ANSWER", "BUSY"],
"name": "Q3 Renewal Outreach — Unreached Retry",
"maxAttempts": 2,
"dialTimeout": 60
}'
import requests
response = requests.post(
"https://prod-campaign-engine-api.20x.business/api/v1/campaigns/770e8400-e29b-41d4-a716-446655440000/regenerate",
headers={
"Authorization": f"Bearer {API_KEY}",
"Content-Type": "application/json",
},
json={
"dispositions": ["NO_ANSWER", "BUSY"],
"name": "Q3 Renewal Outreach — Unreached Retry",
"maxAttempts": 2,
"dialTimeout": 60,
},
)
print(response.json())
const response = await fetch(
"https://prod-campaign-engine-api.20x.business/api/v1/campaigns/770e8400-e29b-41d4-a716-446655440000/regenerate",
{
method: "POST",
headers: {
Authorization: `Bearer ${API_KEY}`,
"Content-Type": "application/json",
},
body: JSON.stringify({
dispositions: ["NO_ANSWER", "BUSY"],
name: "Q3 Renewal Outreach — Unreached Retry",
maxAttempts: 2,
dialTimeout: 60,
}),
},
);
const data = await response.json();
console.log(data);
Response
{
"id": "880e8400-e29b-41d4-a716-446655440000",
"tenantId": "990e8400-e29b-41d4-a716-446655440000",
"name": "Q3 Renewal Outreach — Unreached Retry",
"description": "Customer renewal follow-ups",
"agentId": "11111111-1111-1111-1111-111111111111",
"voiceNumberId": "22222222-2222-2222-2222-222222222222",
"contactListId": "44444444-4444-4444-4444-444444444444",
"status": "DRAFT",
"totalContacts": 38,
"dialedContacts": 0,
"answeredContacts": 0,
"dialTimeout": 60,
"maxAttempts": 2,
"redialDelayMin": 60,
"metadata": {
"sourceRegenerationId": "770e8400-e29b-41d4-a716-446655440000",
"regeneratedFromDispositions": ["NO_ANSWER", "BUSY"]
},
"createdAt": "2026-06-02T09:00:00.000Z",
"updatedAt": "2026-06-02T09:00:00.000Z"
}

