# Search for available Phone Numbers to Purchase GET https://YOUR_SPACE.signalwire.com/api/relay/rest/phone_numbers/search Searches for available phone numbers to purchase. #### 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/apis/relay-rest/phone-numbers/search-available-phone-numbers ## OpenAPI Specification ```yaml openapi: 3.1.0 info: title: relay-rest version: 1.0.0 paths: /phone_numbers/search: get: operationId: search-available-phone-numbers summary: Search for available Phone Numbers to Purchase description: >- Searches for available phone numbers to purchase. #### 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). tags: - subpackage_phoneNumbers parameters: - name: areacode in: query description: An areacode to search within. required: false schema: type: string - name: number_type in: query description: Search for either local or toll-free numbers. Defaults to local. required: false schema: type: string - name: starts_with in: query description: >- A string of 3 to 7 digits that should be used as the start of a number. Cannot be used in combination with contains or ends_with. required: false schema: type: string - name: contains in: query description: >- A string of 3 to 7 digits that should appear somewhere in the number. Cannot be used in combination with starts_with or ends_with. required: false schema: type: string - name: ends_with in: query description: >- A string of 3 to 7 digits that should be used as the end of a number. Cannot be used in combination with starts_with or contains. required: false schema: type: string - name: max_results in: query description: >- The maximum number of matches to return. Upper limit of 100. Defaults to 50. required: false schema: type: integer - name: region in: query description: >- A region or state to search within. Must be an ISO 3166-2 alpha-2 code, i.e. TX for Texas. Cannot be used in combination with areacode. required: false schema: type: string - name: city in: query description: >- A specific City to search within. Must be used in combination with region. Cannot be used in combination with areacode, starts_with, contains, or ends_with. required: false schema: type: string - name: Authorization in: header description: >- 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) ``` required: true schema: type: string responses: '200': description: The request has succeeded. content: application/json: schema: $ref: '#/components/schemas/AvailablePhoneNumbersResponse' '401': description: Access is unauthorized. content: application/json: schema: $ref: '#/components/schemas/Types.StatusCodes.StatusCode401' '500': description: An internal server error occurred. content: application/json: schema: $ref: '#/components/schemas/Types.StatusCodes.StatusCode500' servers: - url: https://YOUR_SPACE.signalwire.com/api/relay/rest components: schemas: PaginationLinks: type: object properties: self: type: string description: Link to the current page. first: type: string description: Link to the first page. next: type: string description: Link to the next page. Only present when there are more results. prev: type: string description: Link to the previous page. Only present when not on the first page. required: - self - first description: Pagination links for list responses. title: PaginationLinks PhoneNumberCapabilities: type: object properties: voice: type: boolean description: Whether the phone number can receive voice calls. sms: type: boolean description: Whether the phone number can send/receive SMS. mms: type: boolean description: Whether the phone number can send/receive MMS. fax: type: boolean description: Whether the phone number can send/receive fax. description: Phone number capabilities. title: PhoneNumberCapabilities AvailablePhoneNumber: type: object properties: number: type: string description: The phone number in E.164 format. region: type: string description: The region of the phone number. city: type: string description: The city of the phone number. rate_center: type: string description: The rate center of the phone number. lata: type: string description: The LATA of the phone number. capabilities: $ref: '#/components/schemas/PhoneNumberCapabilities' description: The capabilities of the phone number. required: - number description: Available phone number for purchase. title: AvailablePhoneNumber AvailablePhoneNumbersResponse: type: object properties: links: $ref: '#/components/schemas/PaginationLinks' description: Pagination links. data: type: array items: $ref: '#/components/schemas/AvailablePhoneNumber' description: List of available phone numbers. description: Response containing available phone numbers for purchase. title: AvailablePhoneNumbersResponse TypesStatusCodesStatusCode401Error: type: string enum: - Unauthorized title: TypesStatusCodesStatusCode401Error Types.StatusCodes.StatusCode401: type: object properties: error: $ref: '#/components/schemas/TypesStatusCodesStatusCode401Error' required: - error description: Access is unauthorized. title: Types.StatusCodes.StatusCode401 TypesStatusCodesStatusCode500Error: type: string enum: - Internal Server Error title: TypesStatusCodesStatusCode500Error Types.StatusCodes.StatusCode500: type: object properties: error: $ref: '#/components/schemas/TypesStatusCodesStatusCode500Error' required: - error description: An internal server error occurred. title: Types.StatusCodes.StatusCode500 securitySchemes: SignalWireBasicAuth: type: http scheme: basic description: >- 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) ``` ``` ## SDK Code Examples ```python import requests url = "https://your_space.signalwire.com/api/relay/rest/phone_numbers/search" headers = {"Authorization": "Basic :"} response = requests.get(url, headers=headers) print(response.json()) ``` ```javascript const url = 'https://your_space.signalwire.com/api/relay/rest/phone_numbers/search'; const options = {method: 'GET', headers: {Authorization: 'Basic :'}}; 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/relay/rest/phone_numbers/search" req, _ := http.NewRequest("GET", url, nil) req.Header.Add("Authorization", "Basic :") 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/relay/rest/phone_numbers/search") http = Net::HTTP.new(url.host, url.port) http.use_ssl = true request = Net::HTTP::Get.new(url) request["Authorization"] = 'Basic :' 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/relay/rest/phone_numbers/search") .header("Authorization", "Basic :") .asString(); ``` ```php request('GET', 'https://your_space.signalwire.com/api/relay/rest/phone_numbers/search', [ 'headers' => [ 'Authorization' => 'Basic :', ], ]); echo $response->getBody(); ``` ```csharp using RestSharp; var client = new RestClient("https://your_space.signalwire.com/api/relay/rest/phone_numbers/search"); var request = new RestRequest(Method.GET); request.AddHeader("Authorization", "Basic :"); IRestResponse response = client.Execute(request); ``` ```swift import Foundation let headers = ["Authorization": "Basic :"] let request = NSMutableURLRequest(url: NSURL(string: "https://your_space.signalwire.com/api/relay/rest/phone_numbers/search")! 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() ```