apyhub
DATA VALIDATION · DEVELOPER TOOLS

Detect Phone Numbers API

What it does

Phone Number Detector finds phone numbers in supplied text and returns the detected matches in a structured job result. Send content as a string, get back a job ID and a status URL, then poll for the final result when processing completes.

Use it when you need to scan support tickets, lead forms, chat transcripts, or imported documents for phone numbers before storing, validating, or routing the data. The service is asynchronous, so it fits batch workflows and longer inputs without blocking your application.

The job status response includes a status field and a result array. Each detected item includes detected_number and parsed_number, so you can compare the original match with the normalized form returned by the service.

Keep the scope in mind: this service works on text you provide and returns only the fields defined in its schemas. It is designed for phone-number detection and parsing, not broader contact extraction.

▣ ENDPOINT 01 / 02
POST
Submit Detect Phone Numbers job
https://api.eu.apyverse.com/sharpapi/detect-phone-numbers

QUICKSTART

GUIDE

Quickstart

Send the text you want scanned for mobile numbers in a single JSON body field.

curl -X POST "https://api.eu.apyverse.com/sharpapi/detect-phone-numbers" \
  -H "apy-token: $APY_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"content":"Please call +1 415 555 2671 or +44 20 7946 0958."}'

What you'll get back

Returns a JSON object with two string fields: job_id is the UUID of the submitted asynchronous job, and status_url is the URI to check that job's status.

{
  "job_id": "550e8400-e29b-41d4-a716-446655440000",
  "status_url": "https://example.com/jobs/550e8400-e29b-41d4-a716-446655440000"
}
TRY ITLIVE · 50 ATOMS
Loading your default key…
The full key is used to call the gateway and stays in this tab — never sent to orbit or saved.
body*
Provide the content from where mobile number needs to be detected.

About this endpoint

What it does

Submits an asynchronous job to detect phone numbers from the provided content. The request sends the content to analyze, and the response returns a job identifier plus a status URL to track progress.

Request Body

ParameterTypeMandatoryDescription
contentStringYesProvide the content from where mobile number needs to be detected.

Response

Returns a JSON object with required job_id and status_url string fields. job_id is a UUID identifier for the submitted asynchronous job, and status_url is a URI you can use to check the job status.

ParameterTypeMandatoryDescription
job_idStringYesIdentifier of the submitted asynchronous job. Format: UUID.
status_urlStringYesURL used to check the submitted job status. Format: URI.

Notes

This endpoint kicks off an async job and returns immediately with a job identifier; the actual work runs in the background. Pair this call with the corresponding job_check endpoint — poll that until the status reaches a terminal state to retrieve the result. Use job_id from the response to track the job.

Body

Name
Type
Description
bodyREQUIRED
object
▣ ENDPOINT 02 / 02
GET
Get Detect Phone Numbers job status
https://api.eu.apyverse.com/sharpapi/detect-phone-numbers/job/status/:job_id

QUICKSTART

GUIDE

Quickstart

Check the status of a phone-number detection job by its job ID.

curl -X GET "https://api.eu.apyverse.com/sharpapi/detect-phone-numbers/job/status/:job_id" \
  -H "apy-token: $APY_TOKEN"

What you'll get back

Returns a JSON object with a data object. Inside data, id and type are strings, and attributes is an object with type, status, and result fields. result is an array of objects, each containing parsed_number and detected_number strings.

{
  "data": {
    "id": "job-123",
    "type": "job",
    "attributes": {
      "type": "phone_numbers",
      "status": "completed",
      "result": [
        {
          "parsed_number": "+14155552671",
          "detected_number": "+1 415-555-2671"
        }
      ]
    }
  }
}
TRY ITLIVE · 1 ATOM
Loading your default key…
The full key is used to call the gateway and stays in this tab — never sent to orbit or saved.

About this endpoint

What it does

Returns the current status of a Detect Phone Numbers async job identified by job_id. The response includes a data object with the job identifier and an attributes object that carries the job status and, when available, the parsed phone-number results.

Path Parameter(s)

AttributeTypeMandatoryDescription
job_idStringYesJob identifier, UUID format.

Response

Returns a JSON object with a data object field. The data object contains id and type string fields, plus an attributes object with type, result, and status fields. The status code is not declared in the schema.

AttributeTypeMandatoryDescription
dataObjectNoJob payload object. Contains id, type, and attributes.
data.idStringNoJob identifier.
data.typeStringNoJob type.
data.attributesObjectNoJob attributes object. Contains type, result, and status.
data.attributes.typeStringNoAttribute type.
data.attributes.resultObject ArrayNoArray of detected phone-number result objects. Each item contains parsed_number and detected_number.
data.attributes.result[].parsed_numberStringNoParsed phone number.
data.attributes.result[].detected_numberStringNoDetected phone number.
data.attributes.statusStringNoJob status.

Notes

Poll this endpoint with the job_id returned by the submit call. The status field cycles through transitional values before reaching a terminal state; the result fields are only populated once status is successful, so read data.attributes.result only after the job finishes.

Path parameters

Name
Type
Description
job_idREQUIRED
string
▣ COMMON ERRORS

Errors any endpoint can return

400bad_request

Required parameter missing or malformed body.

401unauthorized

API key missing, revoked, or not authorized for this service.

429rate_limited

Your plan's per-second rate exceeded. Retry with exponential backoff.

503upstream_busy

Backend temporarily unavailable. Try again in a few seconds.