Sub-Accounts
Update a Subaccount
Update any fields on a Vobiz subaccount - rename it, toggle enabled status, adjust rate limits, or modify permissions. Unset fields remain unchanged.
PUT
/
api
/
v1
/
accounts
/
{auth_id}
/
sub-accounts
/
{sub_auth_id}
Update a sub-account
curl --request PUT \
--url https://api.vobiz.ai/api/v1/accounts/{auth_id}/sub-accounts/{sub_auth_id} \
--header 'Content-Type: application/json' \
--header 'X-Auth-ID: <api-key>' \
--header 'X-Auth-Token: <api-key>' \
--data '
{
"kyc_mode": "customer_use"
}
'import requests
url = "https://api.vobiz.ai/api/v1/accounts/{auth_id}/sub-accounts/{sub_auth_id}"
payload = { "kyc_mode": "customer_use" }
headers = {
"X-Auth-ID": "<api-key>",
"X-Auth-Token": "<api-key>",
"Content-Type": "application/json"
}
response = requests.put(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'PUT',
headers: {
'X-Auth-ID': '<api-key>',
'X-Auth-Token': '<api-key>',
'Content-Type': 'application/json'
},
body: JSON.stringify({kyc_mode: 'customer_use'})
};
fetch('https://api.vobiz.ai/api/v1/accounts/{auth_id}/sub-accounts/{sub_auth_id}', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));{
"name": "Acme Sub-Account Updated",
"email": null,
"phone": null,
"description": null,
"permissions": null,
"rate_limit": 1000,
"id": "500001",
"parent_account_id": "510762",
"parent_auth_id": "MA_XXXXXXXX",
"auth_id": "SA_XXXXXXXX",
"auth_token": "<redacted>",
"api_id": "aabbccdd-1234-5678-90ab-cdef12345678",
"email_verified": false,
"enabled": false,
"created": "2026-03-25",
"modified": "2026-03-25",
"is_active": true,
"created_at": "2026-03-25T10:00:00Z",
"updated_at": "2026-03-25T10:30:00Z",
"last_used": null,
"account": "/v1/Account/MA_XXXXXXXX/",
"resource_uri": "/v1/Account/MA_XXXXXXXX/Subaccount/SA_XXXXXXXX/"
}PUT https://api.vobiz.ai/api/v1/accounts/{auth_id}/sub-accounts/{sub_auth_id}
Authentication required:
X-Auth-ID- Your account Auth IDX-Auth-Token- Your account Auth TokenContent-Type: application/json
Use this endpoint to update sub-account settings such as description, rate limits, or permissions.
Parameters
| Field | Type | Required | Description |
|---|---|---|---|
name | string | No | Name of the sub-account. |
email | string | No | Email address associated with the subaccount. |
phone | string | No | Phone number associated with the subaccount. |
description | string | No | Description of the sub-account purpose or usage. |
rate_limit | integer | No | API rate limit for this sub-account (requests per time period). |
permissions | object | No | Permissions object defining what the sub-account can access. Contains boolean fields like calls and cdr. |
enabled | boolean | No | Whether the subaccount is active and enabled for use. |
kyc_mode | string | No | Change the verification mode: personal_use or customer_use. Promoting to customer_use requires the sub-account to already have an email. On any change, kyc_calls_blocked is re-derived from the sub-account’s current KYC state. |
Request
curl -X PUT 'https://api.vobiz.ai/api/v1/accounts/{auth_id}/sub-accounts/{sub_auth_id}' \
--header 'X-Auth-ID: {auth_id}' \
--header 'X-Auth-Token: {auth_token}' \
--header 'Content-Type: application/json' \
--data-raw '{
"description": "Updated permissions",
"rate_limit": 750,
"email": "updated@example.com",
"enabled": true,
"kyc_mode": "customer_use"
}'
{
"description": "Updated permissions",
"rate_limit": 750,
"email": "updated@example.com",
"enabled": true,
"kyc_mode": "customer_use"
}
Response Example
Success Response (200 OK)
{
"name": "Support Team",
"email": "updated@example.com",
"phone": "+1234567890",
"description": "Updated permissions",
"permissions": {
"calls": true,
"cdr": true
},
"rate_limit": 750,
"id": "500001",
"parent_account_id": "510762",
"parent_auth_id": "MA_XXXXXXXX",
"auth_id": "SA_XXXXXXXX",
"auth_token": "<redacted>",
"api_id": "aabbccdd-1234-5678-90ab-cdef12345678",
"email_verified": false,
"enabled": true,
"is_active": true,
"created": "2025-10-22T03:57:35.997500Z",
"modified": "2025-10-22T03:59:52.261439Z",
"created_at": "2025-10-22T03:57:35.997500Z",
"updated_at": "2025-10-22T03:59:52.261439Z",
"account": "/v1/Account/MA_XXXXXXXX/",
"resource_uri": "/v1/Account/MA_XXXXXXXX/Subaccount/SA_XXXXXXXX/",
"last_used": null
}
The response returns the full updated sub-account object. Notice the
updated_at timestamp has changed to reflect the modification.Changing kyc_mode
Promoting a sub-account from personal_use to customer_use requires it to already have an email - otherwise the call fails with 400. On any kyc_mode change, kyc_calls_blocked is re-derived from the sub-account’s current KYC state:
- Promote to
customer_useon a sub-account that has not completed its own KYC →kyc_calls_blockedbecomestrueand calls are blocked until it verifies. - Demote to
personal_use→ the sub-account inherits the parent’s KYC andkyc_calls_blockedbecomesfalse.
Promoting a live sub-account to
customer_use can immediately block its calls. Run KYC (or Test Mode) before flipping the mode on production traffic.Authorizations
Your Vobiz account Auth ID
Your Vobiz account Auth Token
Path Parameters
Your account Auth ID
Example:
"MA_XXXXXX"
Body
application/json
Response
200 - application/json
Sub-account updated
Was this page helpful?
⌘I
Update a sub-account
curl --request PUT \
--url https://api.vobiz.ai/api/v1/accounts/{auth_id}/sub-accounts/{sub_auth_id} \
--header 'Content-Type: application/json' \
--header 'X-Auth-ID: <api-key>' \
--header 'X-Auth-Token: <api-key>' \
--data '
{
"kyc_mode": "customer_use"
}
'import requests
url = "https://api.vobiz.ai/api/v1/accounts/{auth_id}/sub-accounts/{sub_auth_id}"
payload = { "kyc_mode": "customer_use" }
headers = {
"X-Auth-ID": "<api-key>",
"X-Auth-Token": "<api-key>",
"Content-Type": "application/json"
}
response = requests.put(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'PUT',
headers: {
'X-Auth-ID': '<api-key>',
'X-Auth-Token': '<api-key>',
'Content-Type': 'application/json'
},
body: JSON.stringify({kyc_mode: 'customer_use'})
};
fetch('https://api.vobiz.ai/api/v1/accounts/{auth_id}/sub-accounts/{sub_auth_id}', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));{
"name": "Acme Sub-Account Updated",
"email": null,
"phone": null,
"description": null,
"permissions": null,
"rate_limit": 1000,
"id": "500001",
"parent_account_id": "510762",
"parent_auth_id": "MA_XXXXXXXX",
"auth_id": "SA_XXXXXXXX",
"auth_token": "<redacted>",
"api_id": "aabbccdd-1234-5678-90ab-cdef12345678",
"email_verified": false,
"enabled": false,
"created": "2026-03-25",
"modified": "2026-03-25",
"is_active": true,
"created_at": "2026-03-25T10:00:00Z",
"updated_at": "2026-03-25T10:30:00Z",
"last_used": null,
"account": "/v1/Account/MA_XXXXXXXX/",
"resource_uri": "/v1/Account/MA_XXXXXXXX/Subaccount/SA_XXXXXXXX/"
}