curl --request POST \
--url https://api.galtea.ai/products/generate-config \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: multipart/form-data' \
--form 'userDescription=A mobile sales assistant for smartphones.' \
--form productSpecs=@example-file \
--form 'productName=Mobile Sales Assistant' \
--form useDetailedGeneration=trueimport requests
url = "https://api.galtea.ai/products/generate-config"
files = { "productSpecs": ("example-file", open("example-file", "rb")) }
payload = {
"userDescription": "A mobile sales assistant for smartphones.",
"productName": "Mobile Sales Assistant",
"useDetailedGeneration": "true"
}
headers = {"Authorization": "Bearer <token>"}
response = requests.post(url, data=payload, files=files, headers=headers)
print(response.text)const form = new FormData();
form.append('userDescription', 'A mobile sales assistant for smartphones.');
form.append('productSpecs', '<string>');
form.append('productName', 'Mobile Sales Assistant');
form.append('useDetailedGeneration', 'true');
const options = {method: 'POST', headers: {Authorization: 'Bearer <token>'}};
options.body = form;
fetch('https://api.galtea.ai/products/generate-config', 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.galtea.ai/products/generate-config",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => "-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"userDescription\"\r\n\r\nA mobile sales assistant for smartphones.\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"productSpecs\"; filename=\"example-file\"\r\nContent-Type: application/octet-stream\r\n\r\n<string>\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"productName\"\r\n\r\nMobile Sales Assistant\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"useDetailedGeneration\"\r\n\r\ntrue\r\n-----011000010111000001101001--",
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: multipart/form-data"
],
]);
$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.galtea.ai/products/generate-config"
payload := strings.NewReader("-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"userDescription\"\r\n\r\nA mobile sales assistant for smartphones.\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"productSpecs\"; filename=\"example-file\"\r\nContent-Type: application/octet-stream\r\n\r\n<string>\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"productName\"\r\n\r\nMobile Sales Assistant\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"useDetailedGeneration\"\r\n\r\ntrue\r\n-----011000010111000001101001--")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
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.galtea.ai/products/generate-config")
.header("Authorization", "Bearer <token>")
.body("-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"userDescription\"\r\n\r\nA mobile sales assistant for smartphones.\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"productSpecs\"; filename=\"example-file\"\r\nContent-Type: application/octet-stream\r\n\r\n<string>\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"productName\"\r\n\r\nMobile Sales Assistant\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"useDetailedGeneration\"\r\n\r\ntrue\r\n-----011000010111000001101001--")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.galtea.ai/products/generate-config")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request.body = "-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"userDescription\"\r\n\r\nA mobile sales assistant for smartphones.\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"productSpecs\"; filename=\"example-file\"\r\nContent-Type: application/octet-stream\r\n\r\n<string>\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"productName\"\r\n\r\nMobile Sales Assistant\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"useDetailedGeneration\"\r\n\r\ntrue\r\n-----011000010111000001101001--"
response = http.request(request)
puts response.read_body{
"name": "<string>",
"description": "<string>",
"specifications": [
{
"name": "<string>",
"description": "<string>",
"type": "CAPABILITY",
"testType": "QUALITY",
"testVariant": "<string>"
}
],
"interactionMode": "CONVERSATIONAL",
"primaryTask": "QUESTION_ANSWERING_RAG"
}{
"error": "Error type",
"message": "Error message description"
}{
"error": "Error type",
"message": "Error message description"
}{
"error": "Error type",
"message": "Error message description"
}Generate product configuration using AI
Uses AI to generate a refined product description and testable specifications from a product name and user description. Optionally accepts product specification files (documents, images, audio, video, code) to enrich the generation. See Products.
curl --request POST \
--url https://api.galtea.ai/products/generate-config \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: multipart/form-data' \
--form 'userDescription=A mobile sales assistant for smartphones.' \
--form productSpecs=@example-file \
--form 'productName=Mobile Sales Assistant' \
--form useDetailedGeneration=trueimport requests
url = "https://api.galtea.ai/products/generate-config"
files = { "productSpecs": ("example-file", open("example-file", "rb")) }
payload = {
"userDescription": "A mobile sales assistant for smartphones.",
"productName": "Mobile Sales Assistant",
"useDetailedGeneration": "true"
}
headers = {"Authorization": "Bearer <token>"}
response = requests.post(url, data=payload, files=files, headers=headers)
print(response.text)const form = new FormData();
form.append('userDescription', 'A mobile sales assistant for smartphones.');
form.append('productSpecs', '<string>');
form.append('productName', 'Mobile Sales Assistant');
form.append('useDetailedGeneration', 'true');
const options = {method: 'POST', headers: {Authorization: 'Bearer <token>'}};
options.body = form;
fetch('https://api.galtea.ai/products/generate-config', 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.galtea.ai/products/generate-config",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => "-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"userDescription\"\r\n\r\nA mobile sales assistant for smartphones.\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"productSpecs\"; filename=\"example-file\"\r\nContent-Type: application/octet-stream\r\n\r\n<string>\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"productName\"\r\n\r\nMobile Sales Assistant\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"useDetailedGeneration\"\r\n\r\ntrue\r\n-----011000010111000001101001--",
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: multipart/form-data"
],
]);
$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.galtea.ai/products/generate-config"
payload := strings.NewReader("-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"userDescription\"\r\n\r\nA mobile sales assistant for smartphones.\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"productSpecs\"; filename=\"example-file\"\r\nContent-Type: application/octet-stream\r\n\r\n<string>\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"productName\"\r\n\r\nMobile Sales Assistant\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"useDetailedGeneration\"\r\n\r\ntrue\r\n-----011000010111000001101001--")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
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.galtea.ai/products/generate-config")
.header("Authorization", "Bearer <token>")
.body("-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"userDescription\"\r\n\r\nA mobile sales assistant for smartphones.\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"productSpecs\"; filename=\"example-file\"\r\nContent-Type: application/octet-stream\r\n\r\n<string>\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"productName\"\r\n\r\nMobile Sales Assistant\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"useDetailedGeneration\"\r\n\r\ntrue\r\n-----011000010111000001101001--")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.galtea.ai/products/generate-config")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request.body = "-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"userDescription\"\r\n\r\nA mobile sales assistant for smartphones.\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"productSpecs\"; filename=\"example-file\"\r\nContent-Type: application/octet-stream\r\n\r\n<string>\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"productName\"\r\n\r\nMobile Sales Assistant\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"useDetailedGeneration\"\r\n\r\ntrue\r\n-----011000010111000001101001--"
response = http.request(request)
puts response.read_body{
"name": "<string>",
"description": "<string>",
"specifications": [
{
"name": "<string>",
"description": "<string>",
"type": "CAPABILITY",
"testType": "QUALITY",
"testVariant": "<string>"
}
],
"interactionMode": "CONVERSATIONAL",
"primaryTask": "QUESTION_ANSWERING_RAG"
}{
"error": "Error type",
"message": "Error message description"
}{
"error": "Error type",
"message": "Error message description"
}{
"error": "Error type",
"message": "Error message description"
}Authorizations
API key authorization. Pass your API key in the Authorization header as a Bearer token. Both new (gsk_*) and legacy (gsk-) API keys are accepted, e.g. Authorization: Bearer gsk_... or Authorization: Bearer gsk-....
Body
A brief description of what the product does.
1"A mobile sales assistant for smartphones."
Optional product specification files (documents, images, audio, video, code). Max 50 files, 10MB total.
The name of the product.
"Mobile Sales Assistant"
Whether to use detailed generation mode (heavier model).
"true"
Response
Product configuration generated successfully
The AI-refined product name.
The AI-refined product description.
The generated testable specifications.
Show child attributes
Show child attributes
Suggested interaction mode, which the caller may keep or replace. Null when the classification was unavailable.
CONVERSATIONAL, HUMAN_DIRECT, PROGRAMMATIC, null "CONVERSATIONAL"
Suggested primary task, which the caller may keep or replace. Null when the classification was unavailable.
CONVERSATIONAL_ASSISTANCE, QUESTION_ANSWERING_RAG, DOCUMENT_EXTRACTION, DOCUMENT_GENERATION, SUMMARIZATION, CLASSIFICATION, TRANSLATION, CORRECTION, AGENTIC_WORKFLOW, OTHER, null "QUESTION_ANSWERING_RAG"