Create client
Manually creates a client workspace with users. Optionally sends invitation emails. When inviteToTrial=true, the hub’s configured trial plan is used and planPublicId is ignored (requires trial enabled in hub config).
curl --request POST \
--url https://api.gennia.ai/public/api/v1/clients \
--header 'Content-Type: application/json' \
--header 'X-Api-Key: <api-key>' \
--data '
{
"creditsOverride": 5000,
"inviteToTrial": false,
"periodEndOverride": "2026-12-31T23:59:59Z",
"planPublicId": "9c3a4d22-1a8d-4b3f-9b1e-7a0f0c4f3e21",
"sendInvitations": true,
"users": [
{
"email": "ada@acme.com",
"name": "Ada Lovelace"
}
],
"workspaceName": "Acme Corp"
}
'import requests
url = "https://api.gennia.ai/public/api/v1/clients"
payload = {
"creditsOverride": 5000,
"inviteToTrial": False,
"periodEndOverride": "2026-12-31T23:59:59Z",
"planPublicId": "9c3a4d22-1a8d-4b3f-9b1e-7a0f0c4f3e21",
"sendInvitations": True,
"users": [
{
"email": "ada@acme.com",
"name": "Ada Lovelace"
}
],
"workspaceName": "Acme Corp"
}
headers = {
"X-Api-Key": "<api-key>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {'X-Api-Key': '<api-key>', 'Content-Type': 'application/json'},
body: JSON.stringify({
creditsOverride: 5000,
inviteToTrial: false,
periodEndOverride: '2026-12-31T23:59:59Z',
planPublicId: '9c3a4d22-1a8d-4b3f-9b1e-7a0f0c4f3e21',
sendInvitations: true,
users: [{email: 'ada@acme.com', name: 'Ada Lovelace'}],
workspaceName: 'Acme Corp'
})
};
fetch('https://api.gennia.ai/public/api/v1/clients', 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.gennia.ai/public/api/v1/clients",
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([
'creditsOverride' => 5000,
'inviteToTrial' => false,
'periodEndOverride' => '2026-12-31T23:59:59Z',
'planPublicId' => '9c3a4d22-1a8d-4b3f-9b1e-7a0f0c4f3e21',
'sendInvitations' => true,
'users' => [
[
'email' => 'ada@acme.com',
'name' => 'Ada Lovelace'
]
],
'workspaceName' => 'Acme Corp'
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json",
"X-Api-Key: <api-key>"
],
]);
$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.gennia.ai/public/api/v1/clients"
payload := strings.NewReader("{\n \"creditsOverride\": 5000,\n \"inviteToTrial\": false,\n \"periodEndOverride\": \"2026-12-31T23:59:59Z\",\n \"planPublicId\": \"9c3a4d22-1a8d-4b3f-9b1e-7a0f0c4f3e21\",\n \"sendInvitations\": true,\n \"users\": [\n {\n \"email\": \"ada@acme.com\",\n \"name\": \"Ada Lovelace\"\n }\n ],\n \"workspaceName\": \"Acme Corp\"\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("X-Api-Key", "<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.gennia.ai/public/api/v1/clients")
.header("X-Api-Key", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"creditsOverride\": 5000,\n \"inviteToTrial\": false,\n \"periodEndOverride\": \"2026-12-31T23:59:59Z\",\n \"planPublicId\": \"9c3a4d22-1a8d-4b3f-9b1e-7a0f0c4f3e21\",\n \"sendInvitations\": true,\n \"users\": [\n {\n \"email\": \"ada@acme.com\",\n \"name\": \"Ada Lovelace\"\n }\n ],\n \"workspaceName\": \"Acme Corp\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.gennia.ai/public/api/v1/clients")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["X-Api-Key"] = '<api-key>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"creditsOverride\": 5000,\n \"inviteToTrial\": false,\n \"periodEndOverride\": \"2026-12-31T23:59:59Z\",\n \"planPublicId\": \"9c3a4d22-1a8d-4b3f-9b1e-7a0f0c4f3e21\",\n \"sendInvitations\": true,\n \"users\": [\n {\n \"email\": \"ada@acme.com\",\n \"name\": \"Ada Lovelace\"\n }\n ],\n \"workspaceName\": \"Acme Corp\"\n}"
response = http.request(request)
puts response.read_body{
"createdAt": "2023-11-07T05:31:56Z",
"creditsBalance": 123,
"creditsUsedThisPeriod": 123,
"currentPeriodEnd": "2023-11-07T05:31:56Z",
"currentPeriodStart": "2023-11-07T05:31:56Z",
"extraCreditsBalance": 123,
"nextCreditRenewalAt": "2023-11-07T05:31:56Z",
"pendingInvitations": [
{
"createdAt": "2023-11-07T05:31:56Z",
"email": "<string>",
"expiresAt": "2023-11-07T05:31:56Z",
"isExpired": true,
"name": "<string>",
"publicId": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"role": "<string>"
}
],
"pendingPlan": {
"currency": "<string>",
"effectiveAt": "2023-11-07T05:31:56Z",
"name": "<string>",
"priceCents": 123,
"publicId": "3c90c3cc-0d44-4b50-8888-8dd25736052a"
},
"plan": {
"billingIntervalMonths": 123,
"creditsIncluded": 123,
"currency": "<string>",
"name": "<string>",
"priceCents": 123,
"publicId": "3c90c3cc-0d44-4b50-8888-8dd25736052a"
},
"publicId": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"seatsLimit": 123,
"unlimitedCredits": true,
"users": [
{
"completedOnboarding": true,
"email": "<string>",
"lastSeenAt": "2023-11-07T05:31:56Z",
"name": "<string>",
"publicId": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"role": "<string>"
}
],
"usersCount": 123,
"workspaceName": "<string>"
}{
"createdAt": "2023-11-07T05:31:56Z",
"creditsBalance": 123,
"creditsUsedThisPeriod": 123,
"currentPeriodEnd": "2023-11-07T05:31:56Z",
"currentPeriodStart": "2023-11-07T05:31:56Z",
"extraCreditsBalance": 123,
"nextCreditRenewalAt": "2023-11-07T05:31:56Z",
"pendingInvitations": [
{
"createdAt": "2023-11-07T05:31:56Z",
"email": "<string>",
"expiresAt": "2023-11-07T05:31:56Z",
"isExpired": true,
"name": "<string>",
"publicId": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"role": "<string>"
}
],
"pendingPlan": {
"currency": "<string>",
"effectiveAt": "2023-11-07T05:31:56Z",
"name": "<string>",
"priceCents": 123,
"publicId": "3c90c3cc-0d44-4b50-8888-8dd25736052a"
},
"plan": {
"billingIntervalMonths": 123,
"creditsIncluded": 123,
"currency": "<string>",
"name": "<string>",
"priceCents": 123,
"publicId": "3c90c3cc-0d44-4b50-8888-8dd25736052a"
},
"publicId": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"seatsLimit": 123,
"unlimitedCredits": true,
"users": [
{
"completedOnboarding": true,
"email": "<string>",
"lastSeenAt": "2023-11-07T05:31:56Z",
"name": "<string>",
"publicId": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"role": "<string>"
}
],
"usersCount": 123,
"workspaceName": "<string>"
}{
"createdAt": "2023-11-07T05:31:56Z",
"creditsBalance": 123,
"creditsUsedThisPeriod": 123,
"currentPeriodEnd": "2023-11-07T05:31:56Z",
"currentPeriodStart": "2023-11-07T05:31:56Z",
"extraCreditsBalance": 123,
"nextCreditRenewalAt": "2023-11-07T05:31:56Z",
"pendingInvitations": [
{
"createdAt": "2023-11-07T05:31:56Z",
"email": "<string>",
"expiresAt": "2023-11-07T05:31:56Z",
"isExpired": true,
"name": "<string>",
"publicId": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"role": "<string>"
}
],
"pendingPlan": {
"currency": "<string>",
"effectiveAt": "2023-11-07T05:31:56Z",
"name": "<string>",
"priceCents": 123,
"publicId": "3c90c3cc-0d44-4b50-8888-8dd25736052a"
},
"plan": {
"billingIntervalMonths": 123,
"creditsIncluded": 123,
"currency": "<string>",
"name": "<string>",
"priceCents": 123,
"publicId": "3c90c3cc-0d44-4b50-8888-8dd25736052a"
},
"publicId": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"seatsLimit": 123,
"unlimitedCredits": true,
"users": [
{
"completedOnboarding": true,
"email": "<string>",
"lastSeenAt": "2023-11-07T05:31:56Z",
"name": "<string>",
"publicId": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"role": "<string>"
}
],
"usersCount": 123,
"workspaceName": "<string>"
}Autorizações
Corpo
Body for creating a new client workspace under the hub.
Optional credits override. When not set, uses the plan's creditsIncluded value.
5000
Invite as a trial client — ignores planPublicId and uses the hub's configured trial plan (requires trial enabled in hub config). Defaults to false.
false
Optional period-end override. When not set, computed from plan recurrence.
"2026-12-31T23:59:59Z"
Optional. Subscription plan public ID. If omitted, the client is created without a plan. Ignored when inviteToTrial=true.
"9c3a4d22-1a8d-4b3f-9b1e-7a0f0c4f3e21"
Send invitation emails to the listed users immediately. Defaults to false.
true
Users to provision in the client workspace (at least one).
1Show child attributes
Show child attributes
Display name of the client workspace.
1 - 150"Acme Corp"
Resposta
Created
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
active, past_due, canceled, trialing, pending_onboarding, suspended Show child attributes
Show child attributes
Esta página foi útil?
curl --request POST \
--url https://api.gennia.ai/public/api/v1/clients \
--header 'Content-Type: application/json' \
--header 'X-Api-Key: <api-key>' \
--data '
{
"creditsOverride": 5000,
"inviteToTrial": false,
"periodEndOverride": "2026-12-31T23:59:59Z",
"planPublicId": "9c3a4d22-1a8d-4b3f-9b1e-7a0f0c4f3e21",
"sendInvitations": true,
"users": [
{
"email": "ada@acme.com",
"name": "Ada Lovelace"
}
],
"workspaceName": "Acme Corp"
}
'import requests
url = "https://api.gennia.ai/public/api/v1/clients"
payload = {
"creditsOverride": 5000,
"inviteToTrial": False,
"periodEndOverride": "2026-12-31T23:59:59Z",
"planPublicId": "9c3a4d22-1a8d-4b3f-9b1e-7a0f0c4f3e21",
"sendInvitations": True,
"users": [
{
"email": "ada@acme.com",
"name": "Ada Lovelace"
}
],
"workspaceName": "Acme Corp"
}
headers = {
"X-Api-Key": "<api-key>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {'X-Api-Key': '<api-key>', 'Content-Type': 'application/json'},
body: JSON.stringify({
creditsOverride: 5000,
inviteToTrial: false,
periodEndOverride: '2026-12-31T23:59:59Z',
planPublicId: '9c3a4d22-1a8d-4b3f-9b1e-7a0f0c4f3e21',
sendInvitations: true,
users: [{email: 'ada@acme.com', name: 'Ada Lovelace'}],
workspaceName: 'Acme Corp'
})
};
fetch('https://api.gennia.ai/public/api/v1/clients', 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.gennia.ai/public/api/v1/clients",
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([
'creditsOverride' => 5000,
'inviteToTrial' => false,
'periodEndOverride' => '2026-12-31T23:59:59Z',
'planPublicId' => '9c3a4d22-1a8d-4b3f-9b1e-7a0f0c4f3e21',
'sendInvitations' => true,
'users' => [
[
'email' => 'ada@acme.com',
'name' => 'Ada Lovelace'
]
],
'workspaceName' => 'Acme Corp'
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json",
"X-Api-Key: <api-key>"
],
]);
$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.gennia.ai/public/api/v1/clients"
payload := strings.NewReader("{\n \"creditsOverride\": 5000,\n \"inviteToTrial\": false,\n \"periodEndOverride\": \"2026-12-31T23:59:59Z\",\n \"planPublicId\": \"9c3a4d22-1a8d-4b3f-9b1e-7a0f0c4f3e21\",\n \"sendInvitations\": true,\n \"users\": [\n {\n \"email\": \"ada@acme.com\",\n \"name\": \"Ada Lovelace\"\n }\n ],\n \"workspaceName\": \"Acme Corp\"\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("X-Api-Key", "<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.gennia.ai/public/api/v1/clients")
.header("X-Api-Key", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"creditsOverride\": 5000,\n \"inviteToTrial\": false,\n \"periodEndOverride\": \"2026-12-31T23:59:59Z\",\n \"planPublicId\": \"9c3a4d22-1a8d-4b3f-9b1e-7a0f0c4f3e21\",\n \"sendInvitations\": true,\n \"users\": [\n {\n \"email\": \"ada@acme.com\",\n \"name\": \"Ada Lovelace\"\n }\n ],\n \"workspaceName\": \"Acme Corp\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.gennia.ai/public/api/v1/clients")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["X-Api-Key"] = '<api-key>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"creditsOverride\": 5000,\n \"inviteToTrial\": false,\n \"periodEndOverride\": \"2026-12-31T23:59:59Z\",\n \"planPublicId\": \"9c3a4d22-1a8d-4b3f-9b1e-7a0f0c4f3e21\",\n \"sendInvitations\": true,\n \"users\": [\n {\n \"email\": \"ada@acme.com\",\n \"name\": \"Ada Lovelace\"\n }\n ],\n \"workspaceName\": \"Acme Corp\"\n}"
response = http.request(request)
puts response.read_body{
"createdAt": "2023-11-07T05:31:56Z",
"creditsBalance": 123,
"creditsUsedThisPeriod": 123,
"currentPeriodEnd": "2023-11-07T05:31:56Z",
"currentPeriodStart": "2023-11-07T05:31:56Z",
"extraCreditsBalance": 123,
"nextCreditRenewalAt": "2023-11-07T05:31:56Z",
"pendingInvitations": [
{
"createdAt": "2023-11-07T05:31:56Z",
"email": "<string>",
"expiresAt": "2023-11-07T05:31:56Z",
"isExpired": true,
"name": "<string>",
"publicId": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"role": "<string>"
}
],
"pendingPlan": {
"currency": "<string>",
"effectiveAt": "2023-11-07T05:31:56Z",
"name": "<string>",
"priceCents": 123,
"publicId": "3c90c3cc-0d44-4b50-8888-8dd25736052a"
},
"plan": {
"billingIntervalMonths": 123,
"creditsIncluded": 123,
"currency": "<string>",
"name": "<string>",
"priceCents": 123,
"publicId": "3c90c3cc-0d44-4b50-8888-8dd25736052a"
},
"publicId": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"seatsLimit": 123,
"unlimitedCredits": true,
"users": [
{
"completedOnboarding": true,
"email": "<string>",
"lastSeenAt": "2023-11-07T05:31:56Z",
"name": "<string>",
"publicId": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"role": "<string>"
}
],
"usersCount": 123,
"workspaceName": "<string>"
}{
"createdAt": "2023-11-07T05:31:56Z",
"creditsBalance": 123,
"creditsUsedThisPeriod": 123,
"currentPeriodEnd": "2023-11-07T05:31:56Z",
"currentPeriodStart": "2023-11-07T05:31:56Z",
"extraCreditsBalance": 123,
"nextCreditRenewalAt": "2023-11-07T05:31:56Z",
"pendingInvitations": [
{
"createdAt": "2023-11-07T05:31:56Z",
"email": "<string>",
"expiresAt": "2023-11-07T05:31:56Z",
"isExpired": true,
"name": "<string>",
"publicId": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"role": "<string>"
}
],
"pendingPlan": {
"currency": "<string>",
"effectiveAt": "2023-11-07T05:31:56Z",
"name": "<string>",
"priceCents": 123,
"publicId": "3c90c3cc-0d44-4b50-8888-8dd25736052a"
},
"plan": {
"billingIntervalMonths": 123,
"creditsIncluded": 123,
"currency": "<string>",
"name": "<string>",
"priceCents": 123,
"publicId": "3c90c3cc-0d44-4b50-8888-8dd25736052a"
},
"publicId": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"seatsLimit": 123,
"unlimitedCredits": true,
"users": [
{
"completedOnboarding": true,
"email": "<string>",
"lastSeenAt": "2023-11-07T05:31:56Z",
"name": "<string>",
"publicId": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"role": "<string>"
}
],
"usersCount": 123,
"workspaceName": "<string>"
}{
"createdAt": "2023-11-07T05:31:56Z",
"creditsBalance": 123,
"creditsUsedThisPeriod": 123,
"currentPeriodEnd": "2023-11-07T05:31:56Z",
"currentPeriodStart": "2023-11-07T05:31:56Z",
"extraCreditsBalance": 123,
"nextCreditRenewalAt": "2023-11-07T05:31:56Z",
"pendingInvitations": [
{
"createdAt": "2023-11-07T05:31:56Z",
"email": "<string>",
"expiresAt": "2023-11-07T05:31:56Z",
"isExpired": true,
"name": "<string>",
"publicId": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"role": "<string>"
}
],
"pendingPlan": {
"currency": "<string>",
"effectiveAt": "2023-11-07T05:31:56Z",
"name": "<string>",
"priceCents": 123,
"publicId": "3c90c3cc-0d44-4b50-8888-8dd25736052a"
},
"plan": {
"billingIntervalMonths": 123,
"creditsIncluded": 123,
"currency": "<string>",
"name": "<string>",
"priceCents": 123,
"publicId": "3c90c3cc-0d44-4b50-8888-8dd25736052a"
},
"publicId": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"seatsLimit": 123,
"unlimitedCredits": true,
"users": [
{
"completedOnboarding": true,
"email": "<string>",
"lastSeenAt": "2023-11-07T05:31:56Z",
"name": "<string>",
"publicId": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"role": "<string>"
}
],
"usersCount": 123,
"workspaceName": "<string>"
}
