> For the complete documentation index, see [llms.txt](https://help.delpha.io/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://help.delpha.io/delpha-api-and-mcp/api/phone.md).

# 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.

## Validate and normalize a phone number

> 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.

```json
{"openapi":"3.1.0","info":{"title":"Delpha Data Quality API","version":"1.0.0"},"tags":[{"name":"Phone","description":"Phone numbers remain one of the most direct and effective communication channels—when they're accurate and properly formatted.\nDelpha's **Phone Validator** helps you standardize, verify, and clean your phone data to ensure consistency across systems and better outreach performance.\n\nEach phone entry is evaluated on three key aspects:\n- **Completeness:** Detects whether a phone number is present and properly structured.\n- **Validity:** Checks if the number follows the correct national or international format and isn't blacklisted or clearly invalid.\n- **Consistency:** Compares the original input to its normalized international form.\n\nBy 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.\n\nFocused purely on validation and normalization, **Phone Validator** ensures your phone data stays clean, reliable, and ready for business use."}],"servers":[{"url":"https://api.delpha.io","description":"Production API server"}],"security":[{"oauth2":["api/access"]}],"components":{"securitySchemes":{"oauth2":{"type":"oauth2","description":"OAuth2 client credentials flow for API access","flows":{"clientCredentials":{"tokenUrl":"https://secure.delpha.io/oauth2/token","scopes":{"api/access":"Access to the public API"}}}}},"schemas":{"PhoneSyncOutput":{"properties":{"message":{"type":"string","title":"Message","description":"The message to return"},"status":{"type":"string","enum":["SUCCESS","ERROR"],"title":"Status","description":"The status of the process"},"status_code":{"type":"integer","title":"Status Code","description":"The status code to return"},"result":{"anyOf":[{"$ref":"#/components/schemas/PhoneSyncResult"},{"type":"null"}],"description":"The phone assessment result. Present when status == 'SUCCESS'."},"process_time":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Process Time","description":"The processing time of the request, in seconds."}},"type":"object","required":["message","status","status_code"],"title":"PhoneSyncOutput","description":"Public response for the synchronous phone validation."},"PhoneSyncResult":{"properties":{"normalized_value":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Normalized Value","description":"The normalized E.164 phone value."},"phone_type":{"anyOf":[{"$ref":"#/components/schemas/PhoneType"},{"type":"null"}],"description":"The type of phone number."},"carrier":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Carrier","description":"The carrier of the phone number."},"timezone":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Timezone","description":"The timezone of the phone number."},"zone":{"anyOf":[{"$ref":"#/components/schemas/Zone"},{"type":"null"}],"description":"The country/zone (ISO code) of the phone number."},"area":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Area","description":"The geographic area of the phone number."},"valid":{"type":"boolean","title":"Valid","description":"Whether the phone number is valid (carrier-confirmed where available)."}},"type":"object","required":["valid"],"title":"PhoneSyncResult","description":"The trimmed result payload for a successful synchronous phone assessment."},"PhoneType":{"type":"string","enum":["FIXED_LINE","MOBILE","FIXED_LINE_OR_MOBILE","TOLL_FREE","PREMIUM_RATE","SHARED_COST","VOIP","PERSONAL_NUMBER","PAGER","UAN","VOICEMAIL"],"title":"PhoneType","description":"Enum representing the possible phone number types."},"Zone":{"type":"string","enum":["AC","AD","AE","AF","AG","AI","AL","AM","AO","AR","AS","AT","AU","AW","AX","AZ","BA","BB","BD","BE","BF","BG","BH","BI","BJ","BL","BM","BN","BO","BQ","BR","BS","BT","BW","BY","BZ","CA","CC","CD","CF","CG","CH","CI","CK","CL","CM","CN","CO","CR","CU","CV","CW","CX","CY","CZ","DE","DJ","DK","DM","DO","DZ","EC","EE","EG","EH","ER","ES","ET","FI","FJ","FK","FM","FO","FR","GA","GB","GD","GE","GF","GG","GH","GI","GL","GM","GN","GP","GQ","GR","GT","GU","GW","GY","HK","HN","HR","HT","HU","ID","IE","IL","IM","IN","IO","IQ","IR","IS","IT","JE","JM","JO","JP","KE","KG","KH","KI","KM","KN","KP","KR","KW","KY","KZ","LA","LB","LC","LI","LK","LR","LS","LT","LU","LV","LY","MA","MC","MD","ME","MF","MG","MH","MK","ML","MM","MN","MO","MP","MQ","MR","MS","MT","MU","MV","MW","MX","MY","MZ","NA","NC","NE","NF","NG","NI","NL","NO","NP","NR","NU","NZ","OM","PA","PE","PF","PG","PH","PK","PL","PM","PR","PS","PT","PW","PY","QA","RE","RO","RS","RU","RW","SA","SB","SC","SD","SE","SG","SH","SI","SJ","SK","SL","SM","SN","SO","SR","SS","ST","SV","SX","SY","SZ","TA","TC","TD","TG","TH","TJ","TK","TL","TM","TN","TO","TR","TT","TV","TW","TZ","UA","UG","US","UY","UZ","VA","VC","VE","VG","VI","VN","VU","WF","WS","XK","YE","YT","ZA","ZM","ZW"],"title":"Zone","description":"Enum representing the possible country/zone codes for phone numbers\n(ISO 3166-1 alpha-2)."}}},"paths":{"/v1/phone":{"get":{"tags":["Phone"],"summary":"Validate and normalize a phone number","description":"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.","operationId":"validatePhone","responses":{"200":{"description":"Phone assessment succeeded","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PhoneSyncOutput"}}}},"400":{"description":"Either the phone number must include an international code, or 'country' must be provided","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PhoneSyncOutput"}}}},"401":{"description":"Authentication failed - invalid or missing OAuth 2.0 token","content":{"application/json":{"schema":{"properties":{"message":{"type":"string"}},"type":"object"}}}},"402":{"description":"Payment Required","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PhoneSyncOutput"}}}},"502":{"description":"Service unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PhoneSyncOutput"}}}}}}}}}
```

## Submit phone for finding and validation

> Submit an phone for finding and validation. Returns a job ID for tracking the process.

```json
{"openapi":"3.1.0","info":{"title":"Delpha Data Quality API","version":"1.0.0"},"tags":[{"name":"Phone","description":"Phone numbers remain one of the most direct and effective communication channels—when they're accurate and properly formatted.\nDelpha's **Phone Validator** helps you standardize, verify, and clean your phone data to ensure consistency across systems and better outreach performance.\n\nEach phone entry is evaluated on three key aspects:\n- **Completeness:** Detects whether a phone number is present and properly structured.\n- **Validity:** Checks if the number follows the correct national or international format and isn't blacklisted or clearly invalid.\n- **Consistency:** Compares the original input to its normalized international form.\n\nBy 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.\n\nFocused purely on validation and normalization, **Phone Validator** ensures your phone data stays clean, reliable, and ready for business use."}],"servers":[{"url":"https://api.delpha.io","description":"Production API server"}],"security":[{"oauth2":["api/access"]}],"components":{"securitySchemes":{"oauth2":{"type":"oauth2","description":"OAuth2 client credentials flow for API access","flows":{"clientCredentials":{"tokenUrl":"https://secure.delpha.io/oauth2/token","scopes":{"api/access":"Access to the public API"}}}}},"schemas":{"PhoneSubmitInput":{"properties":{"phone":{"type":"string","title":"Phone","description":"The phone number. Should include international code (e.g., '+33672557378') for automatic country detection. If not provided, 'country' or 'country_code' must be specified."},"country":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Country","description":"The country name of the phone number (e.g., 'France'). Required if phone number does not include international code (+XX)."},"country_code":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Country Code","description":"The 2-letter ISO country code of the phone number.Required if phone number does not include international code (+XX)."}},"type":"object","required":["phone"],"title":"PhoneSubmitInput","description":"Payload to submit a new phone quality job.\n\n**Important**: For proper normalization and country detection, either:\n- Provide a phone number with international code (e.g., \"+33672557378\"), OR\n- Provide the phone number along with `country` or `country_code`\n\nIf none of these conditions are met, the system may not be able to properly\ndetect the country and apply the related normalization."},"PhoneSubmitOutput":{"properties":{"job_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Job Id","description":"The job ID. Required if status <= 300."},"message":{"type":"string","title":"Message","description":"The message to return"},"status":{"type":"string","enum":["SUCCESS","ERROR"],"title":"Status","description":"The status of the process"},"status_code":{"type":"integer","title":"Status Code","description":"The status code to return"}},"type":"object","required":["message","status","status_code"],"title":"PhoneSubmitOutput","description":"Response after submitting a new phone quality job."}}},"paths":{"/v1/phone":{"post":{"tags":["Phone"],"summary":"Submit phone for finding and validation","description":"Submit an phone for finding and validation. Returns a job ID for tracking the process.","operationId":"findAndValidatePhone","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PhoneSubmitInput"}}},"required":true},"responses":{"202":{"description":"Job submitted to assess_phone_v16","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PhoneSubmitOutput"}}}},"400":{"description":"Invalid phone format or missing required fields","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PhoneSubmitOutput"}}}},"401":{"description":"Authentication failed - invalid or missing OAuth 2.0 token","content":{"application/json":{"schema":{"properties":{"message":{"type":"string"}},"type":"object"}}}},"402":{"description":"Payment Required","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PhoneSubmitOutput"}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PhoneSubmitOutput"}}}},"502":{"description":"Service unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PhoneSubmitOutput"}}}}}}}}}
```

## Get phone finder and validator job status

> Retrieve the result and status of a previously submitted phone finder and validator job.

```json
{"openapi":"3.1.0","info":{"title":"Delpha Data Quality API","version":"1.0.0"},"tags":[{"name":"Phone","description":"Phone numbers remain one of the most direct and effective communication channels—when they're accurate and properly formatted.\nDelpha's **Phone Validator** helps you standardize, verify, and clean your phone data to ensure consistency across systems and better outreach performance.\n\nEach phone entry is evaluated on three key aspects:\n- **Completeness:** Detects whether a phone number is present and properly structured.\n- **Validity:** Checks if the number follows the correct national or international format and isn't blacklisted or clearly invalid.\n- **Consistency:** Compares the original input to its normalized international form.\n\nBy 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.\n\nFocused purely on validation and normalization, **Phone Validator** ensures your phone data stays clean, reliable, and ready for business use."}],"servers":[{"url":"https://api.delpha.io","description":"Production API server"}],"security":[{"oauth2":["api/access"]}],"components":{"securitySchemes":{"oauth2":{"type":"oauth2","description":"OAuth2 client credentials flow for API access","flows":{"clientCredentials":{"tokenUrl":"https://secure.delpha.io/oauth2/token","scopes":{"api/access":"Access to the public API"}}}}},"schemas":{"PhonePullOutput":{"properties":{"message":{"type":"string","title":"Message","description":"A human-readable message describing the current state or outcome of the job."},"status":{"type":"string","enum":["SUCCESS","ERROR"],"title":"Status","description":"The status of the process"},"status_code":{"type":"integer","title":"Status Code","description":"The HTTP status code representing the job's current state."},"result":{"anyOf":[{"$ref":"#/components/schemas/PhoneModel"},{"type":"null"}],"description":"The result of the phone quality job"},"process_time":{"anyOf":[{"type":"number","minimum":0},{"type":"null"}],"title":"Process Time","description":"The total time taken to process the job, in seconds."}},"type":"object","required":["message","status","status_code"],"title":"PhonePullOutput","description":"Response after retrieving the status and result of an phone quality job."},"PhoneModel":{"properties":{"data_type":{"$ref":"#/components/schemas/DataType","description":"The type of data for this field"},"normalized_value":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Normalized Value","description":"Normalized phone value."},"phone_type":{"anyOf":[{"$ref":"#/components/schemas/PhoneType"},{"type":"null"}],"description":"The type of phone number"},"carrier":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Carrier","description":"The carrier of the phone number"},"timezone":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Timezone","description":"The timezone of the phone number"},"zone":{"anyOf":[{"$ref":"#/components/schemas/Zone"},{"type":"null"}],"description":"The zone of the phone number"},"area":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Area","description":"The area of the phone number"},"scores":{"$ref":"#/components/schemas/ScoresModel","description":"Scores for the field"}},"type":"object","required":["data_type","scores"],"title":"PhoneModel","description":"Model representing the details of an phone field."},"DataType":{"type":"string","enum":["email","social_network","name","legal_id","phone","address","website"],"title":"DataType"},"PhoneType":{"type":"string","enum":["FIXED_LINE","MOBILE","FIXED_LINE_OR_MOBILE","TOLL_FREE","PREMIUM_RATE","SHARED_COST","VOIP","PERSONAL_NUMBER","PAGER","UAN","VOICEMAIL"],"title":"PhoneType","description":"Enum representing the possible phone number types."},"Zone":{"type":"string","enum":["AC","AD","AE","AF","AG","AI","AL","AM","AO","AR","AS","AT","AU","AW","AX","AZ","BA","BB","BD","BE","BF","BG","BH","BI","BJ","BL","BM","BN","BO","BQ","BR","BS","BT","BW","BY","BZ","CA","CC","CD","CF","CG","CH","CI","CK","CL","CM","CN","CO","CR","CU","CV","CW","CX","CY","CZ","DE","DJ","DK","DM","DO","DZ","EC","EE","EG","EH","ER","ES","ET","FI","FJ","FK","FM","FO","FR","GA","GB","GD","GE","GF","GG","GH","GI","GL","GM","GN","GP","GQ","GR","GT","GU","GW","GY","HK","HN","HR","HT","HU","ID","IE","IL","IM","IN","IO","IQ","IR","IS","IT","JE","JM","JO","JP","KE","KG","KH","KI","KM","KN","KP","KR","KW","KY","KZ","LA","LB","LC","LI","LK","LR","LS","LT","LU","LV","LY","MA","MC","MD","ME","MF","MG","MH","MK","ML","MM","MN","MO","MP","MQ","MR","MS","MT","MU","MV","MW","MX","MY","MZ","NA","NC","NE","NF","NG","NI","NL","NO","NP","NR","NU","NZ","OM","PA","PE","PF","PG","PH","PK","PL","PM","PR","PS","PT","PW","PY","QA","RE","RO","RS","RU","RW","SA","SB","SC","SD","SE","SG","SH","SI","SJ","SK","SL","SM","SN","SO","SR","SS","ST","SV","SX","SY","SZ","TA","TC","TD","TG","TH","TJ","TK","TL","TM","TN","TO","TR","TT","TV","TW","TZ","UA","UG","US","UY","UZ","VA","VC","VE","VG","VI","VN","VU","WF","WS","XK","YE","YT","ZA","ZM","ZW"],"title":"Zone","description":"Enum representing the possible country/zone codes for phone numbers\n(ISO 3166-1 alpha-2)."},"ScoresModel":{"properties":{"accuracy":{"type":"number","maximum":1,"minimum":-1,"title":"Accuracy","description":"Accuracy score","default":-1},"validity":{"type":"integer","maximum":1,"minimum":-1,"title":"Validity","description":"Validity score","default":-1},"completeness":{"type":"number","maximum":1,"minimum":0,"title":"Completeness","description":"Completeness score","default":0},"consistency":{"type":"integer","maximum":1,"minimum":0,"title":"Consistency","description":"Consistency score","default":0}},"type":"object","title":"ScoresModel","description":"Model representing the scores for an email field."}}},"paths":{"/v1/phone/{job_id}":{"get":{"tags":["Phone"],"summary":"Get phone finder and validator job status","description":"Retrieve the result and status of a previously submitted phone finder and validator job.","operationId":"getPhoneResult","responses":{"200":{"description":"Job succeeded.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PhonePullOutput"}}}},"202":{"description":"Job is still running.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PhonePullOutput"}}}},"400":{"description":"Input validation failed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PhonePullOutput"}}}},"401":{"description":"Authentication failed - invalid or missing OAuth 2.0 token","content":{"application/json":{"schema":{"properties":{"message":{"type":"string"}},"type":"object"}}}},"500":{"description":"Failed to retrieve job.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PhonePullOutput"}}}},"504":{"description":"Job timed out.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PhonePullOutput"}}}}}}}}}
```

## Submit a batch of phone items

> 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.

```json
{"openapi":"3.1.0","info":{"title":"Delpha Data Quality API","version":"1.0.0"},"tags":[{"name":"Phone","description":"Phone numbers remain one of the most direct and effective communication channels—when they're accurate and properly formatted.\nDelpha's **Phone Validator** helps you standardize, verify, and clean your phone data to ensure consistency across systems and better outreach performance.\n\nEach phone entry is evaluated on three key aspects:\n- **Completeness:** Detects whether a phone number is present and properly structured.\n- **Validity:** Checks if the number follows the correct national or international format and isn't blacklisted or clearly invalid.\n- **Consistency:** Compares the original input to its normalized international form.\n\nBy 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.\n\nFocused purely on validation and normalization, **Phone Validator** ensures your phone data stays clean, reliable, and ready for business use."}],"servers":[{"url":"https://api.delpha.io","description":"Production API server"}],"security":[{"oauth2":["api/access"]}],"components":{"securitySchemes":{"oauth2":{"type":"oauth2","description":"OAuth2 client credentials flow for API access","flows":{"clientCredentials":{"tokenUrl":"https://secure.delpha.io/oauth2/token","scopes":{"api/access":"Access to the public API"}}}}},"schemas":{"PhoneBatchSubmitInput":{"properties":{"items":{"items":{"$ref":"#/components/schemas/PhoneSubmitInput"},"type":"array","maxItems":100,"minItems":1,"title":"Items","description":"The batch items (1..100), each a single-route input payload."}},"type":"object","required":["items"],"title":"PhoneBatchSubmitInput","description":"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`)."},"PhoneSubmitInput":{"properties":{"phone":{"type":"string","title":"Phone","description":"The phone number. Should include international code (e.g., '+33672557378') for automatic country detection. If not provided, 'country' or 'country_code' must be specified."},"country":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Country","description":"The country name of the phone number (e.g., 'France'). Required if phone number does not include international code (+XX)."},"country_code":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Country Code","description":"The 2-letter ISO country code of the phone number.Required if phone number does not include international code (+XX)."}},"type":"object","required":["phone"],"title":"PhoneSubmitInput","description":"Payload to submit a new phone quality job.\n\n**Important**: For proper normalization and country detection, either:\n- Provide a phone number with international code (e.g., \"+33672557378\"), OR\n- Provide the phone number along with `country` or `country_code`\n\nIf none of these conditions are met, the system may not be able to properly\ndetect the country and apply the related normalization."},"BatchSubmitOutput":{"properties":{"job_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Job Id","description":"The job ID. Required if status <= 300."},"item_count":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Item Count","description":"Number of items accepted in the batch (present on success)."},"message":{"type":"string","title":"Message","description":"The message to return"},"status":{"type":"string","enum":["SUCCESS","ERROR"],"title":"Status","description":"The status of the process"},"status_code":{"type":"integer","title":"Status Code","description":"The status code to return"}},"type":"object","required":["message","status","status_code"],"title":"BatchSubmitOutput","description":"Response after submitting a batch quality job."}}},"paths":{"/v1/phone/batch":{"post":{"tags":["Phone"],"summary":"Submit a batch of phone items","description":"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.","operationId":"submitPhoneBatch","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PhoneBatchSubmitInput"}}},"required":true},"responses":{"202":{"description":"Batch submitted","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BatchSubmitOutput"}}}},"401":{"description":"Authentication failed - invalid or missing OAuth 2.0 token","content":{"application/json":{"schema":{"properties":{"message":{"type":"string"}},"type":"object"}}}},"402":{"description":"Payment Required","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BatchSubmitOutput"}}}},"422":{"description":"Invalid batch payload or size (1..100)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BatchSubmitOutput"}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BatchSubmitOutput"}}}},"502":{"description":"Service unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BatchSubmitOutput"}}}}}}}}}
```

## Get phone batch job status

> 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).

```json
{"openapi":"3.1.0","info":{"title":"Delpha Data Quality API","version":"1.0.0"},"tags":[{"name":"Phone","description":"Phone numbers remain one of the most direct and effective communication channels—when they're accurate and properly formatted.\nDelpha's **Phone Validator** helps you standardize, verify, and clean your phone data to ensure consistency across systems and better outreach performance.\n\nEach phone entry is evaluated on three key aspects:\n- **Completeness:** Detects whether a phone number is present and properly structured.\n- **Validity:** Checks if the number follows the correct national or international format and isn't blacklisted or clearly invalid.\n- **Consistency:** Compares the original input to its normalized international form.\n\nBy 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.\n\nFocused purely on validation and normalization, **Phone Validator** ensures your phone data stays clean, reliable, and ready for business use."}],"servers":[{"url":"https://api.delpha.io","description":"Production API server"}],"security":[{"oauth2":["api/access"]}],"components":{"securitySchemes":{"oauth2":{"type":"oauth2","description":"OAuth2 client credentials flow for API access","flows":{"clientCredentials":{"tokenUrl":"https://secure.delpha.io/oauth2/token","scopes":{"api/access":"Access to the public API"}}}}},"schemas":{"PhoneBatchPullOutput":{"properties":{"message":{"type":"string","title":"Message","description":"A human-readable message describing the current state or outcome of the job."},"status":{"type":"string","enum":["SUCCESS","ERROR"],"title":"Status","description":"The status of the process"},"status_code":{"type":"integer","title":"Status Code","description":"The HTTP status code representing the job's current state."},"counts":{"anyOf":[{"$ref":"#/components/schemas/CountsModel"},{"type":"null"}],"description":"Item-level outcome counts (present only once the job has completed)."},"result_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Result Url","description":"Presigned URL (1h expiry) to download the full batch result JSON from S3."},"result_data":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Result Data","description":"The full batch result JSON, inlined (opaque — assembled by the DataQuality container / DelphaAgents compiler). Present only when status_code == 200 and the result file is <=1MB; otherwise omitted (fetch `result_url` instead). Shape: `{job_id, usecase, counts, items: [...]}`; its `result` is the SAME object `GET /v1/phone/{job_id}` returns for a single item."},"item_count":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Item Count","description":"Total number of items in the batch (present while the job is running)."},"processed_count":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Processed Count","description":"Number of items processed so far (present while the job is running; may be absent early in the job's lifecycle)."},"process_time":{"anyOf":[{"type":"number","minimum":0},{"type":"null"}],"title":"Process Time","description":"The total time taken to process the job, in seconds."}},"type":"object","required":["message","status","status_code"],"title":"PhoneBatchPullOutput","description":"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`."},"CountsModel":{"properties":{"total":{"type":"integer","title":"Total","description":"Total number of items submitted."},"succeeded":{"type":"integer","title":"Succeeded","description":"Number of items that succeeded."},"failed":{"type":"integer","title":"Failed","description":"Number of items that failed."}},"type":"object","required":["total","succeeded","failed"],"title":"CountsModel","description":"Item-level outcome counts for a completed batch job."}}},"paths":{"/v1/phone/batch/{job_id}":{"get":{"tags":["Phone"],"summary":"Get phone batch job status","description":"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).","operationId":"getPhoneBatchResult","responses":{"200":{"description":"97/100 items succeeded","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PhoneBatchPullOutput"}}}},"202":{"description":"Job is still running.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PhoneBatchPullOutput"}}}},"400":{"description":"Missing job_id in path parameters","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PhoneBatchPullOutput"}}}},"401":{"description":"Authentication failed - invalid or missing OAuth 2.0 token","content":{"application/json":{"schema":{"properties":{"message":{"type":"string"}},"type":"object"}}}},"404":{"description":"No job found for job_id: ...","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PhoneBatchPullOutput"}}}},"409":{"description":"Reservation expired; please resubmit the job.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PhoneBatchPullOutput"}}}},"500":{"description":"Job failed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PhoneBatchPullOutput"}}}},"504":{"description":"Job timed out.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PhoneBatchPullOutput"}}}}}}}}}
```


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter, and the optional `goal` query parameter:

```
GET https://help.delpha.io/delpha-api-and-mcp/api/phone.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
