# Replace example resource IDs and ownerId with values from your workspace.
: "${POWERDIALER_API_KEY:?Set POWERDIALER_API_KEY to your scoped API key}"
curl --request GET \
--url 'https://api.migration.powerdialer.ai/api/public/v2/contacts/123' \
--header "Authorization: Bearer $POWERDIALER_API_KEY"{
"ownerId": "user_example",
"externalId": "crm-contact-123",
"name": "Alex Morgan",
"phoneNumber": "+12125550100",
"additionalNumbers": [],
"metadata": {
"source": "website",
"timeZone": "America/New_York",
"timeZoneSource": "provided"
},
"timeZone": "America/New_York",
"timeZoneSource": "provided",
"id": 123,
"createdAt": "2026-10-08T12:00:00.000Z",
"updatedAt": "2026-10-08T12:00:00.000Z"
}{
"error": {
"code": "invalid_api_key",
"message": "API key is invalid, expired or revoked",
"requestId": "00000000-0000-4000-8000-000000000004"
}
}Get a contact
Fetch current contact details after receiving a contact event or when opening a lead in your integration. Requires contacts:read. Use the numeric PowerDialer contact ID returned by a contact write, collection read or import result, rather than your external CRM ID.
The response includes owner, external ID, phone numbers, metadata and timezone information. It describes current state, which may be newer than the event that prompted the read. Access is limited by the key’s workspace and owner restrictions; un-attributed legacy records remain unavailable.
A 404 not_found deliberately covers both missing and inaccessible contacts. After a delete or access-revoked event, remove the record from the affected owner’s local view instead of repeatedly polling it. A malformed numeric ID returns 400 invalid_request. This read is safe to retry after transient failures and needs no idempotency key.
# Replace example resource IDs and ownerId with values from your workspace.
: "${POWERDIALER_API_KEY:?Set POWERDIALER_API_KEY to your scoped API key}"
curl --request GET \
--url 'https://api.migration.powerdialer.ai/api/public/v2/contacts/123' \
--header "Authorization: Bearer $POWERDIALER_API_KEY"{
"ownerId": "user_example",
"externalId": "crm-contact-123",
"name": "Alex Morgan",
"phoneNumber": "+12125550100",
"additionalNumbers": [],
"metadata": {
"source": "website",
"timeZone": "America/New_York",
"timeZoneSource": "provided"
},
"timeZone": "America/New_York",
"timeZoneSource": "provided",
"id": 123,
"createdAt": "2026-10-08T12:00:00.000Z",
"updatedAt": "2026-10-08T12:00:00.000Z"
}{
"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.
Path Parameters
Numeric PowerDialer contact ID, not your CRM externalId. The contact must be inside the credential’s workspace and owner scope.
1 <= x <= 2147483647Response
The current visible contact. This is not an event-time snapshot.
PowerDialer contact ID. Use this integer in contact URLs.
Stored contact name.
Stored primary phone number. V2 writes require E.164.
Stored additional phone numbers.
Stored JSON metadata. v2 writes use objects; legacy rows may contain other JSON values.
Attributed PowerDialer member ID.
Your source-system identifier, or null when no identifier was assigned.
Time the contact was created, in UTC.
Time the contact was last updated, in UTC.
Stored timezone metadata. V2 writes produce an IANA string or null; legacy metadata may contain another JSON value.
Stored timezone-source metadata. V2 writes use provided, phone_estimate, or unknown; legacy values may differ.