Use it inside Claude, ChatGPT, Cursor and more.Use it in your AI tools.Set it up
Phone validation API

A phone validation API that returns a decision.

One POST with up to 100 contacts. Each comes back with a grade, a plain-language outcome and the action to take, so your code routes the contact instead of interpreting raw line data.

REST and MCPUS phone numbers only
v1
curl -X POST https://app.willthispersonanswer.com/api/v1/analyze \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{"contacts":[{"first_name":"Tavin","last_name":"Orrell","phone":"+12125550147"}]}'
The use case

When you need this.

You have contacts arriving in your own system, from a form, an enrichment step or an agent, and you need to know which ones are worth a call before they reach a rep.

  • POST /api/v1/analyze takes first_name, last_name and phone for up to 100 contacts per request.
  • Each result carries a grade (A1, A2 or A3), will_this_person_answer (high_chance, low_chance or bad_data) and action (phone, multi_channel or email_linkedin).
  • Add ?include=signals to see the five signals behind each grade: valid, line type, activity, name match and litigation risk.
MethodPOST
URL/api/v1/analyze
AuthBearer API key
BatchUp to 100 contacts
Rate limit60 requests / 60s
The response

What comes back.

200 OK · application/json
{
"results": [
{
"phone": "+12125550147",
"status": "ok",
"grade": "A1",
"will_this_person_answer": "high_chance",
"action": "phone"
}
],
"summary": {
"analyzed": 1,
"grades": { "A1": 1, "A2": 0, "A3": 0 },
"undetermined": 0
}
}
FieldValuesWhat it's for
statusValues: ok · invalid_request · unsupported_market · incomplete · provider_unavailableWhat it's for: Only ok is graded and only ok is charged.
gradeValues: A1 · A2 · A3 · nullWhat it's for: A1 is High chance, A2 is Low chance, A3 is Bad data.
will_this_person_answerValues: high_chance · low_chance · bad_data · nullWhat it's for: The grade in plain words. Route on this or on grade.
actionValues: phone · multi_channel · email_linkedin · nullWhat it's for: What to do with the contact next.
Integration

Live in four steps.

Full API reference
  1. 1

    Create an API key

    Sign in, open API & MCP, and create a key. Treat it like a password.

  2. 2

    Send your contacts

    POST names and US numbers in batches of up to 100.

  3. 3

    Route on the outcome

    Send high_chance to the dialer, low_chance to the dialer plus a sequence, and bad_data to email and LinkedIn.

  4. 4

    Retry what didn't finish

    A null grade is a statement about us, not the contact. Retry those later; they weren't charged.

Use cases

What developers build.

Score leads on creation

Check each contact as it lands in your CRM so reps only see callable numbers.

Route inside an enrichment pipeline

Add one HTTP step after enrichment and branch on will_this_person_answer.

Give an AI agent a calling decision

Agents can call the same analysis through the MCP tool instead of the REST endpoint.

FAQ

Questions, answered.

How many contacts can I send per request?

Up to 100. The rate limit is 60 requests per 60 seconds, shared between REST and MCP.

What happens to numbers outside the US?

They come back with status unsupported_market and a null grade, and they aren't charged.

Know who’ll answer
before you call.

Grade 250 contacts free. No card required, and US phone numbers only.

  • US phone numbers only
  • No card required
  • One credit per checked contact