Phone
Phone numbers remain one of the most direct and effective communication channels—when they're accurate and properly formatted. Delpha's Phone Validator helps you standardize, verify, and clean your phone data to ensure consistency across systems and better outreach performance.
Each phone entry is evaluated on three key aspects:
Completeness: Detects whether a phone number is present and properly structured.
Validity: Checks if the number follows the correct national or international format and isn't blacklisted or clearly invalid.
Consistency: Compares the original input to its normalized international form.
By using optional context such as a country or country code, the system applies the right validation rules and returns a standardized E.164-compliant number. When no country is provided, Delpha applies smart defaults based on global dialing patterns.
Focused purely on validation and normalization, Phone Validator ensures your phone data stays clean, reliable, and ready for business use.
Synchronous phone validation: normalize a phone number and receive its type, carrier, timezone, zone, area and validity in a single request (no job_id polling). Provide the number with an international (+) prefix, or pass country (a name or ISO code) for national-format numbers.
- : Access to the public API
OAuth2 client credentials flow for API access
The phone number. Include the international code (e.g. '+33672557378') for automatic country detection, otherwise provide 'country'.
{"value":"+33672557378"}The country of the phone number — a country name ('France') OR a 2-letter ISO code ('FR'). Required when the phone has no international (+) prefix.
{"value":"FR"}Phone assessment succeeded
Public response for the synchronous phone validation.
The message to return
Phone assessment succeededThe status of the process
SUCCESSPossible values: The status code to return
200The processing time of the request, in seconds.
0.42Either the phone number must include an international code, or 'country' must be provided
Authentication failed - invalid or missing OAuth 2.0 token
Payment Required
Service unavailable
GET /v1/phone?phone=text HTTP/1.1
Host: api.delpha.io
Authorization: Bearer YOUR_OAUTH2_TOKEN
Accept: */*
{
"message": "Phone assessment succeeded",
"status": "SUCCESS",
"status_code": 200,
"result": {
"normalized_value": "+33672557378",
"phone_type": "MOBILE",
"carrier": "Orange France",
"timezone": "Europe/Paris",
"zone": "FR",
"area": "France",
"valid": true
},
"process_time": 0.42
}Submit an phone for finding and validation. Returns a job ID for tracking the process.
- : Access to the public API
OAuth2 client credentials flow for API access
The phone number. Include the international code (e.g. '+33672557378') for automatic country detection, otherwise provide 'country'.
{"value":"+33672557378"}The country of the phone number — a country name ('France') OR a 2-letter ISO code ('FR'). Required when the phone has no international (+) prefix.
{"value":"FR"}Payload to submit a new phone quality job.
Important: For proper normalization and country detection, either:
- Provide a phone number with international code (e.g., "+33672557378"), OR
- Provide the phone number along with
countryorcountry_code
If none of these conditions are met, the system may not be able to properly detect the country and apply the related normalization.
The phone number. Should include international code (e.g., '+33672557378') for automatic country detection. If not provided, 'country' or 'country_code' must be specified.
+33672557378The country name of the phone number (e.g., 'France'). Required if phone number does not include international code (+XX).
FranceThe 2-letter ISO country code of the phone number.Required if phone number does not include international code (+XX).
FRJob submitted to assess_phone_v16
Response after submitting a new phone quality job.
The job ID. Required if status <= 300.
21014abc65004d2781d2e0ef4c9fbb46The message to return
Job submitted to assess_phone_v16The status of the process
SUCCESSPossible values: The status code to return
202Invalid phone format or missing required fields
Authentication failed - invalid or missing OAuth 2.0 token
Payment Required
Internal server error
Service unavailable
POST /v1/phone?phone=text HTTP/1.1
Host: api.delpha.io
Authorization: Bearer YOUR_OAUTH2_TOKEN
Content-Type: application/json
Accept: */*
Content-Length: 63
{
"phone": "+33672557378",
"country": "France",
"country_code": "FR"
}{
"job_id": "21014abc65004d2781d2e0ef4c9fbb46",
"message": "Job submitted to assess_phone_v16",
"status": "SUCCESS",
"status_code": 202
}Retrieve the result and status of a previously submitted phone finder and validator job.
- : Access to the public API
OAuth2 client credentials flow for API access
The unique identifier of the phone job
{"summary":"Sample job ID","value":"21014abc65004d2781d2e0ef4c9fbb46"}Job succeeded.
Response after retrieving the status and result of an phone quality job.
A human-readable message describing the current state or outcome of the job.
Job succeeded.The status of the process
SUCCESSPossible values: The HTTP status code representing the job's current state.
200The total time taken to process the job, in seconds.
0.123Job is still running.
Input validation failed.
Authentication failed - invalid or missing OAuth 2.0 token
Failed to retrieve job.
Job timed out.
GET /v1/phone/{job_id} HTTP/1.1
Host: api.delpha.io
Authorization: Bearer YOUR_OAUTH2_TOKEN
Accept: */*
{
"message": "Job succeeded.",
"status": "SUCCESS",
"status_code": 200,
"result": {
"data_type": "phone",
"normalized_value": "+33672557378",
"phone_type": "MOBILE",
"carrier": "Orange France",
"timezone": "Europe/Paris",
"zone": "FR",
"area": "France",
"scores": {
"validity": 1,
"completeness": 1,
"consistency": 1,
"accuracy": -1
}
},
"process_time": 0.123
}Submit 1..100 phone items for asynchronous batch processing as ONE job (never a per-item fan-out). Returns a job_id immediately (202); poll GET /v1/phone/batch/{job_id} for status and results. Each item is validated identically to the single-route POST /v1/phone payload; a payload with 0 items or more than 100 is rejected with 422.
- : Access to the public API
OAuth2 client credentials flow for API access
Batch envelope for POST /v1/phone/batch: {"items": [...]} (1..100 items, 422 beyond); each item is shaped exactly like the single-route POST /v1/phone payload (reused here by $ref as PhoneSubmitInput).
Batch submitted
Response after submitting a batch quality job.
The job ID. Required if status <= 300.
21014abc65004d2781d2e0ef4c9fbb46Number of items accepted in the batch (present on success).
100The message to return
Batch submittedThe status of the process
SUCCESSPossible values: The status code to return
202Authentication failed - invalid or missing OAuth 2.0 token
Payment Required
Invalid batch payload or size (1..100)
Internal server error
Service unavailable
POST /v1/phone/batch HTTP/1.1
Host: api.delpha.io
Authorization: Bearer YOUR_OAUTH2_TOKEN
Content-Type: application/json
Accept: */*
Content-Length: 75
{
"items": [
{
"phone": "+33672557378",
"country": "France",
"country_code": "FR"
}
]
}{
"job_id": "21014abc65004d2781d2e0ef4c9fbb46",
"item_count": 100,
"message": "Batch submitted",
"status": "SUCCESS",
"status_code": 202
}Poll a batch of phone items submitted via POST /v1/phone/batch. 202 while running (with item_count/processed_count progress); 200 once SUCCEEDED (with counts, a presigned result_url, and result_data inlined when <=1MB); 409 if the credit reservation expired before delivery (resubmit); 500 if the job failed; 504 past the 24h ceiling (batch jobs run on Batch/Vertex timescales, hours not minutes).
- : Access to the public API
OAuth2 client credentials flow for API access
The unique identifier of the phone batch job.
{"summary":"Sample job ID","value":"21014abc65004d2781d2e0ef4c9fbb46"}97/100 items succeeded
Response for GET /v1/phone/batch/{job_id}. Each result_data.items[] entry is keyed to its request item by dispatch_key ({"record_id": "<job_id>#<index>"}). On success its result is the SAME object GET /v1/phone/{job_id} returns for a single item. On failure it carries an error string instead of result.
A human-readable message describing the current state or outcome of the job.
97/100 items succeededThe status of the process
SUCCESSPossible values: The HTTP status code representing the job's current state.
200Presigned URL (1h expiry) to download the full batch result JSON from S3.
https://delpha-api-batch-dev.s3.amazonaws.com/batch-results/<job_id>.json?...Total number of items in the batch (present while the job is running).
Number of items processed so far (present while the job is running; may be absent early in the job's lifecycle).
The total time taken to process the job, in seconds.
12.3Job is still running.
Missing job_id in path parameters
Authentication failed - invalid or missing OAuth 2.0 token
No job found for job_id: ...
Reservation expired; please resubmit the job.
Job failed.
Job timed out.
GET /v1/phone/batch/{job_id} HTTP/1.1
Host: api.delpha.io
Authorization: Bearer YOUR_OAUTH2_TOKEN
Accept: */*
{
"message": "97/100 items succeeded",
"status": "SUCCESS",
"status_code": 200,
"counts": {
"total": 100,
"succeeded": 97,
"failed": 3
},
"result_url": "https://delpha-api-batch-dev.s3.amazonaws.com/batch-results/<job_id>.json?...",
"result_data": {
"job_id": "21014abc65004d2781d2e0ef4c9fbb46",
"usecase": "phone",
"counts": {
"total": 2,
"succeeded": 1,
"failed": 1
},
"items": [
{
"dispatch_key": {
"record_id": "21014abc65004d2781d2e0ef4c9fbb46#0"
},
"result": {
"data_type": "phone",
"normalized_value": "+33672557378",
"phone_type": "MOBILE",
"carrier": "Orange France",
"timezone": "Europe/Paris",
"zone": "FR",
"area": "France",
"scores": {
"validity": 1,
"completeness": 1,
"consistency": 1,
"accuracy": -1
}
}
},
{
"dispatch_key": {
"record_id": "21014abc65004d2781d2e0ef4c9fbb46#1"
},
"error": "Processing failed for this item."
}
]
},
"item_count": null,
"processed_count": null,
"process_time": 12.3
}Last updated
Was this helpful?