Company
The company record holds the organisation's name, contact details, and billing details.
Retrieve the company returns the record your account is linked to. Update the company writes to the record your account owns, creating it if needed, and links your account to it. For the first administrator, whose record is created during first-run setup, these are the same record. An administrator whose account is not linked to a record receives an empty object until they save one.
Reading or changing the company record returns 402 while the installation's licence is restricted, as it is once a licence expires.
Administrator access. Every endpoint on this page requires an administrator account.
Paths are relative to /api
The company object
Attributes
-
idintegerUnique identifier of the company record.
-
company_namestringThe company's name.
-
company_emailnullable stringThe company's contact email address.
-
websitenullable stringThe company's website.
-
company_sizenullable stringThe company's size band.
-
industrynullable stringThe company's industry.
-
countrynullable stringThe company's country.
-
citynullable stringThe company's city.
-
statenullable stringThe company's state or region.
-
billing_namenullable stringName to bill.
-
billing_addressnullable stringBilling address.
-
billing_countrynullable stringBilling country.
-
billing_citynullable stringBilling city.
-
billing_statenullable stringBilling state or region.
-
billing_postal_codenullable stringBilling postal code.
-
vat_numbernullable stringVAT number.
-
team_membersnullable array of objectsTeam member list stored with the record, or
nullwhen none is stored. -
created_atstringWhen the record was created, as an HTTP date such as
Tue, 01 Sep 2026 09:30:00 GMT. -
updated_atstringWhen the record was last changed, as an HTTP date.
{
"id": 1,
"company_name": "Contoso Ltd",
"company_email": "info@example.com",
"website": "https://www.example.com",
"company_size": "201-500",
"industry": "Manufacturing",
"country": "United Kingdom",
"city": "London",
"state": null,
"billing_name": "Contoso Ltd",
"billing_address": "1 Example Way",
"billing_country": "United Kingdom",
"billing_city": "London",
"billing_state": null,
"billing_postal_code": "EC1A 1BB",
"vat_number": "GB123456789",
"team_members": null,
"created_at": "Tue, 01 Sep 2026 09:30:00 GMT",
"updated_at": "Fri, 11 Sep 2026 08:30:00 GMT"
} Retrieve the company
GET /api/admin/company
Returns the company record your account is linked to, or an empty object in data when there is none.
- Authentication
- Bearer token How it works
- Permission
- Requires an administrator account.
Parameters
No parameters.
Returns
Returns the company object in data, or an empty object.
Errors
- 403 The caller is not an administrator.
curl "$VDF_BASE_URL/api/admin/company" \
-H "Authorization: Bearer $VDF_ACCESS_TOKEN" const response = await fetch(`${process.env.VDF_BASE_URL}/api/admin/company`, {
headers: {
Authorization: `Bearer ${process.env.VDF_ACCESS_TOKEN}`,
},
});
if (!response.ok) throw new Error(`Request failed with status ${response.status}`);
const data = await response.json(); import os
import requests
response = requests.get(
f"{os.environ['VDF_BASE_URL']}/api/admin/company",
headers={"Authorization": f"Bearer {os.environ['VDF_ACCESS_TOKEN']}"},
timeout=30,
)
response.raise_for_status()
data = response.json() {
"success": true,
"data": {
"id": 1,
"company_name": "Contoso Ltd",
"company_email": "info@example.com",
"website": "https://www.example.com",
"company_size": "201-500",
"industry": "Manufacturing",
"country": "United Kingdom",
"city": "London",
"state": null,
"billing_name": "Contoso Ltd",
"billing_address": "1 Example Way",
"billing_country": "United Kingdom",
"billing_city": "London",
"billing_state": null,
"billing_postal_code": "EC1A 1BB",
"vat_number": "GB123456789",
"team_members": null,
"created_at": "Tue, 01 Sep 2026 09:30:00 GMT",
"updated_at": "Fri, 11 Sep 2026 08:30:00 GMT"
}
} Update the company
PUT /api/admin/company
Creates or updates the company record owned by your account.
Saves company and billing details on the record your account owns, creating it if needed, and links your account to that record.
Only the fields you send are changed. Omitted fields, null values, and empty strings keep their current values, so a field can't be cleared through this endpoint. Text values are trimmed. company.name is required on every request.
- Authentication
- Bearer token How it works
- Permission
- Requires an administrator account.
Body parameters application/json
-
companyobject RequiredCompany details.
Show child parameters Hide child parameters
-
namestring RequiredThe company's name.
-
emailstringThe company's contact email address.
-
websitestringThe company's website.
-
company_sizestringThe company's size band, such as
201-500. -
industrystringThe company's industry.
-
countrystringThe company's country.
-
citystringThe company's city.
-
statestringThe company's state or region.
-
-
billingobjectBilling details.
Show child parameters Hide child parameters
-
namestringName to bill.
-
addressstringBilling address.
-
countrystringBilling country.
-
citystringBilling city.
-
statestringBilling state or region.
-
postalCodestringBilling postal code.
-
vatNumberstringVAT number.
-
Returns
Returns the saved company object in data.
Errors
- 403 The caller is not an administrator.
- 500
company.nameis missing or blank, or the record could not be saved.
curl -X PUT "$VDF_BASE_URL/api/admin/company" \
-H "Authorization: Bearer $VDF_ACCESS_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"company": {
"name": "Contoso Ltd",
"email": "info@example.com",
"industry": "Manufacturing"
},
"billing": {
"address": "1 Example Way",
"postalCode": "EC1A 1BB",
"vatNumber": "GB123456789"
}
}' const response = await fetch(`${process.env.VDF_BASE_URL}/api/admin/company`, {
method: 'PUT',
headers: {
Authorization: `Bearer ${process.env.VDF_ACCESS_TOKEN}`,
'Content-Type': 'application/json',
},
body: JSON.stringify({
company: {
name: 'Contoso Ltd',
email: 'info@example.com',
industry: 'Manufacturing',
},
billing: {
address: '1 Example Way',
postalCode: 'EC1A 1BB',
vatNumber: 'GB123456789',
},
}),
});
if (!response.ok) throw new Error(`Request failed with status ${response.status}`);
const data = await response.json(); import os
import requests
response = requests.put(
f"{os.environ['VDF_BASE_URL']}/api/admin/company",
headers={"Authorization": f"Bearer {os.environ['VDF_ACCESS_TOKEN']}"},
json={
"company": {
"name": "Contoso Ltd",
"email": "info@example.com",
"industry": "Manufacturing",
},
"billing": {
"address": "1 Example Way",
"postalCode": "EC1A 1BB",
"vatNumber": "GB123456789",
},
},
timeout=30,
)
response.raise_for_status()
data = response.json() {
"success": true,
"message": "Company details updated successfully",
"data": {
"id": 1,
"company_name": "Contoso Ltd",
"company_email": "info@example.com",
"website": "https://www.example.com",
"company_size": "201-500",
"industry": "Manufacturing",
"country": "United Kingdom",
"city": "London",
"state": null,
"billing_name": "Contoso Ltd",
"billing_address": "1 Example Way",
"billing_country": "United Kingdom",
"billing_city": "London",
"billing_state": null,
"billing_postal_code": "EC1A 1BB",
"vat_number": "GB123456789",
"team_members": null,
"created_at": "Tue, 01 Sep 2026 09:30:00 GMT",
"updated_at": "Fri, 11 Sep 2026 08:30:00 GMT"
}
}