Create Customer
curl --request POST \
--url https://api.bunny.net/partner/customers \
--header 'AccessKey: <api-key>' \
--header 'Content-Type: application/json' \
--data '
{
"Email": "jsmith@example.com",
"FirstName": "<string>",
"LastName": "<string>",
"Country": "<string>",
"BillingEmail": "<string>",
"CompanyName": "<string>",
"CompanyVatNumber": "<string>",
"InternalNotes": "<string>"
}
'import requests
url = "https://api.bunny.net/partner/customers"
payload = {
"Email": "jsmith@example.com",
"FirstName": "<string>",
"LastName": "<string>",
"Country": "<string>",
"BillingEmail": "<string>",
"CompanyName": "<string>",
"CompanyVatNumber": "<string>",
"InternalNotes": "<string>"
}
headers = {
"AccessKey": "<api-key>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {AccessKey: '<api-key>', 'Content-Type': 'application/json'},
body: JSON.stringify({
Email: 'jsmith@example.com',
FirstName: '<string>',
LastName: '<string>',
Country: '<string>',
BillingEmail: '<string>',
CompanyName: '<string>',
CompanyVatNumber: '<string>',
InternalNotes: '<string>'
})
};
fetch('https://api.bunny.net/partner/customers', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.bunny.net/partner/customers",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'Email' => 'jsmith@example.com',
'FirstName' => '<string>',
'LastName' => '<string>',
'Country' => '<string>',
'BillingEmail' => '<string>',
'CompanyName' => '<string>',
'CompanyVatNumber' => '<string>',
'InternalNotes' => '<string>'
]),
CURLOPT_HTTPHEADER => [
"AccessKey: <api-key>",
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.bunny.net/partner/customers"
payload := strings.NewReader("{\n \"Email\": \"jsmith@example.com\",\n \"FirstName\": \"<string>\",\n \"LastName\": \"<string>\",\n \"Country\": \"<string>\",\n \"BillingEmail\": \"<string>\",\n \"CompanyName\": \"<string>\",\n \"CompanyVatNumber\": \"<string>\",\n \"InternalNotes\": \"<string>\"\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("AccessKey", "<api-key>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://api.bunny.net/partner/customers")
.header("AccessKey", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"Email\": \"jsmith@example.com\",\n \"FirstName\": \"<string>\",\n \"LastName\": \"<string>\",\n \"Country\": \"<string>\",\n \"BillingEmail\": \"<string>\",\n \"CompanyName\": \"<string>\",\n \"CompanyVatNumber\": \"<string>\",\n \"InternalNotes\": \"<string>\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.bunny.net/partner/customers")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["AccessKey"] = '<api-key>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"Email\": \"jsmith@example.com\",\n \"FirstName\": \"<string>\",\n \"LastName\": \"<string>\",\n \"Country\": \"<string>\",\n \"BillingEmail\": \"<string>\",\n \"CompanyName\": \"<string>\",\n \"CompanyVatNumber\": \"<string>\",\n \"InternalNotes\": \"<string>\"\n}"
response = http.request(request)
puts response.read_body{
"CustomerUserId": "<string>"
}{
"ErrorKey": "<string>",
"Field": "<string>",
"Message": "<string>"
}Customers
Create Customer
Create a new customer under the authenticated partner and email them a set-password welcome link.
POST
/
partner
/
customers
Create Customer
curl --request POST \
--url https://api.bunny.net/partner/customers \
--header 'AccessKey: <api-key>' \
--header 'Content-Type: application/json' \
--data '
{
"Email": "jsmith@example.com",
"FirstName": "<string>",
"LastName": "<string>",
"Country": "<string>",
"BillingEmail": "<string>",
"CompanyName": "<string>",
"CompanyVatNumber": "<string>",
"InternalNotes": "<string>"
}
'import requests
url = "https://api.bunny.net/partner/customers"
payload = {
"Email": "jsmith@example.com",
"FirstName": "<string>",
"LastName": "<string>",
"Country": "<string>",
"BillingEmail": "<string>",
"CompanyName": "<string>",
"CompanyVatNumber": "<string>",
"InternalNotes": "<string>"
}
headers = {
"AccessKey": "<api-key>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {AccessKey: '<api-key>', 'Content-Type': 'application/json'},
body: JSON.stringify({
Email: 'jsmith@example.com',
FirstName: '<string>',
LastName: '<string>',
Country: '<string>',
BillingEmail: '<string>',
CompanyName: '<string>',
CompanyVatNumber: '<string>',
InternalNotes: '<string>'
})
};
fetch('https://api.bunny.net/partner/customers', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.bunny.net/partner/customers",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'Email' => 'jsmith@example.com',
'FirstName' => '<string>',
'LastName' => '<string>',
'Country' => '<string>',
'BillingEmail' => '<string>',
'CompanyName' => '<string>',
'CompanyVatNumber' => '<string>',
'InternalNotes' => '<string>'
]),
CURLOPT_HTTPHEADER => [
"AccessKey: <api-key>",
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.bunny.net/partner/customers"
payload := strings.NewReader("{\n \"Email\": \"jsmith@example.com\",\n \"FirstName\": \"<string>\",\n \"LastName\": \"<string>\",\n \"Country\": \"<string>\",\n \"BillingEmail\": \"<string>\",\n \"CompanyName\": \"<string>\",\n \"CompanyVatNumber\": \"<string>\",\n \"InternalNotes\": \"<string>\"\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("AccessKey", "<api-key>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://api.bunny.net/partner/customers")
.header("AccessKey", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"Email\": \"jsmith@example.com\",\n \"FirstName\": \"<string>\",\n \"LastName\": \"<string>\",\n \"Country\": \"<string>\",\n \"BillingEmail\": \"<string>\",\n \"CompanyName\": \"<string>\",\n \"CompanyVatNumber\": \"<string>\",\n \"InternalNotes\": \"<string>\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.bunny.net/partner/customers")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["AccessKey"] = '<api-key>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"Email\": \"jsmith@example.com\",\n \"FirstName\": \"<string>\",\n \"LastName\": \"<string>\",\n \"Country\": \"<string>\",\n \"BillingEmail\": \"<string>\",\n \"CompanyName\": \"<string>\",\n \"CompanyVatNumber\": \"<string>\",\n \"InternalNotes\": \"<string>\"\n}"
response = http.request(request)
puts response.read_body{
"CustomerUserId": "<string>"
}{
"ErrorKey": "<string>",
"Field": "<string>",
"Message": "<string>"
}Authorizations
AccessKeybearer
API Access Key authorization header
Body
application/json
Primary account email of the customer to create.
Minimum string length:
1Customer's first name.
Customer's last name.
Customer's country.
Email for receiving invoices and billing updates.
Customer's company name.
Customer's company VAT number.
Internal notes about the customer, visible only to partner admins.
Response
Customer created and welcome email sent.
Id of the newly created customer user.
Last modified on August 18, 2026
Was this page helpful?
⌘I