MCP is live.Set upAsk on Discord
OmniDimension
Phone numbers

Search available phone numbers

Search the OmniDimension number shop for phone numbers available to buy in a region. Price and validity are flat per region, so every result shows the same monthly_rental_usd and validity_days, and that is the exact amount a purchase will charge.

GET/phone_number/search
Query parameters
regionstring · enumrequired

Region to search in. IN and US both serve numbers. Which regions answer is configuration, so a region with no carrier enabled returns 404 not_available rather than an empty list.

carrierstringrequired

Which carrier's stock to search: carriers in a region do not sell the same numbers. Always required, even where a region holds one, and omitting it returns 409 carrier_required naming that region's carriers and what each one stocks.

patternstring

Digits or prefix to match within the number.

pageinteger

Page of results to return.

limitinteger

Results per page.

user_idinteger

Reseller accounts only: the client to act on. Omit it to act on your own account.

curl -X GET 'https://backend.omnidim.io/api/v1/phone_number/search?region=IN&carrier=carrier-1&pattern=555&page=1&limit=20' \
  -H 'Authorization: Bearer YOUR_API_KEY'
Example response
{
  "success": true,
  "region": "IN",
  "carrier": "carrier-1",
  "carrier_label": "Carrier 1",
  "numbers": [
    {
      "phone_number": "+918000000001",
      "monthly_rental_usd": 5.06,
      "validity_days": 30,
      "region": "IN",
      "kyc_required": true
    }
  ],
  "total": 1,
  "page": 1,
  "limit": 20,
  "total_pages": 1
}

Authorization

BearerAuth
AuthorizationBearer <token>

Bearer token authentication. Obtain your API key from the OmniDimension dashboard.

In: header

Query Parameters

region*string

Region to search in. IN and US both serve numbers. Which regions answer is configuration, so a region with no carrier enabled returns 404 not_available rather than an empty list.

Value in"IN" | "US"
carrier*string

Which carrier's stock to search: carriers in a region do not sell the same numbers. Always required, even where a region holds one, and omitting it returns 409 carrier_required naming that region's carriers and what each one stocks.

pattern?string

Digits or prefix to match within the number.

page?integer

Page of results to return.

Default1
Range1 <= value
limit?integer

Results per page.

Default20
Range1 <= value <= 150
user_id?integer

Reseller accounts only: the client to act on. Omit it to act on your own account.

Response body

application/json

Response Body

application/json

application/json

application/json

application/json

application/json

application/json

The one whose stock you want, because carriers do not sell the same numbers. carrier is always required.

RegioncarrierStocks
INcarrier-1Landline numbers, city codes 11, 12 and 80
INcarrier-2-newMobile numbers, 94 and 79 series
UScarrier-usUS local numbers, by area code

You do not have to hard-code that table. Call without a carrier and the 409 carrier_required response lists the carriers for that region with what each one stocks, which is how an integration discovers a carrier we add later without a release of its own.

The response names the carrier its results came from, and that is the carrier a purchase has to pass. Verification is per carrier too, so a client must be verified on the carrier it is buying from: see KYC status.

Searching does not reserve anything. A number is claimed only when a purchase starts, so a number you saw a moment ago can be gone by the time you buy it.

Next step: purchase a number, or read the flow end to end in Buy a number over the API.