When a live HLR dip is worth five credits
A live network dip costs more than a metadata check, and on most rows it buys nothing you will act on. The rows where it pays share a shape, and it is worth knowing that shape before you spend.
Contents
There are two different questions you can ask about a phone number, and they have different prices.
The first is whether the number could ring: is it well-formed, does it sit in an allocated range, and what is that range designated for. That is metadata, it is fast, and on Boundstone it costs one credit.
The second is whether it does: who carries it right now, whether it has been ported away from its original network, and whether the network says it is currently reachable. That requires asking the network, and it costs five credits.
Most rows do not need the second question. Knowing which ones do is the whole skill.
What the dip actually returns
Send hlr:true on a paid plan and Boundstone queries the Home Location Register — the mobile network's own record of the subscriber. The response gains:
current_carrier— who serves the number today, which is not necessarily who was allocated the range.ported— whether it has moved networks.reachable—trueonly when the network answered CONNECTED. Anything less determinate comes backnullrather than being rounded to a verdict.roaming— whether the handset is currently on another network.
And the arrays change. carrier_lookup, ported_status and hlr_liveness move out of checks.not_performed and into checks.performed, because they genuinely ran. That movement is the point: you can tell from the payload alone which question was answered.
The refund is part of the price
Networks do not always answer. When a dip cannot be resolved, Boundstone abstains and refunds the five credits rather than returning a confident-looking null you have paid for.
This is worth checking with any vendor you evaluate, because it changes the real per-answer cost substantially. A provider that bills every attempt is charging you for its supplier's silence.
Where the dip pays
The rows where five credits is a good trade share a shape: the downstream action is expensive, irreversible, or both.
The ambiguous bucket. In North America the numbering plan shares ranges, so a large share of numbers return fixed_line_or_mobile — an honest abstention. If you were going to guess, a dip replaces the guess with the network's answer.
Before a paid send at volume. If a message costs you money per recipient, spending five credits to avoid spending it on an unreachable handset is straightforward arithmetic with your own numbers.
Aged lists. Metadata does not decay, which is exactly the problem. A number allocated to a mobile range five years ago still reads mobile today whether or not anyone has it. Porting and disconnection are invisible to a metadata check by construction.
High-value, low-volume rows. When the list is small and each contact matters, the marginal cost of certainty is trivial.
Where it does not
Fresh lists with clean metadata. If a number is well-formed, unambiguously mobile, and collected last week, the dip usually confirms what you already believed.
Rows you are about to drop anyway. Dip after filtering, never before. Paying to learn that an invalid number is also unreachable is paying twice for the same decision.
Free-tier work. HLR is a paid-plan feature. On the free tier the base checks run and the response marks the live layer not_performed — honestly, and without a paywall message dressed up as a result.
Compliance questions. A dip tells you the network's view of a number. It does not tell you whether you are permitted to contact it. DNC scrubbing and consent remain separate steps with separate tools, and none of this is legal advice.
The workflow that usually wins
- Screen the whole file on metadata with
POST /v1/bulk/phone— one credit per row, refunded on any row that errors. - Drop everything where
validis nottrue. - Segment on
line_type. - Dip only the segment where a wrong answer costs you something — typically the ambiguous bucket and anything you are about to pay to reach.
That shape spends five credits where they change a decision and one credit everywhere else.
The short version
- Two questions, two prices. Metadata asks whether a number could ring; an HLR dip asks whether it does.
- The payload shows which you bought.
carrier_lookup,ported_statusandhlr_livenessmove intochecks.performedonly when the dip actually ran. reachableistrueonly on a CONNECTED answer. Anything less determinate returnsnullrather than a rounded verdict.- Abstentions are refunded. Five credits buys an answer, not an attempt — worth checking with every vendor you compare.
- Dip the segment, not the list. Filter, segment, then spend where being wrong is expensive.
- It is not a compliance layer. DNC and consent are separate steps, and this is not legal advice.