API reference
Dialer
Outbound dialer and SMS campaigns, their numbers, caller IDs and results.
49 operationsBase URL https://packetexchange.io/api/v1Postman collection
BrowseDialer
Ask the dialer assistant a question or give it an instruction
POST/
- Access
- API key. Scoped keys need
dialer:write. - Rate limit
- 20 requests per minute
A conversational assistant that reads and operates YOUR dialer (campaigns, numbers, caller IDs). Send the history from the previous reply to continue a conversation. actions lists what it did, including any writes.
Request body (application/json)
| Field | Type | Description |
|---|---|---|
messagerequired | string | -max 4000 chars |
history | any[] | The history returned by the previous turn |
Response 200
| Field | Type | Description |
|---|---|---|
datarequired | object | - |
replyrequireddata.reply | string | - |
actionsrequireddata.actions | object[] | - |
toolrequireddata.actions[].tool | string | - |
okrequireddata.actions[].ok | boolean | - |
writerequireddata.actions[].write | boolean | - |
suggestionsrequireddata.suggestions | string[] | - |
historyrequireddata.history | any[] | - |
Errors
- 400
VALIDATION_ERROR,INVALID_INPUTorBAD_REQUEST. ForVALIDATION_ERROR,error.detailsis an array of{ path, message }. - 401
UNAUTHORIZED: missing, invalid, expired or revoked credential. - 403
FORBIDDEN: not allowed - a scoped key lacks the scope, or the endpoint is session-only. - 409
CONFLICT(or a code-specific 409): the change clashes with existing state. - 429
RATE_LIMITED: slow down and retry after theRetry-Afterseconds. - 500
INTERNAL_ERROR: unexpected failure. QuoteX-Request-Idto support.
Get dialer analytics across all your campaigns
GET/
- Access
- API key. Full-access keys only; not reachable by scoped keys.
- Rate limit
- 100 requests per second (the default)
Defaults to the last 30 days when from/to are omitted.
Parameters
| Name | In | Type | Description |
|---|---|---|---|
from | query | string | ISO date/time |
to | query | string | ISO date/time |
Response 200
| Field | Type | Description |
|---|---|---|
datarequired | object | - |
windowrequireddata.window | object | - |
fromrequireddata.window.from | string (date-time) | ISO-8601 timestamp (UTC) |
torequireddata.window.to | string (date-time) | ISO-8601 timestamp (UTC) |
campaignsrequireddata.campaigns | object | Campaign counts by status, plus total |
headlinerequireddata.headline | object | - |
dialedrequireddata.headline.dialed | integer | - |
answeredrequireddata.headline.answered | integer | - |
failedrequireddata.headline.failed | integer | - |
connectRaterequireddata.headline.connectRate | number | - |
acdrequireddata.headline.acd | number | - |
talkMinutesrequireddata.headline.talkMinutes | number | - |
spendrequireddata.headline.spend | number | USD, a display number |
costPerAnsweredrequireddata.headline.costPerAnswered | number | - |
costPerMinuterequireddata.headline.costPerMinute | number | - |
topDestinationsrequireddata.topDestinations | object[] | - |
dialedrequireddata.topDestinations[].dialed | integer | - |
answeredrequireddata.topDestinations[].answered | integer | - |
asrrequireddata.topDestinations[].asr | number | - |
prefixrequireddata.topDestinations[].prefix | string | - |
byHourrequireddata.byHour | object[] | - |
dailyrequireddata.daily | object[] | - |
dialedrequireddata.daily[].dialed | integer | - |
answeredrequireddata.daily[].answered | integer | - |
asrrequireddata.daily[].asr | number | - |
dayrequireddata.daily[].day | string | - |
topCampaignsrequireddata.topCampaigns | object[] | - |
dialedrequireddata.topCampaigns[].dialed | integer | - |
answeredrequireddata.topCampaigns[].answered | integer | - |
asrrequireddata.topCampaigns[].asr | number | - |
idrequireddata.topCampaigns[].id | string (uuid) | - |
namerequireddata.topCampaigns[].name | string | - |
statusrequireddata.topCampaigns[].status | string | -One of draft, ready, running, paused, completed, failed |
Errors
- 400
VALIDATION_ERROR,INVALID_INPUTorBAD_REQUEST. ForVALIDATION_ERROR,error.detailsis an array of{ path, message }. - 401
UNAUTHORIZED: missing, invalid, expired or revoked credential. - 403
FORBIDDEN: not allowed - a scoped key lacks the scope, or the endpoint is session-only. - 429
RATE_LIMITED: slow down and retry after theRetry-Afterseconds. - 500
INTERNAL_ERROR: unexpected failure. QuoteX-Request-Idto support.
Get detailed analytics for one campaign
GET/
- Access
- API key. Full-access keys only; not reachable by scoped keys.
- Rate limit
- 100 requests per second (the default)
Parameters
| Name | In | Type | Description |
|---|---|---|---|
idrequired | path | string (uuid) | - |
Response 200
| Field | Type | Description |
|---|---|---|
datarequired | object | - |
campaignrequireddata.campaign | object | - |
idrequireddata.campaign.id | string (uuid) | - |
namerequireddata.campaign.name | string | - |
statusrequireddata.campaign.status | string | -One of draft, ready, running, paused, completed, failed |
kindrequireddata.campaign.kind | string | -One of voice, sms |
headlinerequireddata.headline | object | - |
dialedrequireddata.headline.dialed | integer | - |
answeredrequireddata.headline.answered | integer | - |
failedrequireddata.headline.failed | integer | - |
connectRaterequireddata.headline.connectRate | number | - |
acdrequireddata.headline.acd | number | - |
talkMinutesrequireddata.headline.talkMinutes | number | - |
spendrequireddata.headline.spend | number | USD, a display number |
costPerAnsweredrequireddata.headline.costPerAnswered | number | - |
costPerMinuterequireddata.headline.costPerMinute | number | - |
totalNumbersrequireddata.headline.totalNumbers | integer | - |
pendingrequireddata.headline.pending | integer | - |
asrrequireddata.headline.asr | number | - |
bestHourrequireddata.headline.bestHour | object | null | - |
hourrequireddata.headline.bestHour.hour | integer | - |
asrrequireddata.headline.bestHour.asr | number | - |
tzrequireddata.headline.bestHour.tz | string | - |
dispositionsrequireddata.dispositions | object[] | - |
statusrequireddata.dispositions[].status | string | - |
countrequireddata.dispositions[].count | integer | - |
pctrequireddata.dispositions[].pct | number | - |
failureCausesrequireddata.failureCauses | object[] | - |
coderequireddata.failureCauses[].code | integer | - |
labelrequireddata.failureCauses[].label | string | - |
countrequireddata.failureCauses[].count | integer | - |
byHourrequireddata.byHour | object[] | - |
byDayOfWeekrequireddata.byDayOfWeek | object[] | - |
dialedrequireddata.byDayOfWeek[].dialed | integer | - |
answeredrequireddata.byDayOfWeek[].answered | integer | - |
asrrequireddata.byDayOfWeek[].asr | number | - |
dowrequireddata.byDayOfWeek[].dow | integer | - |
byDestinationrequireddata.byDestination | object[] | - |
dialedrequireddata.byDestination[].dialed | integer | - |
answeredrequireddata.byDestination[].answered | integer | - |
asrrequireddata.byDestination[].asr | number | - |
prefixrequireddata.byDestination[].prefix | string | - |
acdrequireddata.byDestination[].acd | number | - |
retryEffectivenessrequireddata.retryEffectiveness | object[] | - |
dialedrequireddata.retryEffectiveness[].dialed | integer | - |
answeredrequireddata.retryEffectiveness[].answered | integer | - |
asrrequireddata.retryEffectiveness[].asr | number | - |
attemptrequireddata.retryEffectiveness[].attempt | integer | - |
dailyrequireddata.daily | object[] | - |
dialedrequireddata.daily[].dialed | integer | - |
answeredrequireddata.daily[].answered | integer | - |
asrrequireddata.daily[].asr | number | - |
dayrequireddata.daily[].day | string | - |
Errors
- 400
VALIDATION_ERROR,INVALID_INPUTorBAD_REQUEST. ForVALIDATION_ERROR,error.detailsis an array of{ path, message }. - 401
UNAUTHORIZED: missing, invalid, expired or revoked credential. - 403
FORBIDDEN: not allowed - a scoped key lacks the scope, or the endpoint is session-only. - 404
NOT_FOUND: no such resource on your account. - 429
RATE_LIMITED: slow down and retry after theRetry-Afterseconds. - 500
INTERNAL_ERROR: unexpected failure. QuoteX-Request-Idto support.
List your dialer and SMS campaigns
GET/
- Access
- API key. Full-access keys only; not reachable by scoped keys.
- Rate limit
- 100 requests per second (the default)
Parameters
| Name | In | Type | Description |
|---|---|---|---|
status | query | string | -One of draft, ready, running, paused, completed, failed |
search | query | string | - |
cursor | query | string (uuid) | - |
limit | query | integer | -Default 25 |
Response 200
| Field | Type | Description |
|---|---|---|
datarequired | object[] | - |
idrequireddata[].id | string (uuid) | - |
userIdrequireddata[].userId | string (uuid) | - |
routeIdrequireddata[].routeId | string (uuid) | null | The purchased route the campaign sends over |
namerequireddata[].name | string | - |
kindrequireddata[].kind | string | -One of voice, sms |
environmentrequireddata[].environment | string | test = created with a test key; simulated, never really dialled or billedOne of live, test |
statusrequireddata[].status | string | -One of draft, ready, running, paused, completed, failed |
messageBodyrequireddata[].messageBody | string | null | SMS campaigns: the message text |
senderIdrequireddata[].senderId | string | null | SMS campaigns: the sender ID |
aiAgentIdrequireddata[].aiAgentId | string (uuid) | null | Voice campaigns: the AI voice agent that handles answered calls |
concurrencyrequireddata[].concurrency | integer | - |
maxCallDurationrequireddata[].maxCallDuration | integer | Seconds |
callIntervalrequireddata[].callInterval | integer | - |
platformFeePerCallrequireddata[].platformFeePerCall | money | USD as a decimal string with exactly 6 places, e.g. "0.012500". |
totalNumbersrequireddata[].totalNumbers | integer | - |
totalClisrequireddata[].totalClis | integer | - |
cliSetIdrequireddata[].cliSetId | string (uuid) | null | - |
cliStrategyrequireddata[].cliStrategy | object | null | Caller-ID rotation strategy, when a caller-ID set is assigned |
numbersDialedrequireddata[].numbersDialed | integer | - |
numbersAnsweredrequireddata[].numbersAnswered | integer | - |
numbersFailedrequireddata[].numbersFailed | integer | - |
totalDurationSecondsrequireddata[].totalDurationSeconds | integer | - |
windowStartHourrequireddata[].windowStartHour | integer | null | - |
windowEndHourrequireddata[].windowEndHour | integer | null | - |
windowTzrequireddata[].windowTz | string | null | - |
maxAttemptsrequireddata[].maxAttempts | integer | - |
retryDelayMinutesrequireddata[].retryDelayMinutes | integer | - |
maxSpendrequireddata[].maxSpend | money | null | Budget cap; the campaign pauses when reached USD as a decimal string with exactly 6 places, e.g. "0.012500". |
scheduleAtrequireddata[].scheduleAt | string (date-time) | null | ISO-8601 timestamp (UTC) |
startedAtrequireddata[].startedAt | string (date-time) | null | ISO-8601 timestamp (UTC) |
completedAtrequireddata[].completedAt | string (date-time) | null | ISO-8601 timestamp (UTC) |
createdAtrequireddata[].createdAt | string (date-time) | ISO-8601 timestamp (UTC) |
updatedAtrequireddata[].updatedAt | string (date-time) | ISO-8601 timestamp (UTC) |
nextCursorrequired | string | null | Pass as cursor to fetch the next page; null on the last page. |
hasMorerequired | boolean | True when another page exists. |
Errors
- 400
VALIDATION_ERROR,INVALID_INPUTorBAD_REQUEST. ForVALIDATION_ERROR,error.detailsis an array of{ path, message }. - 401
UNAUTHORIZED: missing, invalid, expired or revoked credential. - 403
FORBIDDEN: not allowed - a scoped key lacks the scope, or the endpoint is session-only. - 429
RATE_LIMITED: slow down and retry after theRetry-Afterseconds. - 500
INTERNAL_ERROR: unexpected failure. QuoteX-Request-Idto support.
Create a dialer or SMS campaign
POST/
- Access
- API key. Scoped keys need
dialer:write. - Rate limit
- 100 requests per second (the default)
Creates the campaign in draft. Add numbers (POST /campaigns/{id}/numbers or /contacts/import), then start it with POST /campaigns/{id}/control. A campaign created with a test key is simulated and never really dialled or billed.
Request body (application/json)
| Field | Type | Description |
|---|---|---|
namerequired | string | -max 255 chars |
routeIdrequired | string (uuid) | - |
kind | string | -One of voice, sms |
messageBody | string | -max 1600 chars |
senderId | string | -max 20 chars |
targetAcd | string | - |
targetAsr | string | - |
concurrency | integer | -1 to 128, default 1 |
maxCallDuration | integer | -1 to 3600, default 300 |
callInterval | integer | -0 to 60000, default 0 |
notes | string | -max 2000 chars |
windowStartHour | integer | -0 to 23 |
windowEndHour | integer | -0 to 23 |
windowTz | string | -max 64 chars |
maxAttempts | integer | -1 to 10, default 1 |
retryDelayMinutes | integer | -1 to 1440, default 60 |
maxSpend | string | - |
scheduleAt | string (date-time) | - |
aiAgentId | string (uuid) | null | - |
Response 201
| Field | Type | Description |
|---|---|---|
datarequired | object | Same fields as DialerCampaign, shown earlier on this page. |
Errors
- 400
VALIDATION_ERROR,INVALID_INPUTorBAD_REQUEST. ForVALIDATION_ERROR,error.detailsis an array of{ path, message }. - 401
UNAUTHORIZED: missing, invalid, expired or revoked credential. - 403
FORBIDDEN: not allowed - a scoped key lacks the scope, or the endpoint is session-only. - 409
CONFLICT(or a code-specific 409): the change clashes with existing state. - 429
RATE_LIMITED: slow down and retry after theRetry-Afterseconds. - 500
INTERNAL_ERROR: unexpected failure. QuoteX-Request-Idto support.
Get a campaign
GET/
- Access
- API key. Scoped keys need
dialer:write. - Rate limit
- 100 requests per second (the default)
Parameters
| Name | In | Type | Description |
|---|---|---|---|
idrequired | path | string (uuid) | - |
Response 200
| Field | Type | Description |
|---|---|---|
datarequired | object | Same fields as DialerCampaign, shown earlier on this page. |
Errors
- 400
VALIDATION_ERROR,INVALID_INPUTorBAD_REQUEST. ForVALIDATION_ERROR,error.detailsis an array of{ path, message }. - 401
UNAUTHORIZED: missing, invalid, expired or revoked credential. - 403
FORBIDDEN: not allowed - a scoped key lacks the scope, or the endpoint is session-only. - 404
NOT_FOUND: no such resource on your account. - 429
RATE_LIMITED: slow down and retry after theRetry-Afterseconds. - 500
INTERNAL_ERROR: unexpected failure. QuoteX-Request-Idto support.
Update a campaign
PUT/
- Access
- API key. Scoped keys need
dialer:write. - Rate limit
- 100 requests per second (the default)
Parameters
| Name | In | Type | Description |
|---|---|---|---|
idrequired | path | string (uuid) | - |
Request body (application/json)
| Field | Type | Description |
|---|---|---|
name | string | -max 255 chars |
messageBody | string | null | -max 1600 chars |
senderId | string | null | -max 20 chars |
targetAcd | string | null | - |
targetAsr | string | null | - |
concurrency | integer | -1 to 128 |
maxCallDuration | integer | -1 to 3600 |
callInterval | integer | -0 to 60000 |
notes | string | null | -max 2000 chars |
windowStartHour | integer | null | -0 to 23 |
windowEndHour | integer | null | -0 to 23 |
windowTz | string | null | -max 64 chars |
maxAttempts | integer | -1 to 10 |
retryDelayMinutes | integer | -1 to 1440 |
maxSpend | string | null | - |
scheduleAt | string (date-time) | null | - |
aiAgentId | string (uuid) | null | - |
Response 200
| Field | Type | Description |
|---|---|---|
datarequired | object | Same fields as DialerCampaign, shown earlier on this page. |
Errors
- 400
VALIDATION_ERROR,INVALID_INPUTorBAD_REQUEST. ForVALIDATION_ERROR,error.detailsis an array of{ path, message }. - 401
UNAUTHORIZED: missing, invalid, expired or revoked credential. - 403
FORBIDDEN: not allowed - a scoped key lacks the scope, or the endpoint is session-only. - 404
NOT_FOUND: no such resource on your account. - 409
CONFLICT(or a code-specific 409): the change clashes with existing state. - 429
RATE_LIMITED: slow down and retry after theRetry-Afterseconds. - 500
INTERNAL_ERROR: unexpected failure. QuoteX-Request-Idto support.
Delete a campaign
DELETE/
- Access
- API key. Scoped keys need
dialer:write. - Rate limit
- 100 requests per second (the default)
Parameters
| Name | In | Type | Description |
|---|---|---|---|
idrequired | path | string (uuid) | - |
Response 200
| Field | Type | Description |
|---|---|---|
datarequired | object | - |
messagerequireddata.message | string | - |
Errors
- 400
VALIDATION_ERROR,INVALID_INPUTorBAD_REQUEST. ForVALIDATION_ERROR,error.detailsis an array of{ path, message }. - 401
UNAUTHORIZED: missing, invalid, expired or revoked credential. - 403
FORBIDDEN: not allowed - a scoped key lacks the scope, or the endpoint is session-only. - 404
NOT_FOUND: no such resource on your account. - 409
CONFLICT(or a code-specific 409): the change clashes with existing state. - 429
RATE_LIMITED: slow down and retry after theRetry-Afterseconds. - 500
INTERNAL_ERROR: unexpected failure. QuoteX-Request-Idto support.
Start, pause or stop a campaign
POST/
- Access
- API key. Scoped keys need
dialer:write. - Rate limit
- 100 requests per second (the default)
- Real traffic
- Starting a campaign dials real numbers or sends real messages, billed as they happen.
Starting spends money: calls and messages are billed to your balance as they happen. Start is refused with VALIDATION_ERROR when the balance is insufficient or the campaign has no numbers.
Parameters
| Name | In | Type | Description |
|---|---|---|---|
idrequired | path | string (uuid) | - |
Request body (application/json)
| Field | Type | Description |
|---|---|---|
actionrequired | string | -One of start, pause, stop |
Response 200
| Field | Type | Description |
|---|---|---|
datarequired | object | Same fields as DialerCampaign, shown earlier on this page. |
Errors
- 400
VALIDATION_ERROR,INVALID_INPUTorBAD_REQUEST. ForVALIDATION_ERROR,error.detailsis an array of{ path, message }. - 401
UNAUTHORIZED: missing, invalid, expired or revoked credential. - 403
FORBIDDEN: not allowed - a scoped key lacks the scope, or the endpoint is session-only. - 404
NOT_FOUND: no such resource on your account. - 409
CONFLICT(or a code-specific 409): the change clashes with existing state. - 429
RATE_LIMITED: slow down and retry after theRetry-Afterseconds. - 500
INTERNAL_ERROR: unexpected failure. QuoteX-Request-Idto support.
Mark a draft campaign ready to start
POST/
- Access
- API key. Scoped keys need
dialer:write. - Rate limit
- 100 requests per second (the default)
Status only; every start-time check still runs when you start it. Refused when the campaign has no contacts yet.
Parameters
| Name | In | Type | Description |
|---|---|---|---|
idrequired | path | string (uuid) | - |
Response 200
| Field | Type | Description |
|---|---|---|
datarequired | object | Same fields as DialerCampaign, shown earlier on this page. |
Errors
- 400
VALIDATION_ERROR,INVALID_INPUTorBAD_REQUEST. ForVALIDATION_ERROR,error.detailsis an array of{ path, message }. - 401
UNAUTHORIZED: missing, invalid, expired or revoked credential. - 403
FORBIDDEN: not allowed - a scoped key lacks the scope, or the endpoint is session-only. - 404
NOT_FOUND: no such resource on your account. - 409
CONFLICT(or a code-specific 409): the change clashes with existing state. - 429
RATE_LIMITED: slow down and retry after theRetry-Afterseconds. - 500
INTERNAL_ERROR: unexpected failure. QuoteX-Request-Idto support.
Get live progress and spend for a campaign
GET/
- Access
- API key. Full-access keys only; not reachable by scoped keys.
- Rate limit
- 100 requests per second (the default)
Parameters
| Name | In | Type | Description |
|---|---|---|---|
idrequired | path | string (uuid) | - |
Response 200
| Field | Type | Description |
|---|---|---|
datarequired | object | - |
totalNumbersrequireddata.totalNumbers | integer | - |
numbersDialedrequireddata.numbersDialed | integer | - |
numbersAnsweredrequireddata.numbersAnswered | integer | - |
numbersFailedrequireddata.numbersFailed | integer | - |
numbersPendingrequireddata.numbersPending | integer | - |
totalDurationSecondsrequireddata.totalDurationSeconds | integer | - |
asrrequireddata.asr | number | Answer-seizure ratio, percent |
acdrequireddata.acd | number | Average call duration, seconds |
progressrequireddata.progress | number | Percent of numbers dialled |
activeCallsrequireddata.activeCalls | integer | - |
totalSpendrequireddata.totalSpend | number | USD spent so far (a display number, not a 6-decimal string) |
maxSpendrequireddata.maxSpend | number | null | Budget cap in USD, as a number |
budgetProgressrequireddata.budgetProgress | number | null | Percent of the budget used |
Errors
- 400
VALIDATION_ERROR,INVALID_INPUTorBAD_REQUEST. ForVALIDATION_ERROR,error.detailsis an array of{ path, message }. - 401
UNAUTHORIZED: missing, invalid, expired or revoked credential. - 403
FORBIDDEN: not allowed - a scoped key lacks the scope, or the endpoint is session-only. - 404
NOT_FOUND: no such resource on your account. - 429
RATE_LIMITED: slow down and retry after theRetry-Afterseconds. - 500
INTERNAL_ERROR: unexpected failure. QuoteX-Request-Idto support.
Parse a contact file and suggest a column mapping
POST/
- Access
- API key. Scoped keys need
dialer:write. - Rate limit
- 20 requests per minute
Upload a CSV or XLSX (multipart file part, or JSON contentBase64/content, up to about 12 MB). Returns the detected columns, a suggested mapping, a preview and the data rows to send back to /contacts/import. Nothing is saved.
Request body (application/json)
| Field | Type | Description |
|---|---|---|
filename | string | -max 255 chars |
contentBase64 | string | The file, base64-encoded |
content | string | The file as plain text (CSV) |
Response 200
| Field | Type | Description |
|---|---|---|
datarequired | object | - |
hasHeaderrequireddata.hasHeader | boolean | - |
columnsrequireddata.columns | object[] | - |
indexrequireddata.columns[].index | integer | - |
labelrequireddata.columns[].label | string | - |
sampleRowsrequireddata.sampleRows | string[][] | - |
dataRowsrequireddata.dataRows | string[][] | - |
suggestedMappingrequireddata.suggestedMapping | object | - |
headerRowIndexrequireddata.suggestedMapping.headerRowIndex | integer | 0-based header row, or -1 when the file has none |
columnsrequireddata.suggestedMapping.columns | object | - |
phonerequireddata.suggestedMapping.columns.phone | integer | - |
namerequireddata.suggestedMapping.columns.name | integer | null | - |
firstNamerequireddata.suggestedMapping.columns.firstName | integer | null | - |
lastNamerequireddata.suggestedMapping.columns.lastName | integer | null | - |
extraColumnsrequireddata.suggestedMapping.extraColumns | integer[] | Columns kept as per-contact fields |
notesdata.suggestedMapping.notes | string | - |
rowCountrequireddata.rowCount | integer | - |
truncatedrequireddata.truncated | boolean | - |
Errors
- 400
VALIDATION_ERROR,INVALID_INPUTorBAD_REQUEST. ForVALIDATION_ERROR,error.detailsis an array of{ path, message }. - 401
UNAUTHORIZED: missing, invalid, expired or revoked credential. - 403
FORBIDDEN: not allowed - a scoped key lacks the scope, or the endpoint is session-only. - 409
CONFLICT(or a code-specific 409): the change clashes with existing state. - 429
RATE_LIMITED: slow down and retry after theRetry-Afterseconds. - 500
INTERNAL_ERROR: unexpected failure. QuoteX-Request-Idto support.
Import mapped contacts into a campaign or a saved list
POST/
- Access
- API key. Scoped keys need
dialer:write. - Rate limit
- 100 requests per second (the default)
Rows are re-normalised to E.164 and de-duplicated server-side, so what the preview showed is what is stored.
Request body (application/json)
| Field | Type | Description |
|---|---|---|
rowsrequired | string[][] | The dataRows returned by /contacts/parse |
mappingrequired | object | Same fields as DialerContactMapping, shown earlier on this page. |
columnLabels | object[] | - |
indexrequiredcolumnLabels[].index | integer | - |
labelrequiredcolumnLabels[].label | string | -max 255 chars |
campaignId | string (uuid) | - |
listId | string (uuid) | - |
saveAsListName | string | -max 255 chars |
keepDraft | boolean | - |
Response 201
| Field | Type | Description |
|---|---|---|
datarequired | object | - |
importedrequireddata.imported | integer | - |
skippedInvalidrequireddata.skippedInvalid | integer | - |
skippedDuprequireddata.skippedDup | integer | - |
samplerequireddata.sample | object[] | - |
numberrequireddata.sample[].number | string | - |
namerequireddata.sample[].name | string | null | - |
fieldsrequireddata.sample[].fields | object | null | - |
rejectsrequireddata.rejects | object[] | - |
rowrequireddata.rejects[].row | integer | - |
valuerequireddata.rejects[].value | string | - |
reasonrequireddata.rejects[].reason | string | - |
savedListIddata.savedListId | string (uuid) | null | - |
campaigndata.campaign | object | Same fields as DialerCampaign, shown earlier on this page. |
totalNumbersdata.totalNumbers | integer | - |
Errors
- 400
VALIDATION_ERROR,INVALID_INPUTorBAD_REQUEST. ForVALIDATION_ERROR,error.detailsis an array of{ path, message }. - 401
UNAUTHORIZED: missing, invalid, expired or revoked credential. - 403
FORBIDDEN: not allowed - a scoped key lacks the scope, or the endpoint is session-only. - 409
CONFLICT(or a code-specific 409): the change clashes with existing state. - 429
RATE_LIMITED: slow down and retry after theRetry-Afterseconds. - 500
INTERNAL_ERROR: unexpected failure. QuoteX-Request-Idto support.
List a campaign’s numbers with their call outcome
GET/
- Access
- API key. Full-access keys only; not reachable by scoped keys.
- Rate limit
- 100 requests per second (the default)
Parameters
| Name | In | Type | Description |
|---|---|---|---|
idrequired | path | string (uuid) | - |
status | query | string | -One of pending, dialing, answered, no_answer, busy, failed, skipped |
cursor | query | string (uuid) | - |
limit | query | integer | -Default 25 |
Response 200
| Field | Type | Description |
|---|---|---|
datarequired | object[] | - |
idrequireddata[].id | string (uuid) | - |
campaignIdrequireddata[].campaignId | string (uuid) | - |
numberrequireddata[].number | string | - |
statusrequireddata[].status | string | -One of pending, dialing, answered, no_answer, busy, failed, skipped |
sipResponseCoderequireddata[].sipResponseCode | integer | null | - |
durationSecondsrequireddata[].durationSeconds | integer | null | - |
attemptrequireddata[].attempt | integer | - |
nextAttemptAtrequireddata[].nextAttemptAt | string (date-time) | null | ISO-8601 timestamp (UTC) |
dialedAtrequireddata[].dialedAt | string (date-time) | null | ISO-8601 timestamp (UTC) |
answeredAtrequireddata[].answeredAt | string (date-time) | null | ISO-8601 timestamp (UTC) |
completedAtrequireddata[].completedAt | string (date-time) | null | ISO-8601 timestamp (UTC) |
createdAtrequireddata[].createdAt | string (date-time) | ISO-8601 timestamp (UTC) |
costrequireddata[].cost | money | null | Cost of the latest call to this number, when there is one USD as a decimal string with exactly 6 places, e.g. "0.012500". |
clirequireddata[].cli | string | null | Caller ID presented on the latest call |
sipCauserequireddata[].sipCause | string | null | - |
nextCursorrequired | string | null | Pass as cursor to fetch the next page; null on the last page. |
hasMorerequired | boolean | True when another page exists. |
Errors
- 400
VALIDATION_ERROR,INVALID_INPUTorBAD_REQUEST. ForVALIDATION_ERROR,error.detailsis an array of{ path, message }. - 401
UNAUTHORIZED: missing, invalid, expired or revoked credential. - 403
FORBIDDEN: not allowed - a scoped key lacks the scope, or the endpoint is session-only. - 404
NOT_FOUND: no such resource on your account. - 429
RATE_LIMITED: slow down and retry after theRetry-Afterseconds. - 500
INTERNAL_ERROR: unexpected failure. QuoteX-Request-Idto support.
Add destination numbers to a campaign
POST/
- Access
- API key. Scoped keys need
dialer:write. - Rate limit
- 100 requests per second (the default)
Invalid and duplicate numbers are skipped and reported in rejects, not failed. The campaign becomes ready unless keepDraft is set.
Parameters
| Name | In | Type | Description |
|---|---|---|---|
idrequired | path | string (uuid) | - |
Request body (application/json)
| Field | Type | Description |
|---|---|---|
numbersrequired | string[] | - |
keepDraft | boolean | - |
Response 201
| Field | Type | Description |
|---|---|---|
datarequired | object | - |
countrequireddata.count | integer | Same as inserted (kept for existing clients) |
insertedrequireddata.inserted | integer | - |
skippedrequireddata.skipped | integer | - |
rejectsrequireddata.rejects | object[] | Up to 200 rejected entries with the reason |
valuerequireddata.rejects[].value | string | - |
reasonrequireddata.rejects[].reason | string | - |
totalNumbersrequireddata.totalNumbers | integer | - |
campaignrequireddata.campaign | object | Same fields as DialerCampaign, shown earlier on this page. |
Errors
- 400
VALIDATION_ERROR,INVALID_INPUTorBAD_REQUEST. ForVALIDATION_ERROR,error.detailsis an array of{ path, message }. - 401
UNAUTHORIZED: missing, invalid, expired or revoked credential. - 403
FORBIDDEN: not allowed - a scoped key lacks the scope, or the endpoint is session-only. - 404
NOT_FOUND: no such resource on your account. - 409
CONFLICT(or a code-specific 409): the change clashes with existing state. - 429
RATE_LIMITED: slow down and retry after theRetry-Afterseconds. - 500
INTERNAL_ERROR: unexpected failure. QuoteX-Request-Idto support.
Remove every number from a campaign
DELETE/
- Access
- API key. Scoped keys need
dialer:write. - Rate limit
- 100 requests per second (the default)
Parameters
| Name | In | Type | Description |
|---|---|---|---|
idrequired | path | string (uuid) | - |
Response 200
| Field | Type | Description |
|---|---|---|
datarequired | object | Same fields as Message, shown earlier on this page. |
Errors
- 400
VALIDATION_ERROR,INVALID_INPUTorBAD_REQUEST. ForVALIDATION_ERROR,error.detailsis an array of{ path, message }. - 401
UNAUTHORIZED: missing, invalid, expired or revoked credential. - 403
FORBIDDEN: not allowed - a scoped key lacks the scope, or the endpoint is session-only. - 404
NOT_FOUND: no such resource on your account. - 409
CONFLICT(or a code-specific 409): the change clashes with existing state. - 429
RATE_LIMITED: slow down and retry after theRetry-Afterseconds. - 500
INTERNAL_ERROR: unexpected failure. QuoteX-Request-Idto support.
Remove one number from a campaign
DELETE/
- Access
- API key. Scoped keys need
dialer:write. - Rate limit
- 100 requests per second (the default)
Parameters
| Name | In | Type | Description |
|---|---|---|---|
idrequired | path | string (uuid) | - |
numberIdrequired | path | string (uuid) | - |
Response 200
| Field | Type | Description |
|---|---|---|
datarequired | object | - |
idrequireddata.id | string (uuid) | - |
Errors
- 400
VALIDATION_ERROR,INVALID_INPUTorBAD_REQUEST. ForVALIDATION_ERROR,error.detailsis an array of{ path, message }. - 401
UNAUTHORIZED: missing, invalid, expired or revoked credential. - 403
FORBIDDEN: not allowed - a scoped key lacks the scope, or the endpoint is session-only. - 404
NOT_FOUND: no such resource on your account. - 409
CONFLICT(or a code-specific 409): the change clashes with existing state. - 429
RATE_LIMITED: slow down and retry after theRetry-Afterseconds. - 500
INTERNAL_ERROR: unexpected failure. QuoteX-Request-Idto support.
List a campaign’s caller IDs
GET/
- Access
- API key. Full-access keys only; not reachable by scoped keys.
- Rate limit
- 100 requests per second (the default)
Parameters
| Name | In | Type | Description |
|---|---|---|---|
idrequired | path | string (uuid) | - |
Response 200
| Field | Type | Description |
|---|---|---|
datarequired | object[] | - |
idrequireddata[].id | string (uuid) | - |
campaignIdrequireddata[].campaignId | string (uuid) | - |
clirequireddata[].cli | string | - |
statusrequireddata[].status | string | -One of pending, verified, failed |
verifiedrequireddata[].verified | boolean | - |
verifiedAtrequireddata[].verifiedAt | string (date-time) | null | ISO-8601 timestamp (UTC) |
createdAtrequireddata[].createdAt | string (date-time) | ISO-8601 timestamp (UTC) |
Errors
- 400
VALIDATION_ERROR,INVALID_INPUTorBAD_REQUEST. ForVALIDATION_ERROR,error.detailsis an array of{ path, message }. - 401
UNAUTHORIZED: missing, invalid, expired or revoked credential. - 403
FORBIDDEN: not allowed - a scoped key lacks the scope, or the endpoint is session-only. - 404
NOT_FOUND: no such resource on your account. - 429
RATE_LIMITED: slow down and retry after theRetry-Afterseconds. - 500
INTERNAL_ERROR: unexpected failure. QuoteX-Request-Idto support.
Add caller IDs to a campaign
POST/
- Access
- API key. Scoped keys need
dialer:write. - Rate limit
- 100 requests per second (the default)
Up to 100 per request. Caller IDs rotate round-robin across calls unless a caller-ID set is assigned.
Parameters
| Name | In | Type | Description |
|---|---|---|---|
idrequired | path | string (uuid) | - |
Request body (application/json)
| Field | Type | Description |
|---|---|---|
clisrequired | string[] | - |
Response 201
| Field | Type | Description |
|---|---|---|
datarequired | object | - |
countrequireddata.count | integer | - |
insertedrequireddata.inserted | integer | - |
skippedrequireddata.skipped | integer | - |
rejectsrequireddata.rejects | object[] | - |
valuerequireddata.rejects[].value | string | - |
reasonrequireddata.rejects[].reason | string | - |
totalClisrequireddata.totalClis | integer | - |
Errors
- 400
VALIDATION_ERROR,INVALID_INPUTorBAD_REQUEST. ForVALIDATION_ERROR,error.detailsis an array of{ path, message }. - 401
UNAUTHORIZED: missing, invalid, expired or revoked credential. - 403
FORBIDDEN: not allowed - a scoped key lacks the scope, or the endpoint is session-only. - 404
NOT_FOUND: no such resource on your account. - 409
CONFLICT(or a code-specific 409): the change clashes with existing state. - 429
RATE_LIMITED: slow down and retry after theRetry-Afterseconds. - 500
INTERNAL_ERROR: unexpected failure. QuoteX-Request-Idto support.
Remove every caller ID from a campaign
DELETE/
- Access
- API key. Scoped keys need
dialer:write. - Rate limit
- 100 requests per second (the default)
Parameters
| Name | In | Type | Description |
|---|---|---|---|
idrequired | path | string (uuid) | - |
Response 200
| Field | Type | Description |
|---|---|---|
datarequired | object | Same fields as Message, shown earlier on this page. |
Errors
- 400
VALIDATION_ERROR,INVALID_INPUTorBAD_REQUEST. ForVALIDATION_ERROR,error.detailsis an array of{ path, message }. - 401
UNAUTHORIZED: missing, invalid, expired or revoked credential. - 403
FORBIDDEN: not allowed - a scoped key lacks the scope, or the endpoint is session-only. - 404
NOT_FOUND: no such resource on your account. - 409
CONFLICT(or a code-specific 409): the change clashes with existing state. - 429
RATE_LIMITED: slow down and retry after theRetry-Afterseconds. - 500
INTERNAL_ERROR: unexpected failure. QuoteX-Request-Idto support.
List your caller-ID sets
GET/
- Access
- API key. Full-access keys only; not reachable by scoped keys.
- Rate limit
- 100 requests per second (the default)
Response 200
| Field | Type | Description |
|---|---|---|
datarequired | object[] | - |
idrequireddata[].id | string (uuid) | - |
userIdrequireddata[].userId | string (uuid) | - |
namerequireddata[].name | string | - |
descriptionrequireddata[].description | string | null | - |
createdAtrequireddata[].createdAt | string (date-time) | ISO-8601 timestamp (UTC) |
updatedAtrequireddata[].updatedAt | string (date-time) | ISO-8601 timestamp (UTC) |
cliCountrequireddata[].cliCount | integer | - |
Errors
- 400
VALIDATION_ERROR,INVALID_INPUTorBAD_REQUEST. ForVALIDATION_ERROR,error.detailsis an array of{ path, message }. - 401
UNAUTHORIZED: missing, invalid, expired or revoked credential. - 403
FORBIDDEN: not allowed - a scoped key lacks the scope, or the endpoint is session-only. - 429
RATE_LIMITED: slow down and retry after theRetry-Afterseconds. - 500
INTERNAL_ERROR: unexpected failure. QuoteX-Request-Idto support.
Create a caller-ID set
POST/
- Access
- API key. Scoped keys need
dialer:write. - Rate limit
- 100 requests per second (the default)
Request body (application/json)
| Field | Type | Description |
|---|---|---|
namerequired | string | -max 255 chars |
description | string | -max 2000 chars |
Response 201
| Field | Type | Description |
|---|---|---|
datarequired | object | - |
idrequireddata.id | string (uuid) | - |
userIdrequireddata.userId | string (uuid) | - |
namerequireddata.name | string | - |
descriptionrequireddata.description | string | null | - |
createdAtrequireddata.createdAt | string (date-time) | ISO-8601 timestamp (UTC) |
updatedAtrequireddata.updatedAt | string (date-time) | ISO-8601 timestamp (UTC) |
Errors
- 400
VALIDATION_ERROR,INVALID_INPUTorBAD_REQUEST. ForVALIDATION_ERROR,error.detailsis an array of{ path, message }. - 401
UNAUTHORIZED: missing, invalid, expired or revoked credential. - 403
FORBIDDEN: not allowed - a scoped key lacks the scope, or the endpoint is session-only. - 409
CONFLICT(or a code-specific 409): the change clashes with existing state. - 429
RATE_LIMITED: slow down and retry after theRetry-Afterseconds. - 500
INTERNAL_ERROR: unexpected failure. QuoteX-Request-Idto support.
Get a caller-ID set
GET/
- Access
- API key. Full-access keys only; not reachable by scoped keys.
- Rate limit
- 100 requests per second (the default)
Parameters
| Name | In | Type | Description |
|---|---|---|---|
idrequired | path | string (uuid) | - |
Response 200
| Field | Type | Description |
|---|---|---|
datarequired | object | Same fields as DialerCallerIdSet, shown earlier on this page. |
Errors
- 400
VALIDATION_ERROR,INVALID_INPUTorBAD_REQUEST. ForVALIDATION_ERROR,error.detailsis an array of{ path, message }. - 401
UNAUTHORIZED: missing, invalid, expired or revoked credential. - 403
FORBIDDEN: not allowed - a scoped key lacks the scope, or the endpoint is session-only. - 404
NOT_FOUND: no such resource on your account. - 429
RATE_LIMITED: slow down and retry after theRetry-Afterseconds. - 500
INTERNAL_ERROR: unexpected failure. QuoteX-Request-Idto support.
Rename or describe a caller-ID set
PATCH/
- Access
- API key. Scoped keys need
dialer:write. - Rate limit
- 100 requests per second (the default)
Parameters
| Name | In | Type | Description |
|---|---|---|---|
idrequired | path | string (uuid) | - |
Request body (application/json)
| Field | Type | Description |
|---|---|---|
name | string | -max 255 chars |
description | string | null | -max 2000 chars |
Response 200
| Field | Type | Description |
|---|---|---|
datarequired | object | Same fields as DialerCallerIdSet, shown earlier on this page. |
Errors
- 400
VALIDATION_ERROR,INVALID_INPUTorBAD_REQUEST. ForVALIDATION_ERROR,error.detailsis an array of{ path, message }. - 401
UNAUTHORIZED: missing, invalid, expired or revoked credential. - 403
FORBIDDEN: not allowed - a scoped key lacks the scope, or the endpoint is session-only. - 404
NOT_FOUND: no such resource on your account. - 409
CONFLICT(or a code-specific 409): the change clashes with existing state. - 429
RATE_LIMITED: slow down and retry after theRetry-Afterseconds. - 500
INTERNAL_ERROR: unexpected failure. QuoteX-Request-Idto support.
Delete a caller-ID set
DELETE/
- Access
- API key. Scoped keys need
dialer:write. - Rate limit
- 100 requests per second (the default)
Campaigns using the set are detached from it and fall back to their own caller-ID list.
Parameters
| Name | In | Type | Description |
|---|---|---|---|
idrequired | path | string (uuid) | - |
Response 200
| Field | Type | Description |
|---|---|---|
datarequired | object | - |
idrequireddata.id | string (uuid) | - |
Errors
- 400
VALIDATION_ERROR,INVALID_INPUTorBAD_REQUEST. ForVALIDATION_ERROR,error.detailsis an array of{ path, message }. - 401
UNAUTHORIZED: missing, invalid, expired or revoked credential. - 403
FORBIDDEN: not allowed - a scoped key lacks the scope, or the endpoint is session-only. - 404
NOT_FOUND: no such resource on your account. - 409
CONFLICT(or a code-specific 409): the change clashes with existing state. - 429
RATE_LIMITED: slow down and retry after theRetry-Afterseconds. - 500
INTERNAL_ERROR: unexpected failure. QuoteX-Request-Idto support.
List the caller IDs in a set, with usage stats
GET/
- Access
- API key. Full-access keys only; not reachable by scoped keys.
- Rate limit
- 100 requests per second (the default)
Parameters
| Name | In | Type | Description |
|---|---|---|---|
idrequired | path | string (uuid) | - |
Response 200
| Field | Type | Description |
|---|---|---|
datarequired | object[] | - |
idrequireddata[].id | string (uuid) | - |
setIdrequireddata[].setId | string (uuid) | - |
clirequireddata[].cli | string | - |
labelrequireddata[].label | string | null | - |
countryrequireddata[].country | string | null | - |
countryCoderequireddata[].countryCode | string | null | - |
areaCoderequireddata[].areaCode | string | null | - |
sourcerequireddata[].source | string | -One of upload, paste, manual, revshare, did |
enabledrequireddata[].enabled | boolean | - |
weightrequireddata[].weight | integer | - |
dailyCaprequireddata[].dailyCap | integer | null | - |
campaignCaprequireddata[].campaignCap | integer | null | - |
hourlyCaprequireddata[].hourlyCap | integer | null | - |
cooldownSecrequireddata[].cooldownSec | integer | null | - |
statusrequireddata[].status | string | -One of active, resting, retired |
tagsrequireddata[].tags | string[] | - |
notesrequireddata[].notes | string | null | - |
createdAtrequireddata[].createdAt | string (date-time) | ISO-8601 timestamp (UTC) |
statsrequireddata[].stats | object | - |
callsrequireddata[].stats.calls | integer | - |
connectsrequireddata[].stats.connects | integer | - |
connectRaterequireddata[].stats.connectRate | number | Percent |
avgSecrequireddata[].stats.avgSec | number | - |
todayUsedrequireddata[].stats.todayUsed | integer | - |
campaignUsedrequireddata[].stats.campaignUsed | integer | - |
lastUsedAtrequireddata[].stats.lastUsedAt | string (date-time) | null | ISO-8601 timestamp (UTC) |
Errors
- 400
VALIDATION_ERROR,INVALID_INPUTorBAD_REQUEST. ForVALIDATION_ERROR,error.detailsis an array of{ path, message }. - 401
UNAUTHORIZED: missing, invalid, expired or revoked credential. - 403
FORBIDDEN: not allowed - a scoped key lacks the scope, or the endpoint is session-only. - 404
NOT_FOUND: no such resource on your account. - 429
RATE_LIMITED: slow down and retry after theRetry-Afterseconds. - 500
INTERNAL_ERROR: unexpected failure. QuoteX-Request-Idto support.
Add caller IDs to a set
POST/
- Access
- API key. Scoped keys need
dialer:write. - Rate limit
- 100 requests per second (the default)
Send ONE of: clis (a list), paste (free text), a file (multipart file part, or contentBase64/content). Numbers must be E.164; invalid and duplicate entries are reported in rejects.
Parameters
| Name | In | Type | Description |
|---|---|---|---|
idrequired | path | string (uuid) | - |
Request body (application/json)
| Field | Type | Description |
|---|---|---|
clis | string | object[] | A manual list of E.164 caller IDs, bare or with a label |
cliclis[].cli | string | - |
labelclis[].label | string | null | -max 120 chars |
paste | string | A pasted block of numbersmax 2000000 chars |
filename | string | -max 255 chars |
contentBase64 | string | A CSV/XLSX file, base64-encoded |
content | string | A CSV file as plain text |
Response 201
| Field | Type | Description |
|---|---|---|
datarequired | object | - |
insertedrequireddata.inserted | integer | - |
skippedrequireddata.skipped | integer | - |
rejectsrequireddata.rejects | object[] | - |
valuerequireddata.rejects[].value | string | - |
reasonrequireddata.rejects[].reason | string | - |
Errors
- 400
VALIDATION_ERROR,INVALID_INPUTorBAD_REQUEST. ForVALIDATION_ERROR,error.detailsis an array of{ path, message }. - 401
UNAUTHORIZED: missing, invalid, expired or revoked credential. - 403
FORBIDDEN: not allowed - a scoped key lacks the scope, or the endpoint is session-only. - 404
NOT_FOUND: no such resource on your account. - 409
CONFLICT(or a code-specific 409): the change clashes with existing state. - 429
RATE_LIMITED: slow down and retry after theRetry-Afterseconds. - 500
INTERNAL_ERROR: unexpected failure. QuoteX-Request-Idto support.
Update one caller ID in a set
PATCH/
- Access
- API key. Scoped keys need
dialer:write. - Rate limit
- 100 requests per second (the default)
Enable or disable it, and set its weight, caps, cooldown, status, tags, label or notes.
Parameters
| Name | In | Type | Description |
|---|---|---|---|
idrequired | path | string (uuid) | - |
nidrequired | path | string (uuid) | - |
Request body (application/json)
| Field | Type | Description |
|---|---|---|
enabled | boolean | - |
weight | integer | -1 to 1000 |
dailyCap | integer | null | -min 0 |
campaignCap | integer | null | -min 0 |
hourlyCap | integer | null | -min 0 |
cooldownSec | integer | null | -min 0 |
tags | string[] | - |
status | string | -One of active, resting, retired |
label | string | null | -max 120 chars |
notes | string | null | -max 2000 chars |
Response 200
| Field | Type | Description |
|---|---|---|
datarequired | object | - |
idrequireddata.id | string (uuid) | - |
setIdrequireddata.setId | string (uuid) | - |
clirequireddata.cli | string | - |
labelrequireddata.label | string | null | - |
countryrequireddata.country | string | null | - |
countryCoderequireddata.countryCode | string | null | - |
areaCoderequireddata.areaCode | string | null | - |
sourcerequireddata.source | string | -One of upload, paste, manual, revshare, did |
enabledrequireddata.enabled | boolean | - |
weightrequireddata.weight | integer | - |
dailyCaprequireddata.dailyCap | integer | null | - |
campaignCaprequireddata.campaignCap | integer | null | - |
hourlyCaprequireddata.hourlyCap | integer | null | - |
cooldownSecrequireddata.cooldownSec | integer | null | - |
statusrequireddata.status | string | -One of active, resting, retired |
tagsrequireddata.tags | string[] | - |
notesrequireddata.notes | string | null | - |
createdAtrequireddata.createdAt | string (date-time) | ISO-8601 timestamp (UTC) |
Errors
- 400
VALIDATION_ERROR,INVALID_INPUTorBAD_REQUEST. ForVALIDATION_ERROR,error.detailsis an array of{ path, message }. - 401
UNAUTHORIZED: missing, invalid, expired or revoked credential. - 403
FORBIDDEN: not allowed - a scoped key lacks the scope, or the endpoint is session-only. - 404
NOT_FOUND: no such resource on your account. - 409
CONFLICT(or a code-specific 409): the change clashes with existing state. - 429
RATE_LIMITED: slow down and retry after theRetry-Afterseconds. - 500
INTERNAL_ERROR: unexpected failure. QuoteX-Request-Idto support.
Remove one caller ID from a set
DELETE/
- Access
- API key. Scoped keys need
dialer:write. - Rate limit
- 100 requests per second (the default)
Parameters
| Name | In | Type | Description |
|---|---|---|---|
idrequired | path | string (uuid) | - |
nidrequired | path | string (uuid) | - |
Response 200
| Field | Type | Description |
|---|---|---|
datarequired | object | - |
idrequireddata.id | string (uuid) | - |
Errors
- 400
VALIDATION_ERROR,INVALID_INPUTorBAD_REQUEST. ForVALIDATION_ERROR,error.detailsis an array of{ path, message }. - 401
UNAUTHORIZED: missing, invalid, expired or revoked credential. - 403
FORBIDDEN: not allowed - a scoped key lacks the scope, or the endpoint is session-only. - 404
NOT_FOUND: no such resource on your account. - 409
CONFLICT(or a code-specific 409): the change clashes with existing state. - 429
RATE_LIMITED: slow down and retry after theRetry-Afterseconds. - 500
INTERNAL_ERROR: unexpected failure. QuoteX-Request-Idto support.
Enable, disable or delete many caller IDs in a set
POST/
- Access
- API key. Scoped keys need
dialer:write. - Rate limit
- 100 requests per second (the default)
Parameters
| Name | In | Type | Description |
|---|---|---|---|
idrequired | path | string (uuid) | - |
Request body (application/json)
| Field | Type | Description |
|---|---|---|
actionrequired | string | -One of enable, disable, delete |
cliIdsrequired | string (uuid)[] | - |
Response 200
| Field | Type | Description |
|---|---|---|
datarequired | object | - |
affectedrequireddata.affected | integer | - |
Errors
- 400
VALIDATION_ERROR,INVALID_INPUTorBAD_REQUEST. ForVALIDATION_ERROR,error.detailsis an array of{ path, message }. - 401
UNAUTHORIZED: missing, invalid, expired or revoked credential. - 403
FORBIDDEN: not allowed - a scoped key lacks the scope, or the endpoint is session-only. - 404
NOT_FOUND: no such resource on your account. - 409
CONFLICT(or a code-specific 409): the change clashes with existing state. - 429
RATE_LIMITED: slow down and retry after theRetry-Afterseconds. - 500
INTERNAL_ERROR: unexpected failure. QuoteX-Request-Idto support.
Get usage stats for a caller-ID set
GET/
- Access
- API key. Full-access keys only; not reachable by scoped keys.
- Rate limit
- 100 requests per second (the default)
Parameters
| Name | In | Type | Description |
|---|---|---|---|
idrequired | path | string (uuid) | - |
Response 200
| Field | Type | Description |
|---|---|---|
datarequired | object | - |
totalClisrequireddata.totalClis | integer | - |
activeClisrequireddata.activeClis | integer | - |
restingClisrequireddata.restingClis | integer | - |
retiredClisrequireddata.retiredClis | integer | - |
callsrequireddata.calls | integer | - |
connectsrequireddata.connects | integer | - |
connectRaterequireddata.connectRate | number | Percent |
avgSecrequireddata.avgSec | number | - |
campaignsrequireddata.campaigns | integer | - |
Errors
- 400
VALIDATION_ERROR,INVALID_INPUTorBAD_REQUEST. ForVALIDATION_ERROR,error.detailsis an array of{ path, message }. - 401
UNAUTHORIZED: missing, invalid, expired or revoked credential. - 403
FORBIDDEN: not allowed - a scoped key lacks the scope, or the endpoint is session-only. - 404
NOT_FOUND: no such resource on your account. - 429
RATE_LIMITED: slow down and retry after theRetry-Afterseconds. - 500
INTERNAL_ERROR: unexpected failure. QuoteX-Request-Idto support.
Assign a caller-ID set and rotation strategy to a campaign
PUT/
- Access
- API key. Scoped keys need
dialer:write. - Rate limit
- 100 requests per second (the default)
Parameters
| Name | In | Type | Description |
|---|---|---|---|
idrequired | path | string (uuid) | - |
Request body (application/json)
| Field | Type | Description |
|---|---|---|
cliSetIdrequired | string (uuid) | null | null clears the assignment (the campaign falls back to its own caller-ID list) |
strategy | object | - |
moderequiredstrategy.mode | string | -One of random, round_robin, per_day_cap, per_campaign_cap, hourly_cap, cooldown, sticky_dest, area_match, country_match, weighted, lru, best_perf and 1 more |
dailyCapstrategy.dailyCap | integer | null | -min 0 |
campaignCapstrategy.campaignCap | integer | null | -min 0 |
hourlyCapstrategy.hourlyCap | integer | null | -min 0 |
cooldownSecstrategy.cooldownSec | integer | null | -min 0 |
restBelowAsrstrategy.restBelowAsr | number | null | Rest a caller ID whose ASR falls below this percent0 to 100 |
weightsRespectedstrategy.weightsRespected | boolean | - |
Response 200
| Field | Type | Description |
|---|---|---|
datarequired | object | Same fields as DialerCampaign, shown earlier on this page. |
Errors
- 400
VALIDATION_ERROR,INVALID_INPUTorBAD_REQUEST. ForVALIDATION_ERROR,error.detailsis an array of{ path, message }. - 401
UNAUTHORIZED: missing, invalid, expired or revoked credential. - 403
FORBIDDEN: not allowed - a scoped key lacks the scope, or the endpoint is session-only. - 404
NOT_FOUND: no such resource on your account. - 409
CONFLICT(or a code-specific 409): the change clashes with existing state. - 429
RATE_LIMITED: slow down and retry after theRetry-Afterseconds. - 500
INTERNAL_ERROR: unexpected failure. QuoteX-Request-Idto support.
Match inbound callers to the caller IDs in a set
GET/
- Access
- API key. Full-access keys only; not reachable by scoped keys.
- Rate limit
- 100 requests per second (the default)
For each caller ID in the set, the inbound callers reachable from its country. takingIds may be comma-separated.
Parameters
| Name | In | Type | Description |
|---|---|---|---|
cliSetIdrequired | query | string (uuid) | - |
takingIds | query | string | "all" or comma-separated revenue share taking ids |
Response 200
| Field | Type | Description |
|---|---|---|
datarequired | object | - |
setIdrequireddata.setId | string (uuid) | - |
setNamerequireddata.setName | string | - |
groupsrequireddata.groups | object[] | - |
clirequireddata.groups[].cli | string | - |
labelrequireddata.groups[].label | string | null | - |
countryrequireddata.groups[].country | string | null | - |
countryCoderequireddata.groups[].countryCode | string | null | - |
targetsrequireddata.groups[].targets | object[] | Same fields as DialerRevshareCaller, shown earlier on this page. |
savedrequireddata.saved | object | null | The saved contact list, when saveAsListName was given and there was something dialable to save |
listrequireddata.saved.list | object | Same fields as DialerContactList, shown earlier on this page. |
savedrequireddata.saved.saved | integer | - |
skippedrequireddata.saved.skipped | integer | - |
limitationrequireddata.limitation | string | null | - |
Errors
- 400
VALIDATION_ERROR,INVALID_INPUTorBAD_REQUEST. ForVALIDATION_ERROR,error.detailsis an array of{ path, message }. - 401
UNAUTHORIZED: missing, invalid, expired or revoked credential. - 403
FORBIDDEN: not allowed - a scoped key lacks the scope, or the endpoint is session-only. - 429
RATE_LIMITED: slow down and retry after theRetry-Afterseconds. - 500
INTERNAL_ERROR: unexpected failure. QuoteX-Request-Idto support.
Match inbound callers to a caller-ID set and optionally save them
POST/
- Access
- API key. Scoped keys need
dialer:write. - Rate limit
- 100 requests per second (the default)
Request body (application/json)
| Field | Type | Description |
|---|---|---|
cliSetIdrequired | string (uuid) | - |
takingIds | string (uuid)[] | string | - |
saveAsListName | string | -max 255 chars |
Response 200
| Field | Type | Description |
|---|---|---|
datarequired | object | Same fields as DialerCompatibleTargets, shown earlier on this page. |
Errors
- 400
VALIDATION_ERROR,INVALID_INPUTorBAD_REQUEST. ForVALIDATION_ERROR,error.detailsis an array of{ path, message }. - 401
UNAUTHORIZED: missing, invalid, expired or revoked credential. - 403
FORBIDDEN: not allowed - a scoped key lacks the scope, or the endpoint is session-only. - 409
CONFLICT(or a code-specific 409): the change clashes with existing state. - 429
RATE_LIMITED: slow down and retry after theRetry-Afterseconds. - 500
INTERNAL_ERROR: unexpected failure. QuoteX-Request-Idto support.
Preview a cleaned number list
POST/
- Access
- API key. Scoped keys need
dialer:write. - Rate limit
- 100 requests per second (the default)
De-duplicates, filters by country dial code or prefix, and optionally removes do-not-call entries. Nothing is saved.
Request body (application/json)
| Field | Type | Description |
|---|---|---|
numbersrequired | string[] | - |
countryCode | string | Country dial code, e.g. "44"max 8 chars |
prefix | string | -max 24 chars |
suppressDnc | boolean | - |
Response 200
| Field | Type | Description |
|---|---|---|
datarequired | object | - |
keptrequireddata.kept | string[] | E.164 numbers that survived |
invalidrequireddata.invalid | integer | - |
duprequireddata.dup | integer | - |
filteredrequireddata.filtered | integer | - |
suppressedrequireddata.suppressed | integer | - |
totalrequireddata.total | integer | - |
Errors
- 400
VALIDATION_ERROR,INVALID_INPUTorBAD_REQUEST. ForVALIDATION_ERROR,error.detailsis an array of{ path, message }. - 401
UNAUTHORIZED: missing, invalid, expired or revoked credential. - 403
FORBIDDEN: not allowed - a scoped key lacks the scope, or the endpoint is session-only. - 409
CONFLICT(or a code-specific 409): the change clashes with existing state. - 429
RATE_LIMITED: slow down and retry after theRetry-Afterseconds. - 500
INTERNAL_ERROR: unexpected failure. QuoteX-Request-Idto support.
Save numbers as a contact list
POST/
- Access
- API key. Scoped keys need
dialer:write. - Rate limit
- 100 requests per second (the default)
Only valid full E.164 numbers are stored.
Request body (application/json)
| Field | Type | Description |
|---|---|---|
namerequired | string | -max 255 chars |
numbersrequired | string[] | - |
Response 201
| Field | Type | Description |
|---|---|---|
datarequired | object | - |
listrequireddata.list | object | Same fields as DialerContactList, shown earlier on this page. |
savedrequireddata.saved | integer | - |
skippedrequireddata.skipped | integer | - |
Errors
- 400
VALIDATION_ERROR,INVALID_INPUTorBAD_REQUEST. ForVALIDATION_ERROR,error.detailsis an array of{ path, message }. - 401
UNAUTHORIZED: missing, invalid, expired or revoked credential. - 403
FORBIDDEN: not allowed - a scoped key lacks the scope, or the endpoint is session-only. - 409
CONFLICT(or a code-specific 409): the change clashes with existing state. - 429
RATE_LIMITED: slow down and retry after theRetry-Afterseconds. - 500
INTERNAL_ERROR: unexpected failure. QuoteX-Request-Idto support.
List your SMS templates
GET/
- Access
- API key. Full-access keys only; not reachable by scoped keys.
- Rate limit
- 100 requests per second (the default)
Response 200
| Field | Type | Description |
|---|---|---|
datarequired | object[] | - |
idrequireddata[].id | string (uuid) | - |
userIdrequireddata[].userId | string (uuid) | - |
namerequireddata[].name | string | - |
bodyrequireddata[].body | string | - |
createdAtrequireddata[].createdAt | string (date-time) | ISO-8601 timestamp (UTC) |
Errors
- 400
VALIDATION_ERROR,INVALID_INPUTorBAD_REQUEST. ForVALIDATION_ERROR,error.detailsis an array of{ path, message }. - 401
UNAUTHORIZED: missing, invalid, expired or revoked credential. - 403
FORBIDDEN: not allowed - a scoped key lacks the scope, or the endpoint is session-only. - 429
RATE_LIMITED: slow down and retry after theRetry-Afterseconds. - 500
INTERNAL_ERROR: unexpected failure. QuoteX-Request-Idto support.
Create an SMS template
POST/
- Access
- API key. Scoped keys need
dialer:write. - Rate limit
- 100 requests per second (the default)
{{variable}} placeholders are stored as written; per-recipient merge is not applied yet.
Request body (application/json)
| Field | Type | Description |
|---|---|---|
namerequired | string | -max 255 chars |
bodyrequired | string | -max 1600 chars |
Response 201
| Field | Type | Description |
|---|---|---|
datarequired | object | Same fields as DialerSmsTemplate, shown earlier on this page. |
Errors
- 400
VALIDATION_ERROR,INVALID_INPUTorBAD_REQUEST. ForVALIDATION_ERROR,error.detailsis an array of{ path, message }. - 401
UNAUTHORIZED: missing, invalid, expired or revoked credential. - 403
FORBIDDEN: not allowed - a scoped key lacks the scope, or the endpoint is session-only. - 409
CONFLICT(or a code-specific 409): the change clashes with existing state. - 429
RATE_LIMITED: slow down and retry after theRetry-Afterseconds. - 500
INTERNAL_ERROR: unexpected failure. QuoteX-Request-Idto support.
Update an SMS template
PATCH/
- Access
- API key. Scoped keys need
dialer:write. - Rate limit
- 100 requests per second (the default)
Parameters
| Name | In | Type | Description |
|---|---|---|---|
idrequired | path | string (uuid) | - |
Request body (application/json)
| Field | Type | Description |
|---|---|---|
name | string | -max 255 chars |
body | string | -max 1600 chars |
Response 200
| Field | Type | Description |
|---|---|---|
datarequired | object | Same fields as DialerSmsTemplate, shown earlier on this page. |
Errors
- 400
VALIDATION_ERROR,INVALID_INPUTorBAD_REQUEST. ForVALIDATION_ERROR,error.detailsis an array of{ path, message }. - 401
UNAUTHORIZED: missing, invalid, expired or revoked credential. - 403
FORBIDDEN: not allowed - a scoped key lacks the scope, or the endpoint is session-only. - 404
NOT_FOUND: no such resource on your account. - 409
CONFLICT(or a code-specific 409): the change clashes with existing state. - 429
RATE_LIMITED: slow down and retry after theRetry-Afterseconds. - 500
INTERNAL_ERROR: unexpected failure. QuoteX-Request-Idto support.
Delete an SMS template
DELETE/
- Access
- API key. Scoped keys need
dialer:write. - Rate limit
- 100 requests per second (the default)
Parameters
| Name | In | Type | Description |
|---|---|---|---|
idrequired | path | string (uuid) | - |
Response 200
| Field | Type | Description |
|---|---|---|
datarequired | object | Same fields as Message, shown earlier on this page. |
Errors
- 400
VALIDATION_ERROR,INVALID_INPUTorBAD_REQUEST. ForVALIDATION_ERROR,error.detailsis an array of{ path, message }. - 401
UNAUTHORIZED: missing, invalid, expired or revoked credential. - 403
FORBIDDEN: not allowed - a scoped key lacks the scope, or the endpoint is session-only. - 404
NOT_FOUND: no such resource on your account. - 409
CONFLICT(or a code-specific 409): the change clashes with existing state. - 429
RATE_LIMITED: slow down and retry after theRetry-Afterseconds. - 500
INTERNAL_ERROR: unexpected failure. QuoteX-Request-Idto support.
List your saved contact lists
GET/
- Access
- API key. Full-access keys only; not reachable by scoped keys.
- Rate limit
- 100 requests per second (the default)
Response 200
| Field | Type | Description |
|---|---|---|
datarequired | object[] | Same fields as DialerContactList, shown earlier on this page. |
Errors
- 400
VALIDATION_ERROR,INVALID_INPUTorBAD_REQUEST. ForVALIDATION_ERROR,error.detailsis an array of{ path, message }. - 401
UNAUTHORIZED: missing, invalid, expired or revoked credential. - 403
FORBIDDEN: not allowed - a scoped key lacks the scope, or the endpoint is session-only. - 429
RATE_LIMITED: slow down and retry after theRetry-Afterseconds. - 500
INTERNAL_ERROR: unexpected failure. QuoteX-Request-Idto support.
Create a saved contact list
POST/
- Access
- API key. Scoped keys need
dialer:write. - Rate limit
- 100 requests per second (the default)
Request body (application/json)
| Field | Type | Description |
|---|---|---|
namerequired | string | -max 255 chars |
numbersrequired | string[] | - |
Response 201
| Field | Type | Description |
|---|---|---|
datarequired | object | Same fields as DialerContactList, shown earlier on this page. |
Errors
- 400
VALIDATION_ERROR,INVALID_INPUTorBAD_REQUEST. ForVALIDATION_ERROR,error.detailsis an array of{ path, message }. - 401
UNAUTHORIZED: missing, invalid, expired or revoked credential. - 403
FORBIDDEN: not allowed - a scoped key lacks the scope, or the endpoint is session-only. - 409
CONFLICT(or a code-specific 409): the change clashes with existing state. - 429
RATE_LIMITED: slow down and retry after theRetry-Afterseconds. - 500
INTERNAL_ERROR: unexpected failure. QuoteX-Request-Idto support.
Get a saved contact list with its numbers
GET/
- Access
- API key. Full-access keys only; not reachable by scoped keys.
- Rate limit
- 100 requests per second (the default)
Parameters
| Name | In | Type | Description |
|---|---|---|---|
idrequired | path | string (uuid) | - |
Response 200
| Field | Type | Description |
|---|---|---|
datarequired | object | - |
idrequireddata.id | string (uuid) | - |
userIdrequireddata.userId | string (uuid) | - |
namerequireddata.name | string | - |
countrequireddata.count | integer | - |
createdAtrequireddata.createdAt | string (date-time) | ISO-8601 timestamp (UTC) |
numbersrequireddata.numbers | string[] | Bare numbers (kept for existing clients) |
contactsrequireddata.contacts | object[] | - |
numberrequireddata.contacts[].number | string | - |
namerequireddata.contacts[].name | string | null | - |
fieldsrequireddata.contacts[].fields | object | null | - |
Errors
- 400
VALIDATION_ERROR,INVALID_INPUTorBAD_REQUEST. ForVALIDATION_ERROR,error.detailsis an array of{ path, message }. - 401
UNAUTHORIZED: missing, invalid, expired or revoked credential. - 403
FORBIDDEN: not allowed - a scoped key lacks the scope, or the endpoint is session-only. - 404
NOT_FOUND: no such resource on your account. - 429
RATE_LIMITED: slow down and retry after theRetry-Afterseconds. - 500
INTERNAL_ERROR: unexpected failure. QuoteX-Request-Idto support.
Delete a saved contact list
DELETE/
- Access
- API key. Scoped keys need
dialer:write. - Rate limit
- 100 requests per second (the default)
Parameters
| Name | In | Type | Description |
|---|---|---|---|
idrequired | path | string (uuid) | - |
Response 200
| Field | Type | Description |
|---|---|---|
datarequired | object | Same fields as Message, shown earlier on this page. |
Errors
- 400
VALIDATION_ERROR,INVALID_INPUTorBAD_REQUEST. ForVALIDATION_ERROR,error.detailsis an array of{ path, message }. - 401
UNAUTHORIZED: missing, invalid, expired or revoked credential. - 403
FORBIDDEN: not allowed - a scoped key lacks the scope, or the endpoint is session-only. - 404
NOT_FOUND: no such resource on your account. - 409
CONFLICT(or a code-specific 409): the change clashes with existing state. - 429
RATE_LIMITED: slow down and retry after theRetry-Afterseconds. - 500
INTERNAL_ERROR: unexpected failure. QuoteX-Request-Idto support.
List your simple caller-ID lists
GET/
- Access
- API key. Full-access keys only; not reachable by scoped keys.
- Rate limit
- 100 requests per second (the default)
The older named caller-ID lists used by the campaign wizard. For rotation, caps and stats use /dialer/caller-ids.
Response 200
| Field | Type | Description |
|---|---|---|
datarequired | object[] | - |
idrequireddata[].id | string (uuid) | - |
userIdrequireddata[].userId | string (uuid) | - |
namerequireddata[].name | string | - |
clisrequireddata[].clis | string | The caller IDs, newline-separated |
createdAtrequireddata[].createdAt | string (date-time) | ISO-8601 timestamp (UTC) |
Errors
- 400
VALIDATION_ERROR,INVALID_INPUTorBAD_REQUEST. ForVALIDATION_ERROR,error.detailsis an array of{ path, message }. - 401
UNAUTHORIZED: missing, invalid, expired or revoked credential. - 403
FORBIDDEN: not allowed - a scoped key lacks the scope, or the endpoint is session-only. - 429
RATE_LIMITED: slow down and retry after theRetry-Afterseconds. - 500
INTERNAL_ERROR: unexpected failure. QuoteX-Request-Idto support.
Create a simple caller-ID list
POST/
- Access
- API key. Scoped keys need
dialer:write. - Rate limit
- 100 requests per second (the default)
Request body (application/json)
| Field | Type | Description |
|---|---|---|
namerequired | string | -max 255 chars |
clisrequired | string[] | - |
Response 201
| Field | Type | Description |
|---|---|---|
datarequired | object | Same fields as DialerCliSet, shown earlier on this page. |
Errors
- 400
VALIDATION_ERROR,INVALID_INPUTorBAD_REQUEST. ForVALIDATION_ERROR,error.detailsis an array of{ path, message }. - 401
UNAUTHORIZED: missing, invalid, expired or revoked credential. - 403
FORBIDDEN: not allowed - a scoped key lacks the scope, or the endpoint is session-only. - 409
CONFLICT(or a code-specific 409): the change clashes with existing state. - 429
RATE_LIMITED: slow down and retry after theRetry-Afterseconds. - 500
INTERNAL_ERROR: unexpected failure. QuoteX-Request-Idto support.
Delete a simple caller-ID list
DELETE/
- Access
- API key. Scoped keys need
dialer:write. - Rate limit
- 100 requests per second (the default)
Parameters
| Name | In | Type | Description |
|---|---|---|---|
idrequired | path | string (uuid) | - |
Response 200
| Field | Type | Description |
|---|---|---|
datarequired | object | Same fields as Message, shown earlier on this page. |
Errors
- 400
VALIDATION_ERROR,INVALID_INPUTorBAD_REQUEST. ForVALIDATION_ERROR,error.detailsis an array of{ path, message }. - 401
UNAUTHORIZED: missing, invalid, expired or revoked credential. - 403
FORBIDDEN: not allowed - a scoped key lacks the scope, or the endpoint is session-only. - 404
NOT_FOUND: no such resource on your account. - 409
CONFLICT(or a code-specific 409): the change clashes with existing state. - 429
RATE_LIMITED: slow down and retry after theRetry-Afterseconds. - 500
INTERNAL_ERROR: unexpected failure. QuoteX-Request-Idto support.