# Rent and configure your virtual number using Node.js SDK After searching for a number, rent and configure that number for SMS, Voice or both. Note: Before you can get started, you need the following already set up: - - [NPM](https://www.npmjs.com/) and a familiarity with how to install packages. - [Node.js](https://nodejs.org/en/) and a familiarity with how to create a new app. - A virtual number you have [confirmed to be available](/docs/numbers/getting-started/node-sdk/searchavailable). Steps: 1. [Set up](#set-up-your-nodejs-application) your Node.js application 2. [Rent and configure your number](#rent-and-configure-your-number) for SMS. ## Set up your Node.js application To quickly get started setting up a simple client application using the Node SDK: 1. If you haven't already, clone the [sinch-sdk-node-quickstart](https://github.com/sinch/sinch-sdk-node-quickstart) repository. 2. Navigate to the `templates/client` folder. 3. Open a command prompt or terminal and run the following command to install the necessary dependencies: ```shell npm install ``` 4. Open the `.env` [file](https://github.com/sinch/sinch-sdk-node-quickstart/blob/main/templates/client/.env). Using the [access key credentials](https://dashboard.sinch.com/settings/access-keys) from your Sinch Build Dashboard, populate the following fields with your values: | Field | Description | | --- | --- | | SINCH_PROJECT_ID | The unique ID of your Project. | | SINCH_KEY_ID | The unique ID of your access key. | | SINCH_KEY_SECRET | The secret that goes with your access key. **Note:** For security reasons, this secret is only visible right after access key creation. | If you're sending SMS messages, ensure you set your region in the `SMS_REGION` field. 5. Save the file. ### Modify your application 1. Navigate to the `/templates/client/src/numbers/` folder and open the `snippet.js` file. Replace the existing content within that file with the `snippet.js` code provided on this page. That code is also found [here](https://github.com/sinch/sinch-sdk-node-snippets/blob/main/snippets/numbers/available-numbers/rent/snippet.js) if you want to just replace the file. snippet.js //This code rents and configures a specific virtual number. // eslint-disable-next-line no-unused-vars import { Numbers, NumbersService } from '@sinch/sdk-core'; /** @param {NumbersService} numbersService */ export const execute = async (numbersService) => { // Available numbers list can be retrieved by using list() function from available service, see: // https://developers.sinch.com/docs/numbers/getting-started/node-sdk/searchavailable/ const phoneNumber = 'available_phone_number_to_be_rented'; const servicePlanId = 'YOUR_service_plan_id'; /** @type {Numbers.RentNumberRequestData} */ const requestData = { phoneNumber, rentNumberRequestBody: { smsConfiguration: { servicePlanId, }, }, }; const response = await numbersService.availableNumber.rent(requestData); console.log(`Rented number:\n${JSON.stringify(response, null, 2)}`); }; 1. The code provided in **snippet.js** includes default parameters. If you want, you can replace the following values for these parameters with your own values: | Parameter | Your value | | --- | --- | | `servicePlanId` | Your [SMS service plan ID](https://dashboard.sinch.com/sms/api/rest). This is only required for SMS configuration. | | `phoneNumber` | The virtual phone number that you previously searched for and would like to rent. | 1. Save the file. ### Rent and configure your number Now you can execute the code. Run the following command: ```shell node src/app.js ``` #### Response You should get a response similar to this one: ```json { "phoneNumber": "+12025550134", "projectId": "51bc3f40-f266-4ca8-8938-a1ed0ff32b9a", "displayName": "string", "regionCode": "US", "type": "MOBILE", "capability": [ "SMS" ], "money": { "currencyCode": "USD", "amount": "2.00" }, "paymentIntervalMonths": 0, "nextChargeDate": "2019-08-24T14:15:22Z", "expireAt": "2019-08-24T14:15:22Z", "smsConfiguration": { "servicePlanId": "82b42acf74924bd687ef9fb212f2060c", "scheduledProvisioning": { "servicePlanId": "82b42acf74924bd687ef9fb212f20611", "status": "WAITING", "lastUpdatedTime": "2019-08-24T14:15:22Z", "campaignId": "string", "errorCodes": [ "INTERNAL_ERROR" ] }, "campaignId": "string" }, "voiceConfiguration": { "appId": "string", "scheduledVoiceProvisioning": { "appId": "string", "status": "WAITING", "lastUpdatedTime": "2019-08-24T14:15:22Z" }, "lastUpdatedTime": "2019-08-24T14:15:22Z" } } ``` ## Next steps Send a message to yourself using the SMS API to verify that the configuration was successful. - [Send an SMS message](/docs/sms/getting-started). ## Additional resources - Explore the [API specification](/docs/numbers/api-reference/numbers) to test more endpoints. - Follow the number rental process [in the Sinch Build Dashboard](https://dashboard.sinch.com/numbers/buy-numbers) UI rather than through this API.