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,
"billingType": "one_time",
"creditsIncluded": 123,
"currency": "<string>",
"name": "<string>",
"priceCents": 123,
"publicId": "3c90c3cc-0d44-4b50-8888-8dd25736052a"
},
"publicId": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"seatsLimit": 123,
"subscriptionStatus": "active",
"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,
"billingType": "one_time",
"creditsIncluded": 123,
"currency": "<string>",
"name": "<string>",
"priceCents": 123,
"publicId": "3c90c3cc-0d44-4b50-8888-8dd25736052a"
},
"publicId": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"seatsLimit": 123,
"subscriptionStatus": "active",
"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,
"billingType": "one_time",
"creditsIncluded": 123,
"currency": "<string>",
"name": "<string>",
"priceCents": 123,
"publicId": "3c90c3cc-0d44-4b50-8888-8dd25736052a"
},
"publicId": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"seatsLimit": 123,
"subscriptionStatus": "active",
"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,
"billingType": "one_time",
"creditsIncluded": 123,
"currency": "<string>",
"name": "<string>",
"priceCents": 123,
"publicId": "3c90c3cc-0d44-4b50-8888-8dd25736052a"
},
"publicId": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"seatsLimit": 123,
"subscriptionStatus": "active",
"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,
"billingType": "one_time",
"creditsIncluded": 123,
"currency": "<string>",
"name": "<string>",
"priceCents": 123,
"publicId": "3c90c3cc-0d44-4b50-8888-8dd25736052a"
},
"publicId": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"seatsLimit": 123,
"subscriptionStatus": "active",
"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,
"billingType": "one_time",
"creditsIncluded": 123,
"currency": "<string>",
"name": "<string>",
"priceCents": 123,
"publicId": "3c90c3cc-0d44-4b50-8888-8dd25736052a"
},
"publicId": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"seatsLimit": 123,
"subscriptionStatus": "active",
"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>"
}
