curl --request PATCH \
--url https://app.backend.genezio.ai/customer/v1/brands/{brand_id}/topics/{topic_id} \
--header 'Content-Type: application/json' \
--header 'X-API-Key: <api-key>' \
--data '
{
"answer_engines": [],
"language": "<string>",
"name": "<string>",
"persona_id": 123
}
'import requests
url = "https://app.backend.genezio.ai/customer/v1/brands/{brand_id}/topics/{topic_id}"
payload = {
"answer_engines": [],
"language": "<string>",
"name": "<string>",
"persona_id": 123
}
headers = {
"X-API-Key": "<api-key>",
"Content-Type": "application/json"
}
response = requests.patch(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'PATCH',
headers: {'X-API-Key': '<api-key>', 'Content-Type': 'application/json'},
body: JSON.stringify({answer_engines: [], language: '<string>', name: '<string>', persona_id: 123})
};
fetch('https://app.backend.genezio.ai/customer/v1/brands/{brand_id}/topics/{topic_id}', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));{
"created_at": "2023-11-07T05:31:56Z",
"id": 123,
"language": "<string>",
"name": "<string>",
"status": "<string>",
"type": "<string>",
"answer_engines": [
"<string>"
],
"persona_id": 123,
"scenarios": [
{
"created_at": "2023-11-07T05:31:56Z",
"id": 123,
"status": "<string>",
"text": "<string>",
"topic_id": 123
}
],
"tags": [
{
"id": 123,
"name": "<string>",
"color": "#00b477"
}
]
}{
"error": {
"code": "brand_access_denied",
"message": "This API key has no access to this brand",
"details": [
{
"field": "page_size",
"message": "Input should be less than or equal to 100"
}
],
"request_id": "4f3c2e1a-9b7d-4c1e-8f2a-1d3e5b7c9a0f"
}
}{
"error": {
"code": "brand_access_denied",
"message": "This API key has no access to this brand",
"details": [
{
"field": "page_size",
"message": "Input should be less than or equal to 100"
}
],
"request_id": "4f3c2e1a-9b7d-4c1e-8f2a-1d3e5b7c9a0f"
}
}{
"error": {
"code": "brand_access_denied",
"message": "This API key has no access to this brand",
"details": [
{
"field": "page_size",
"message": "Input should be less than or equal to 100"
}
],
"request_id": "4f3c2e1a-9b7d-4c1e-8f2a-1d3e5b7c9a0f"
}
}{
"error": {
"code": "brand_access_denied",
"message": "This API key has no access to this brand",
"details": [
{
"field": "page_size",
"message": "Input should be less than or equal to 100"
}
],
"request_id": "4f3c2e1a-9b7d-4c1e-8f2a-1d3e5b7c9a0f"
}
}{
"error": {
"code": "brand_access_denied",
"message": "This API key has no access to this brand",
"details": [
{
"field": "page_size",
"message": "Input should be less than or equal to 100"
}
],
"request_id": "4f3c2e1a-9b7d-4c1e-8f2a-1d3e5b7c9a0f"
}
}{
"error": {
"code": "brand_access_denied",
"message": "This API key has no access to this brand",
"details": [
{
"field": "page_size",
"message": "Input should be less than or equal to 100"
}
],
"request_id": "4f3c2e1a-9b7d-4c1e-8f2a-1d3e5b7c9a0f"
}
}{
"error": {
"code": "brand_access_denied",
"message": "This API key has no access to this brand",
"details": [
{
"field": "page_size",
"message": "Input should be less than or equal to 100"
}
],
"request_id": "4f3c2e1a-9b7d-4c1e-8f2a-1d3e5b7c9a0f"
}
}Update Topic
Change the name, the status, the language, the persona or the engines.
Only the fields of the body change. answer_engines: [] goes back to the
engines of the brand. An engine that the plan does not hold gets 403
plan_limit_reached.
curl --request PATCH \
--url https://app.backend.genezio.ai/customer/v1/brands/{brand_id}/topics/{topic_id} \
--header 'Content-Type: application/json' \
--header 'X-API-Key: <api-key>' \
--data '
{
"answer_engines": [],
"language": "<string>",
"name": "<string>",
"persona_id": 123
}
'import requests
url = "https://app.backend.genezio.ai/customer/v1/brands/{brand_id}/topics/{topic_id}"
payload = {
"answer_engines": [],
"language": "<string>",
"name": "<string>",
"persona_id": 123
}
headers = {
"X-API-Key": "<api-key>",
"Content-Type": "application/json"
}
response = requests.patch(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'PATCH',
headers: {'X-API-Key': '<api-key>', 'Content-Type': 'application/json'},
body: JSON.stringify({answer_engines: [], language: '<string>', name: '<string>', persona_id: 123})
};
fetch('https://app.backend.genezio.ai/customer/v1/brands/{brand_id}/topics/{topic_id}', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));{
"created_at": "2023-11-07T05:31:56Z",
"id": 123,
"language": "<string>",
"name": "<string>",
"status": "<string>",
"type": "<string>",
"answer_engines": [
"<string>"
],
"persona_id": 123,
"scenarios": [
{
"created_at": "2023-11-07T05:31:56Z",
"id": 123,
"status": "<string>",
"text": "<string>",
"topic_id": 123
}
],
"tags": [
{
"id": 123,
"name": "<string>",
"color": "#00b477"
}
]
}{
"error": {
"code": "brand_access_denied",
"message": "This API key has no access to this brand",
"details": [
{
"field": "page_size",
"message": "Input should be less than or equal to 100"
}
],
"request_id": "4f3c2e1a-9b7d-4c1e-8f2a-1d3e5b7c9a0f"
}
}{
"error": {
"code": "brand_access_denied",
"message": "This API key has no access to this brand",
"details": [
{
"field": "page_size",
"message": "Input should be less than or equal to 100"
}
],
"request_id": "4f3c2e1a-9b7d-4c1e-8f2a-1d3e5b7c9a0f"
}
}{
"error": {
"code": "brand_access_denied",
"message": "This API key has no access to this brand",
"details": [
{
"field": "page_size",
"message": "Input should be less than or equal to 100"
}
],
"request_id": "4f3c2e1a-9b7d-4c1e-8f2a-1d3e5b7c9a0f"
}
}{
"error": {
"code": "brand_access_denied",
"message": "This API key has no access to this brand",
"details": [
{
"field": "page_size",
"message": "Input should be less than or equal to 100"
}
],
"request_id": "4f3c2e1a-9b7d-4c1e-8f2a-1d3e5b7c9a0f"
}
}{
"error": {
"code": "brand_access_denied",
"message": "This API key has no access to this brand",
"details": [
{
"field": "page_size",
"message": "Input should be less than or equal to 100"
}
],
"request_id": "4f3c2e1a-9b7d-4c1e-8f2a-1d3e5b7c9a0f"
}
}{
"error": {
"code": "brand_access_denied",
"message": "This API key has no access to this brand",
"details": [
{
"field": "page_size",
"message": "Input should be less than or equal to 100"
}
],
"request_id": "4f3c2e1a-9b7d-4c1e-8f2a-1d3e5b7c9a0f"
}
}{
"error": {
"code": "brand_access_denied",
"message": "This API key has no access to this brand",
"details": [
{
"field": "page_size",
"message": "Input should be less than or equal to 100"
}
],
"request_id": "4f3c2e1a-9b7d-4c1e-8f2a-1d3e5b7c9a0f"
}
}Authorizations
An API key of your account, from Settings > API Keys. It starts with gnz-.
Headers
Any unique string, such as a UUID. Send the same key again to get the first answer and not a second write. The API keeps an answer for 24 hours.
Body
Only the fields that the request sends change.
The answer engines of the topic. With no list, the topic uses the engines of the brand. [] goes back to the engines of the brand.
The answer engines that the public API names.
The platform also runs models of the API of OpenAI for its own work, such
as gpt-4o. A customer does not choose them, thus the public API does not
name them. Each value is a value of dtos.simulation.LlmModel.
chatgpt.com, google-ai-overview, perplexity, claude, google-ai-mode, google-gemini, copilot, deepseek, grok, gpt-5.4 1 - 641 - 255A persona of the brand.
active, pause Response
Successful Response
The answer engines that run the topic.
The persona whose questions the scenarios ask.
Show child attributes
Show child attributes
Show child attributes
Show child attributes