Checking whether a phone number is valid and finding its carrier are different jobs. I split carrier lookup into its own endpoint because putting it behind ?deep=true made that distinction harder to explain.
GET /carrier/+14155552671
X-API-Version: 2.1.0
In API 2.1.0, /carrier returns the complete carrier result, including the carrier name, line type, burner flag and available city information. /phone handles validation, formatting, and information from the numbering plan. You choose the endpoint based on the answer you need.
The same choice should make sense before you ever write a request. Someone searching for carrier lookup should land on a page about carrier lookup, with the price and an example in front of them. They should not have to work out which part of a phone API page applies to them.
Email verification is explicit too
An email address can have valid syntax and still fail a delivery check. In API 2.1.0, mailbox verification uses POST /email/verify with the email in the JSON body. It returns the basic validation fields alongside the mailbox result and uses the Email verification allowance. A basic Email lookup does not start that operation.
Carrier lookup has its own monthly allowance, and each valid-number lookup that returns a result counts against it, including cached results. The move changed the URL, while keeping the included-usage and on-demand billing model.
Caller ID and live status follow the same arrangement at /caller and /hlr. Each has its own allowance and a page that explains the check. The /carrier page is where to start if the carrier is what you came for.