# 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 PUT \
--url 'https://api.migration.powerdialer.ai/api/public/v2/lists/456/contacts/123' \
--header "Authorization: Bearer $POWERDIALER_API_KEY" \
--header "Idempotency-Key: $POWERDIALER_REQUEST_ID"{
"listId": 456,
"contactId": 123,
"member": true
}{
"error": {
"code": "invalid_api_key",
"message": "API key is invalid, expired or revoked",
"requestId": "00000000-0000-4000-8000-000000000004"
}
}Add a contact to a list
Attach an existing contact to a calling list without creating another contact record. Requires lists:write and contacts:read. Both the list and contact must be visible within the key’s workspace and permitted owner scope; knowing their IDs alone does not grant access.
Use numeric PowerDialer IDs for both path parameters and send no request body. The response is {listId,contactId,member:true}. Contact fields and ownership remain unchanged. For a new lead, create or upsert the contact first; for many rows, consider an asynchronous import instead.
Persist an Idempotency-Key for the attachment and reuse the same request after a timeout. 404 not_found can refer to either missing or inaccessible resource; check both IDs with permitted read endpoints. 403 insufficient_scope requires both permissions. 409 idempotency_conflict means the operation key was reused for another action.
# 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 PUT \
--url 'https://api.migration.powerdialer.ai/api/public/v2/lists/456/contacts/123' \
--header "Authorization: Bearer $POWERDIALER_API_KEY" \
--header "Idempotency-Key: $POWERDIALER_REQUEST_ID"{
"listId": 456,
"contactId": 123,
"member": true
}{
"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}$Path Parameters
Numeric calling-list ID returned by POST /lists or GET /lists. The list must be visible to this credential.
1 <= x <= 2147483647Numeric PowerDialer contact ID from a contact read/write or import result. The contact must be visible to this credential.
1 <= x <= 2147483647