curl --request POST \
--url https://app.base44.com/api/workspace/{workspace_id}/brands/generate \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"description": "A family furniture workshop that builds solid oak tables. Warm, earthy, and plain-spoken."
}
'import requests
url = "https://app.base44.com/api/workspace/{workspace_id}/brands/generate"
payload = { "description": "A family furniture workshop that builds solid oak tables. Warm, earthy, and plain-spoken." }
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
description: 'A family furniture workshop that builds solid oak tables. Warm, earthy, and plain-spoken.'
})
};
fetch('https://app.base44.com/api/workspace/{workspace_id}/brands/generate', 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://app.base44.com/api/workspace/{workspace_id}/brands/generate",
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([
'description' => 'A family furniture workshop that builds solid oak tables. Warm, earthy, and plain-spoken.'
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"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://app.base44.com/api/workspace/{workspace_id}/brands/generate"
payload := strings.NewReader("{\n \"description\": \"A family furniture workshop that builds solid oak tables. Warm, earthy, and plain-spoken.\"\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
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://app.base44.com/api/workspace/{workspace_id}/brands/generate")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"description\": \"A family furniture workshop that builds solid oak tables. Warm, earthy, and plain-spoken.\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://app.base44.com/api/workspace/{workspace_id}/brands/generate")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"description\": \"A family furniture workshop that builds solid oak tables. Warm, earthy, and plain-spoken.\"\n}"
response = http.request(request)
puts response.read_body{
"status": "success",
"message": "Generating brand",
"id": "68e0c4a1b9d2f7003a5e1b42"
}{
"detail": [
{
"loc": [
"<string>"
],
"msg": "<string>",
"type": "<string>"
}
]
}Generate workspace brand
Starts generating a brand from a text description, and returns the new brand’s id right away. AI models build the brand’s kit and design system in the background.
The brand starts with status generating and the title Generating…. Poll Get workspace brand every few seconds until status is ready or failed. When generation fails for a reason you can fix, failure_message says why. The finished brand’s title gets a number added, such as Nordwind 2, when another brand already has it. If the workspace has no default brand, this brand becomes the default.
Send a description with text in it. A blank one still returns an id, and that brand then ends as failed.
Starting a generation deletes the workspace’s brands whose status is failed. Retrying a call that succeeded starts a second generation, or returns the plan-limit 403 when the first one filled the workspace’s limit.
Brands need the Builder plan or higher. An Enterprise workspace can have any number of brands, and any other workspace on Builder or a higher plan can have 1. A brand whose status is failed doesn’t count. Over the limit this returns a 403 whose detail.reason is design_system_limit_reached and whose detail.limit is the workspace’s limit.
This is limited to 20 requests per minute per user, counted across your signed-in sessions and personal access tokens. Some workspaces have a different limit.
curl --request POST \
--url https://app.base44.com/api/workspace/{workspace_id}/brands/generate \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"description": "A family furniture workshop that builds solid oak tables. Warm, earthy, and plain-spoken."
}
'import requests
url = "https://app.base44.com/api/workspace/{workspace_id}/brands/generate"
payload = { "description": "A family furniture workshop that builds solid oak tables. Warm, earthy, and plain-spoken." }
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
description: 'A family furniture workshop that builds solid oak tables. Warm, earthy, and plain-spoken.'
})
};
fetch('https://app.base44.com/api/workspace/{workspace_id}/brands/generate', 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://app.base44.com/api/workspace/{workspace_id}/brands/generate",
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([
'description' => 'A family furniture workshop that builds solid oak tables. Warm, earthy, and plain-spoken.'
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"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://app.base44.com/api/workspace/{workspace_id}/brands/generate"
payload := strings.NewReader("{\n \"description\": \"A family furniture workshop that builds solid oak tables. Warm, earthy, and plain-spoken.\"\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
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://app.base44.com/api/workspace/{workspace_id}/brands/generate")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"description\": \"A family furniture workshop that builds solid oak tables. Warm, earthy, and plain-spoken.\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://app.base44.com/api/workspace/{workspace_id}/brands/generate")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"description\": \"A family furniture workshop that builds solid oak tables. Warm, earthy, and plain-spoken.\"\n}"
response = http.request(request)
puts response.read_body{
"status": "success",
"message": "Generating brand",
"id": "68e0c4a1b9d2f7003a5e1b42"
}{
"detail": [
{
"loc": [
"<string>"
],
"msg": "<string>",
"type": "<string>"
}
]
}Authorizations
Personal access token, sent as Authorization: Bearer <token>.
Path Parameters
Body
What the brand is: the business, its audience, and the look and voice you want.
"A family furniture workshop that builds solid oak tables. Warm, earthy, and plain-spoken."
Response
Generation started. Poll the brand by id.
Was this page helpful?