Create a Subaccount

In this code snippet you will see how to create a subaccount.

Example

Ensure the following variables are set to your required values using any convenient method:

Key Description
VONAGE_API_KEY The API key of the parent account.
VONAGE_API_SECRET The API secret of the parent account.
NEW_SUBACCOUNT_NAME The name of the new subaccount.
NEW_SUBACCOUNT_SECRET The API secret of the new subaccount.

Write the code

Add the following to create-subaccount.sh:

curl -X "POST" "https://api.nexmo.com/accounts/$VONAGE_API_KEY/subaccounts" -u $VONAGE_API_KEY:$VONAGE_API_SECRET   \
     -H "Content-Type: application/json"  \
     -d $'{"name":"'$NEW_SUBACCOUNT_NAME'", "secret":"'$NEW_SUBACCOUNT_SECRET'"}'

View full source

Run your code

Save this file to your machine and run it:

bash create-subaccount.sh

Prerequisites

npm install @vonage/subaccounts

Create a file named create-subaccount.js and add the following code:

const { SubAccounts } = require('@vonage/subaccounts');

const subAccountClient = new SubAccounts({
  apiKey: VONAGE_API_KEY,
  apiSecret: VONAGE_API_SECRET,
});

View full source

Write the code

Add the following to create-subaccount.js:

subAccountClient.createSubAccount({
  name: NEW_SUBACCOUNT_NAME,
  secret: NEW_SUBACCOUNT_SECRET,
})
  .then((newSubAccount) => console.log(newSubAccount))
  .catch((error) => console.error(error));

View full source

Run your code

Save this file to your machine and run it:

node create-subaccount.js

Prerequisites

Add the following to build.gradle:

implementation 'com.vonage:server-sdk-kotlin:2.1.1'

Create a file named CreateSubaccount and add the following code to the main method:

val client = Vonage {
    apiKey(VONAGE_API_KEY)
    apiSecret(VONAGE_API_SECRET)
}

View full source

Write the code

Add the following to the main method of the CreateSubaccount file:

val subaccount = client.subaccounts.createSubaccount(
    name = SUBACCOUNT_NAME,
    secret = SUBACCOUNT_SECRET
)

View full source

Run your code

We can use the application plugin for Gradle to simplify the running of our application. Update your build.gradle with the following:

apply plugin: 'application'
mainClassName = project.hasProperty('main') ? project.getProperty('main') : ''

Run the following gradle command to execute your application, replacing com.vonage.quickstart.kt.subaccounts with the package containing CreateSubaccount:

gradle run -Pmain=com.vonage.quickstart.kt.subaccounts.CreateSubaccount

Prerequisites

Add the following to build.gradle:

implementation 'com.vonage:server-sdk:9.3.1'

Create a file named CreateSubaccount and add the following code to the main method:

VonageClient client = VonageClient.builder()
		.apiKey(VONAGE_API_KEY)
		.apiSecret(VONAGE_API_SECRET)
		.build();

View full source

Write the code

Add the following to the main method of the CreateSubaccount file:

Account subaccount = client.getSubaccountsClient().createSubaccount(
		CreateSubaccountRequest.builder()
			.name(SUBACCOUNT_NAME)
			.secret(SUBACCOUNT_SECRET)
			.build()
);

View full source

Run your code

We can use the application plugin for Gradle to simplify the running of our application. Update your build.gradle with the following:

apply plugin: 'application'
mainClassName = project.hasProperty('main') ? project.getProperty('main') : ''

Run the following gradle command to execute your application, replacing com.vonage.quickstart.subaccounts with the package containing CreateSubaccount:

gradle run -Pmain=com.vonage.quickstart.subaccounts.CreateSubaccount

Prerequisites

Install-Package Vonage

Create a file named CreateSubAccountRequest.cs and add the following code:

using Vonage;
using Vonage.Request;

View full source

Add the following to CreateSubAccountRequest.cs:

var credentials = Credentials.FromApiKeyAndSecret(VONAGE_API_KEY, VONAGE_API_SECRET);
var client = new VonageClient(credentials);

View full source

Write the code

Add the following to CreateSubAccountRequest.cs:

var request = Vonage.SubAccounts.CreateSubAccount.CreateSubAccountRequest.Build()
    .WithName(NEW_SUBACCOUNT_NAME)
    .WithSecret(NEW_SUBACCOUNT_SECRET)
    .Create();
var response = await client.SubAccountsClient.CreateSubAccountAsync(request);

View full source

Prerequisites

composer require vonage/client

Create a file named create-subaccount.php and add the following code:


$basic = new \Vonage\Client\Credentials\Basic(VONAGE_API_KEY, VONAGE_API_SECRET);
$client = new \Vonage\Client($basic);

View full source

Write the code

Add the following to create-subaccount.php:

$account = new \Vonage\Subaccount\SubaccountObjects\Account();
$account->setName(NEW_SUBACCOUNT_NAME);
$account->setSecret(NEW_SUBACCOUNT_SECRET);

$client->subaccount()->createSubaccount(VONAGE_API_KEY, $account);

View full source

Run your code

Save this file to your machine and run it:

php create-subaccount.php

Prerequisites

pip install vonage python-dotenv

Write the code

Add the following to create-subaccount.py:

from vonage import Auth, Vonage
from vonage_subaccounts import NewSubaccount, SubaccountOptions

client = Vonage(Auth(api_key=VONAGE_API_KEY, api_secret=VONAGE_API_SECRET))

response: NewSubaccount = client.subaccounts.create_subaccount(
    SubaccountOptions(name=SUBACCOUNT_NAME, secret=SUBACCOUNT_SECRET)
)

print(response)

View full source

Run your code

Save this file to your machine and run it:

python subaccounts/create-subaccount.py

Prerequisites

gem install vonage

Create a file named create-subaccount.rb and add the following code:

client = Vonage::Client.new(
  api_key: VONAGE_API_KEY,
  api_secret: VONAGE_API_SECRET
)

View full source

Write the code

Add the following to create-subaccount.rb:

client.subaccounts.create(
  name: NEW_SUBACCOUNT_NAME,
  secret: NEW_SUBACCOUNT_SECRET
)

View full source

Run your code

Save this file to your machine and run it:

ruby create-subaccount.rb

Try it out

When you run the code you create a new subaccount of the parent account.

NOTE: This code snippet will create a subaccount that has a credit and balance facility shared with the parent account. If you want to create a subaccount that does not have a credit and balance shared with the parent then you need to set use_primary_account_balance to false when you create the subaccount.