> Fetch clean Markdown by appending `.md` to any page URL under https://signalwire.com/docs or requesting it with the HTTP header `Accept: text/markdown`. The root index at https://signalwire.com/docs/llms.txt lists the available documentation indexes. # Search for available phone numbers that match your criteria. GET https://YOUR_SPACE.signalwire.com/api/laml/2010-04-01/Accounts/{AccountSid}/AvailablePhoneNumbers/{IsoCountry}/Local Searches SignalWire inventory for local phone numbers available in one ISO country. Results are candidates, not project resources, until purchased through Incoming Phone Numbers or the native purchase operation. Use the [toll-free search](/docs/compatibility-api/rest/available-phone-numbers/search-toll-free-available-phone-numbers) for toll-free inventory, or native [Search phone numbers](/docs/apis/rest/phone-numbers/search-available-phone-numbers) for the JSON API. #### Permissions The API token used to authenticate must have the following scope(s) enabled to make a successful request: _Numbers_. [Learn more about API scopes](/docs/platform/your-signalwire-api-space). Reference: https://signalwire.com/docs/compatibility-api/rest/available-phone-numbers/search-local-available-phone-numbers ## Authentication - `Authorization` header (basic auth, required) — SignalWire Basic Authentication using Project ID and API Token. The client sends HTTP requests with the Authorization header containing the word Basic followed by a space and a base64-encoded string of project_id:token. The project ID will be used as the username and the API token as the password. Example: ``` Authorization: Basic base64(project_id:token) ``` ## Request ### Path parameters - `AccountSid` (string, required) — The Project ID that uniquely identifies the Account to retrieve. - `IsoCountry` (string, required) — The ISO country code of the number. ### Query parameters - `AreaCode` (string, optional) — Find numbers in the provided area code. Only available for numbers in US and Canada. - `Beta` (boolean, optional) — New numbers on SignalWire are marked as `beta`. - `Contains` (string, optional) — Find numbers based off of a pattern. Valid characters are `[0-9a-zA-Z]`. - `ExcludeAllAddressRequired` (boolean, optional) — Accepted but has no effect on the response. - `ExcludeForeignAddressRequired` (boolean, optional) — Accepted but has no effect on the response. - `ExcludeLocalAddressRequired` (boolean, optional) — Accepted but has no effect on the response. - `FaxEnabled` (boolean, optional) — Accepted but not supported; has no effect on the response. - `InLocality` (string, optional) — Limits search to a city/locality. Requires InRegion to also be set. - `InRegion` (string, optional) — Limits search to same region as number. Must be a two-letter state/province code. - `MmsEnabled` (boolean, optional) — Accepted but not supported; has no effect on the response. - `SmsEnabled` (boolean, optional) — Accepted but not supported; has no effect on the response. - `VoiceEnabled` (boolean, optional) — Accepted but not supported; has no effect on the response. ## Response ### 200 The request has succeeded. - `uri` (string, required) — The URI for the API call. - `available_phone_numbers` (list of AvailablePhoneNumber, required) — List of available phone numbers. ## Errors ### 400 Bad Request Error The request was invalid or cannot be processed. Check the error details for more information. - `code` (integer, required) — Error code. - `message` (string, required) — Error message. - `more_info` (string, required) — URL for more information about the error. - `status` (integer, required) — HTTP status code. ### 401 Unauthorized Error Authentication failed. Please verify your credentials and try again. - `code` (integer, required) — Error code. - `message` (string, required) — Error message. - `more_info` (string, required) — URL for more information about the error. - `status` (integer, required) — HTTP status code. ### 422 Unprocessable Entity Error The request could not be processed due to validation errors. Check the error details for more information. - `code` (integer, required) — Error code. - `message` (string, required) — Error message. - `more_info` (string, required) — URL for more information about the error. - `status` (integer, required) — HTTP status code. ## Types ### AvailablePhoneNumber Available phone number model. - `friendly_name` (string, required) — A formatted version of the number. - `phone_number` (string, required) — The number in E.164 format. - `lata` (string, required, nullable) — The LATA of the number. Always null. - `locality` (string, required, nullable) — The locality/city of the number. Always null. - `rate_center` (string, required, nullable) — The rate center of the number. Only available for numbers in US and Canada. - `latitude` (string, required, nullable) — The latitude of the number. Always null. - `longitude` (string, required, nullable) — The longitude of the number. Always null. - `region` (string, required, nullable) — The state or province abbreviation of the number. Only available for numbers in US and Canada. - `postal_code` (string, required, nullable) — The postal/zip code of the number. Always null. - `iso_country` (string, required) — The ISO country code of the number. - `capabilities` (PhoneNumberCapabilities, required) — Whether or not a number can receive calls and messages. - `beta` (boolean, required) — Always `false`. Retained for response-shape compatibility. ### PhoneNumberCapabilities Phone number capabilities. - `voice` (boolean, required) — Whether or not voice is enabled on the number. - `SMS` (boolean, required) — Whether or not SMS is enabled on the number. - `MMS` (boolean, required) — Whether or not MMS is enabled on the number. ## Examples **Response** ```json { "uri": "/api/laml/2010-04-01/Accounts/b3877c40-da60-4998-90ad-b792e98472af/AvailablePhoneNumbers/US/Local", "available_phone_numbers": [ { "friendly_name": "(253) 218-6751", "phone_number": "+12532186751", "lata": null, "locality": null, "rate_center": "AUBURN", "latitude": null, "longitude": null, "region": "WA", "postal_code": null, "iso_country": "US", "capabilities": { "voice": true, "SMS": true, "MMS": true }, "beta": false } ] } ``` **SDK Code** ```python import requests url = "https://your_space.signalwire.com/api/laml/2010-04-01/Accounts/AccountSid/AvailablePhoneNumbers/IsoCountry/Local" response = requests.get(url, auth=("", "")) print(response.json()) ``` ```javascript const url = 'https://your_space.signalwire.com/api/laml/2010-04-01/Accounts/AccountSid/AvailablePhoneNumbers/IsoCountry/Local'; const credentials = btoa(":"); const options = {method: 'GET', headers: {Authorization: `Basic ${credentials}`}}; try { const response = await fetch(url, options); const data = await response.json(); console.log(data); } catch (error) { console.error(error); } ``` ```go package main import ( "fmt" "net/http" "io" ) func main() { url := "https://your_space.signalwire.com/api/laml/2010-04-01/Accounts/AccountSid/AvailablePhoneNumbers/IsoCountry/Local" req, _ := http.NewRequest("GET", url, nil) req.SetBasicAuth("", "") res, _ := http.DefaultClient.Do(req) defer res.Body.Close() body, _ := io.ReadAll(res.Body) fmt.Println(res) fmt.Println(string(body)) } ``` ```ruby require 'uri' require 'net/http' url = URI("https://your_space.signalwire.com/api/laml/2010-04-01/Accounts/AccountSid/AvailablePhoneNumbers/IsoCountry/Local") http = Net::HTTP.new(url.host, url.port) http.use_ssl = true request = Net::HTTP::Get.new(url) request.basic_auth("", "") response = http.request(request) puts response.read_body ``` ```java import com.mashape.unirest.http.HttpResponse; import com.mashape.unirest.http.Unirest; HttpResponse response = Unirest.get("https://your_space.signalwire.com/api/laml/2010-04-01/Accounts/AccountSid/AvailablePhoneNumbers/IsoCountry/Local") .basicAuth("", "") .asString(); ``` ```php request('GET', 'https://your_space.signalwire.com/api/laml/2010-04-01/Accounts/AccountSid/AvailablePhoneNumbers/IsoCountry/Local', [ 'headers' => [ ], 'auth' => ['', ''], ]); echo $response->getBody(); ``` ```csharp using RestSharp; using RestSharp.Authenticators; var client = new RestClient("https://your_space.signalwire.com/api/laml/2010-04-01/Accounts/AccountSid/AvailablePhoneNumbers/IsoCountry/Local"); client.Authenticator = new HttpBasicAuthenticator("", ""); var request = new RestRequest(Method.GET); IRestResponse response = client.Execute(request); ``` ```swift import Foundation let credentials = Data(":".utf8).base64EncodedString() let headers = ["Authorization": "Basic \(credentials)"] let request = NSMutableURLRequest(url: NSURL(string: "https://your_space.signalwire.com/api/laml/2010-04-01/Accounts/AccountSid/AvailablePhoneNumbers/IsoCountry/Local")! as URL, cachePolicy: .useProtocolCachePolicy, timeoutInterval: 10.0) request.httpMethod = "GET" request.allHTTPHeaderFields = headers let session = URLSession.shared let dataTask = session.dataTask(with: request as URLRequest, completionHandler: { (data, response, error) -> Void in if (error != nil) { print(error as Any) } else { let httpResponse = response as? HTTPURLResponse print(httpResponse) } }) dataTask.resume() ```