# Replace example resource IDs and ownerId with values from your workspace.
: "${POWERDIALER_API_KEY:?Set POWERDIALER_API_KEY to your scoped API key}"
# Set this once per operation; reuse it with the same request after a timeout.
: "${POWERDIALER_REQUEST_ID:?Set POWERDIALER_REQUEST_ID to a new UUID for this operation}"
curl --request POST \
--url 'https://api.migration.powerdialer.ai/api/public/v2/lists' \
--header "Authorization: Bearer $POWERDIALER_API_KEY" \
--header "Idempotency-Key: $POWERDIALER_REQUEST_ID" \
--header 'Content-Type: application/json' \
--data '{
"name": "October inbound leads",
"ownerId": "user_example",
"groupName": "Inbound"
}'{
"name": "October inbound leads",
"ownerId": "user_example",
"groupName": "Inbound",
"id": 456,
"orgId": "org_example",
"createdAt": "2026-10-08T12:00:00.000Z",
"updatedAt": "2026-10-08T12:00:00.000Z",
"contactsCount": 0
}{
"error": {
"code": "invalid_api_key",
"message": "API key is invalid, expired or revoked",
"requestId": "00000000-0000-4000-8000-000000000004"
}
}Create a calling list
Create an empty calling list for a rep or team workflow, then add contacts through membership operations or an asynchronous import. Requires lists:write. Supply a name and the ownerId of a current workspace member that the key is allowed to manage. An optional groupName helps organize lists; omitted or null means no group.
The response returns the new numeric list ID and current details. List names are not unique, so save the ID instead of using the name as an identifier. Contact rows are not accepted in this request, and creating a list does not place calls.
A persisted Idempotency-Key is required. Reuse it with the same body after a timeout to recover the original 201 response. 403 invalid_owner requires an allowed member; 400 invalid_request identifies malformed fields. For 409 idempotency_conflict, recover the original request rather than blindly creating another list.
See create a list.
# Replace example resource IDs and ownerId with values from your workspace.
: "${POWERDIALER_API_KEY:?Set POWERDIALER_API_KEY to your scoped API key}"
# Set this once per operation; reuse it with the same request after a timeout.
: "${POWERDIALER_REQUEST_ID:?Set POWERDIALER_REQUEST_ID to a new UUID for this operation}"
curl --request POST \
--url 'https://api.migration.powerdialer.ai/api/public/v2/lists' \
--header "Authorization: Bearer $POWERDIALER_API_KEY" \
--header "Idempotency-Key: $POWERDIALER_REQUEST_ID" \
--header 'Content-Type: application/json' \
--data '{
"name": "October inbound leads",
"ownerId": "user_example",
"groupName": "Inbound"
}'{
"name": "October inbound leads",
"ownerId": "user_example",
"groupName": "Inbound",
"id": 456,
"orgId": "org_example",
"createdAt": "2026-10-08T12:00:00.000Z",
"updatedAt": "2026-10-08T12:00:00.000Z",
"contactsCount": 0
}{
"error": {
"code": "invalid_api_key",
"message": "API key is invalid, expired or revoked",
"requestId": "00000000-0000-4000-8000-000000000004"
}
}Authorizations
Issued in Developers. Workspace/owner/scopes come from credential, never acting-user headers. API keys cannot manage API credentials.
Headers
Persist one key for this logical operation before sending it. Reuse the same value only with the same method, path and body after a timeout. A changed request returns 409 idempotency_conflict; a matching retry returns the original response.
^[A-Za-z0-9._:-]{1,200}$Body
Display name for the calling list.
1 - 150Active workspace member who owns the list and is allowed by this key.
1 - 100Optional grouping label. Omission on PUT clears the stored label.
100Response
The new empty calling list, or its original creation response on an identical retry.
PowerDialer list ID. Use this integer in list URLs and analytics filters.
Calling-list display name.
PowerDialer member who owns this list.
Workspace identifier stored on the list.
Optional grouping label, or null.
List creation time in UTC.
Last list update time in UTC.
Stored total membership count for the list. It may exceed the contacts visible to a restricted key.