An unassigned block is a range of numbers that a regulator's published allocation table shows as belonging to no operator — free, protected or quarantined. No carrier holds it, so no subscriber can be reached on a number inside it.
What Spaw answers
block_status is unassigned and the reason is unassigned_block. The number is well-formed; it simply cannot be in service. A block the table marks reserved is a different answer: the number stays valid and the reserved_block signal carries the risk, while an allocated block held by a virtual-number wholesaler raises virtual.
One exception: a number in a range reserved for fiction, such as Ofcom's drama ranges, answers valid true with is_fictional true even where the regulator's table lists its block as protected, because the range exists to be printed rather than dialled. Its block_status still says unassigned, and the fictional signal carries the risk.
The gate on inferring it
A number's absence from a table is only evidence when the table claims to be complete. Five of the ten regulators' tables installed here do: the two North American allocation files list every assigned code, as do the French, Dutch and Mexican ones, so a geographic number missing from those can be reported unassigned. The UK's tables list free, protected and quarantined ranges explicitly and are never inferred from — an absent UK range answers null rather than a guess, and the Australian and New Zealand tables are read the same cautious way. The Polish tables are not complete either (they leave every zone's AB0 range and two whole zones out), but they list the space the regulator holds in reserve row by row, so a Polish number in a reserve answers unassigned from the row itself, never from absence; the Italian workbook lists assignments only and is never inferred from. Inside a pooled US code, NANPA's thousands-block report lists each block of a thousand, so a block it shows as available answers unassigned from its own row; one still partly in use by its former holder, or available only from a future date, does not.
There is a second gate. A table that has not been synced inside its freshness window is not allowed to infer anything either, because a stale copy is exactly how a newly-allocated block gets reported as dead.
Where no table covers the region, block_status is null. Null here means "not evaluated", never "no". Which table covers a country, and whether it claims to be complete, is on that country's page under phone facts by country.