# Agent Studio
The Agent Studio APIs allow you to programmatically create and manage Agent Studio assets, such as genies, knowledge bases, and skills.
# Quick reference
Type | Resource | Description |
---|---|---|
GET | /api/agentic/genies | Returns a list of genies. |
POST | /api/agentic/genies | Creates a new genie. |
PUT | /api/agentic/genies/:id | Updates an existing genie. |
GET | /api/agentic/genies/:id | Returns the genie associated with the ID you specify. |
DELETE | /api/agentic/genies/:id | Deletes a genie. |
POST | /api/agentic/genies/:id/start | Starts the genie associated with the ID you specify. |
POST | /api/agentic/genies/:id/stop | Stops the genie associated with the ID you specify. |
POST | /api/agentic/genies/:id/assign_skills | Assigns skills to the genie associated with the ID you specify. |
POST | /api/agentic/genies/:id/remove_skills | Removes skills from the genie associated with the ID you specify. |
POST | /api/agentic/genies/:id/assign_knowledge_bases | Assigns knowledge bases to the genie associated with the ID you specify. |
POST | /api/agentic/genies/:id/remove_knowledge_bases | Removes knowledge bases from the genie associated with the ID you specify. |
POST | /api/agentic/genies/:id/assign_user_groups | Assigns user group access to the genie associated with the ID you specify. |
POST | /api/agentic/genies/:id/remove_user_groups | Removes user group access from the genie associated with the ID you specify. |
GET | /api/agentic/knowledge_bases | Returns a list of knowledge bases. |
POST | /api/agentic/knowledge_bases | Creates a new knowledge base. |
GET | /api/agentic/knowledge_bases/:id | Returns the knowledge base associated with the ID you specify. |
PUT | /api/agentic/knowledge_bases/:id | Updates an existing knowledge base. |
DELETE | /api/agentic/knowledge_bases/:id | Deletes a knowledge base. |
GET | /api/agentic/knowledge_bases/:id/data_sources | Returns the data sources associated with the knowledge base ID you specify. |
GET | /api/agentic/knowledge_bases/:id/recipes | Returns the recipes associated with the knowledge base ID you specify. |
GET | /api/agentic/skills | Returns a list of skills. |
POST | /api/agentic/skills | Creates a new skill. |
GET | /api/agentic/skills/:id | Returns the skill associated with the ID you specify. |
# Genies
# List genies
Returns a list of genies.
GET /api/agentic/genies
# Query parameters
Name | Type | Description |
---|---|---|
folder_id | string optional | The ID of the folder where the genie resides. |
project_id | string optional | The ID of the project where the genie resides. |
state | string optional | The state of the genie. For example: active or inactive . |
page | integer optional | Page number of the genies to fetch. Minimum value is 1 . |
per_page | integer optional | Number of genies to return in a single page. Minimum value is 1 . Maximum value is 50 . |
# Sample request
curl -X GET "https://www.workato.com/api/agentic/genies?per_page=10&page=1" \
-H 'Authorization: Bearer <api_token>'
# Sample response
[
{
"id": "nig-BLwemeP7-rhsaQf",
"name": "Customer Support Genie",
"state": "active",
"folder_id": "7498",
"project_id": "4567",
},
{
"id": "ign-ATXxyloC-wsmSlY",
"name": "Sales Assistant Genie",
"state": "inactive",
"folder_id": "7302",
"project_id": "7654",
}
]
# Create a genie
Creates a new genie.
POST /api/agentic/genies
# Payload
Name | Type | Description |
---|---|---|
name | string required | The name of the genie. |
description | string required | A description of the genie's purpose. |
folder_id | string required | The ID of the folder where the genie resides. |
instructions | string required | The instructions your genie uses to identify its purpose, personality, and job description. |
ai_provider | string required | The AI provider that powers your genie. Accepted values are anthropic or open_ai . |
shared_account_id | integer required | The Connection ID of your genie. |
custom_oauth_key_id | integer required | Custom OAuth key ID. |
matrix | boolean required | Determines whether Matrix is enabled as your chat interface or not. Accepted values are true or false . |
# Sample request
curl -X POST https://www.workato.com/api/agentic/genies \
-H 'Authorization: Bearer <api_token>' \
-H 'Content-Type: application/json' \
-d '{
"name": "Customer Support Genie",
"description": "Handles customer support inquiries and provides quick responses.",
"folder_id": "7498",
"instructions": "You are a helpful, friendly support agent who answers customer questions clearly and politely.",
"ai_provider": "open_ai",
"shared_account_id": 1234,
"custom_oauth_key_id": 5678,
"matrix": true
}'
# Sample response
{
"id": ngi-BWLSPX4z-BaT3D9/,
}
# Update a genie
Updates an existing genie.
PUT /api/agentic/genies/:id
# Query parameters
Name | Type | Description |
---|---|---|
id | string required | The ID of the genie you plan to update. |
name | string optional | The name of the genie. |
description | string optional | A description of the genie's purpose. |
folder_id | string optional | The ID of the folder where the genie resides. |
instructions | string optional | The instructions your genie uses to identify its purpose, personality, and job description. |
ai_provider | string optional | The AI provider that powers your genie. Accepted values are anthropic or open_ai . |
shared_account_id | integer optional | The Connection ID of your genie. |
custom_oauth_key_id | integer optional | Custom OAuth key ID. |
matrix | boolean optional | Determines whether Matrix is enabled as your chat interface or not. Accepted values are true or false . |
# Sample request
curl -X PUT https://www.workato.com/api/agentic/genies/101 \
-H 'Authorization: Bearer <api_token>' \
-H 'Content-Type: application/json' \
-d '{
"name": "Customer Support Genie v2",
"description": "Updated to handle billing inquiries in addition to general support.",
"instructions": "You are a knowledgeable, polite support assistant. Always prioritize clear, concise answers.",
"matrix": false
}'
# Sample response
{
"id": "gni-ZWSMPR4a-TaG7S9",
"name": "Customer Support Genie v2",
"description": "Updated to handle billing inquiries in addition to general support.",
"folder_id": "7498",
"project_id": "4567",
"instructions": "You are a knowledgeable, polite support assistant. Always prioritize clear, concise answers.",
"ai_provider": "open_ai",
"shared_account_id": 1234,
"custom_oauth_key_id": 5678,
"matrix": false
}
# Get a genie by ID
Returns the genie associated with the ID you specify.
GET /api/agentic/genies/:id
# Query parameters
Name | Type | Description |
---|---|---|
id | string required | The ID of the genie you plan to retrieve. |
# Sample request
curl -X GET https://www.workato.com/api/agentic/genies/gni-ZWSMPR4a-TaG7S9 \
-H 'Authorization: Bearer <api_token>'
# Sample response
{
"id": "gni-ZWSMPR4a-TaG7S9",
"name": "Customer Support Genie v2",
"description": "Handles customer support and billing inquiries.",
"folder_id": "7498",
"project_id": "4567",
"instructions": "You are a knowledgeable, polite support assistant. Always prioritize clear, concise answers.",
"ai_provider": "open_ai",
"shared_account_id": 1234,
"custom_oauth_key_id": 5678,
"matrix": true
}
# Delete a genie
Deletes a genie.
DELETE /api/agentic/genies/:id
# Query parameters
Name | Type | Description |
---|---|---|
id | string required | The ID of the genie you plan to delete. |
# Sample request
curl -X DELETE https://www.workato.com/api/agentic/genies/gni-ZWSMPR4a-TaG7S9 \
-H 'Authorization: Bearer <api_token>'
# Sample response
{
"success": "true"
}
# Start a genie
Starts the genie associated with the ID you specify.
POST /api/agentic/genies/:id/start
# Query parameters
Name | Type | Description |
---|---|---|
id | string required | The ID of the genie you plan to start. |
# Sample request
curl -X POST https://www.workato.com/api/agentic/genies/gni-ZWSMPR4a-TaG7S9/start \
-H 'Authorization: Bearer <api_token>'
# Sample response
{
"success": true
}
# Stop a genie
Stops the genie associated with the ID you specify.
POST /api/agentic/genies/:id/stop
# Query parameters
Name | Type | Description |
---|---|---|
id | string required | The ID of the genie you plan to stop. |
# Sample request
curl -X POST https://www.workato.com/api/agentic/genies/gni-ZWSMPR4a-TaG7S9/stop \
-H 'Authorization: Bearer <api_token>'
# Sample response
{
"success": true
}
# Assign a skill to a genie
Assigns skills to the genie associated with the ID you specify.
POST /api/agentic/genies/:id/assign_skills
# Query parameters
Name | Type | Description |
---|---|---|
id | string required | The ID of the genie you to which you plan to assign skills. |
# Payload
Name | Type | Description |
---|---|---|
skill_ids | array of string required | An array of skill IDs to assign to a genie. |
65155119
# Sample request
curl -X POST https://www.workato.com/api/agentic/genies/gni-ZWSMPR4a-TaG7S9/assign_skills \
-H 'Authorization: Bearer <api_token>' \
-H 'Content-Type: application/json' \
-d '{
"skill_ids": ["65001201", "65704499", "65039789"]
}'
# Sample response
{
"skills": [
{
"id": "65001201",
"name": "Sales Lead"
},
{
"id": "65704499",
"name": "Ticket Escalation"
},
{
"id": "65039789",
"name": "Order Tracking"
}
],
}
# Remove a skill from a genie
Removes a skill from the genie associated with the ID you specify.
POST /api/agentic/genies/:id/remove_skills
# Query parameters
Name | Type | Description |
---|---|---|
id | string required | The ID of the genie you from which you plan to remove skills. |
# Payload
Name | Type | Description |
---|---|---|
skill_ids | array of string required | An array of skill IDs to remove from a genie. |
# Sample request
curl -X POST https://www.workato.com/api/agentic/genies/gni-ZWSMPR4a-TaG7S9/assign_skills \
-H 'Authorization: Bearer <api_token>' \
-H 'Content-Type: application/json' \
-d '{
"skill_ids": ["65001201", "65704499"]
}'
# Sample response
{
"skills": [
{
"id": "65001201",
"name": "Sales Lead"
},
{
"id": "65704499",
"name": "Ticket Escalation"
}
],
}
# Assign a knowledge base to a genie
Assigns knowledge bases to the genie associated with the ID you specify.
POST /api/agentic/genies/:id/assign_knowledge_bases
# Query parameters
Name | Type | Description |
---|---|---|
id | string required | The ID of the genie you to which you plan to assign knowledge bases. |
# Payload
Name | Type | Description |
---|---|---|
knowledge_base_ids | array of string required | An array of knowledge base IDs to assign to a genie. |
# Sample request
curl -X POST https://www.workato.com/api/agentic/genies/gni-ZWSMPR4a-TaG7S9/assign_knowledge_bases \
-H 'Authorization: Bearer <api_token>' \
-H 'Content-Type: application/json' \
-d '{
"knowledge_base_ids": ["kb-WSm8kore-blMxrh", "kb-ATx0crok-saMvba"]
}'
# Sample response
{
"knowledge_bases": [
{
"id": "kb-WSm8kore-blMxrh",
"name": "Sync Jira"
},
{
"id": "kb-ATx0crok-saMvba",
"name": "PRD sync"
}
],
}
# Remove a knowledge base from a genie
Removes a knowledge base from the genie associated with the ID you specify.
POST /api/agentic/genies/:id/remove_knowledge_bases
# Query parameters
Name | Type | Description |
---|---|---|
id | string required | The ID of the genie you from which you plan to remove knowledge bases. |
# Payload
Name | Type | Description |
---|---|---|
knowledge_base_ids | array of string required | An array of knowledge base IDs to remove from a genie. |
# Sample request
curl -X POST https://www.workato.com/api/agentic/genies/gni-ZWSMPR4a-TaG7S9/remove_knowledge_bases \
-H 'Authorization: Bearer <api_token>' \
-H 'Content-Type: application/json' \
-d '{
"knowledge_base_ids": ["kb-WSm8kore-blMxrh"]
}'
# Sample response
{
"knowledge_bases": [
{
"id": "kb-WSm8kore-blMxrh",
"name": "Sync Jira"
}
],
}
# Assign a user group to a genie
Assigns user group access to the genie associated with the ID you specify.
POST /api/agentic/genies/:id/assign_user_groups
# Query parameters
Name | Type | Description |
---|---|---|
id | string required | The ID of the genie you to which you plan to assign user group access. |
# Payload
Name | Type | Description |
---|---|---|
user_group_ids | array of string required | An array of user group IDs to add to a genie. |
# Sample request
curl -X POST https://www.workato.com/api/agentic/genies/gni-ZWSMPR4a-TaG7S9/assign_user_groups \
-H 'Authorization: Bearer <api_token>' \
-H 'Content-Type: application/json' \
-d '{
"user_group_ids": ["ertXU2Z3sQaL47T8PssX2V, gpzHU1Y3mJaG77W1JbbZ2B"]
}'
# Sample response
{
"user_groups": [
{
"id": "ertXU2Z3sQaL47T8PssX2V",
"name": "Sales"
},
{
"id": "gpzHU1Y3mJaG77W1JbbZ2B",
"name": "Finance"
},
],
}
# Remove a user group from a genie
Removes user group access from the genie associated with the ID you specify.
POST /api/agentic/genies/:id/remove_user_groups
# Query parameters
Name | Type | Description |
---|---|---|
id | string required | The ID of the genie you from which you plan to remove user group access. |
# Payload
Name | Type | Description |
---|---|---|
user_group_ids | array of string required | An array of user group IDs to remove from a genie. |
# Sample request
curl -X POST https://www.workato.com/api/agentic/genies/gni-ZWSMPR4a-TaG7S9/remove_user_groups \
-H 'Authorization: Bearer <api_token>' \
-H 'Content-Type: application/json' \
-d '{
"user_group_ids": ["ertXU2Z3sQaL47T8PssX2V"]
}'
# Sample response
{
"user_groups": [
{
"id": "ertXU2Z3sQaL47T8PssX2V",
"name": "Sales"
}
],
}
# Knowledge bases
# List knowledge bases
Returns a list of knowledge bases.
GET /api/agentic/knowledge_bases
# Query parameters
Name | Type | Description |
---|---|---|
folder_id | string optional | The ID of the folder where the genie resides. |
project_id | string optional | The ID of the project where the genie resides. |
query | string optional | Search query. |
page | integer optional | Page number of the genies to fetch. Minimum value is 1 . |
per_page | integer optional | Number of genies to return in a single page. Minimum value is 1 . Maximum value is 50 . |
sort_term | string optional | The field or term to sort results by. For example: name or latest_activity . |
# Sample request
curl -X GET https://www.workato.com/api/agentic/knowledge_bases \
-H 'Authorization: Bearer <api_token>' \
-H 'Content-Type: application/json' \
-d '{
"per_page": 10,
"page": 1,
"sort_term": "name"
}'
# Sample response
[
{
"id": "kb-WSm8kore-blMxrh",
"name": "Support FAQs",
"description": "Knowledge base with frequently asked customer support questions.",
"folder_id": "7498",
"project_id": "4567"
},
{
"id": "kb-BLm8cove-brMxrh",
"name": "Sales Playbook",
"description": "Guidelines and resources for the sales team.",
"folder_id": "7302",
"project_id": "9876"
}
]
# Create a knowledge base
Creates a new knowledge base.
POST /api/agentic/knowledge_bases
# Payload
Name | Type | Description |
---|---|---|
name | string required | The name of the knowledge base. |
description | string required | A description of the knowledge base. |
folder_id | string required | The ID of the folder where the knowledge base resides. |
source_type | string required | The source of the knowledge base, such as a recipe. |
data_sources | string required | Configure data sources for the knowledge base. |
# Sample request
curl -X POST https://www.workato.com/api/agentic/knowledge_bases \
-H 'Authorization: Bearer <api_token>' \
-H 'Content-Type: application/json' \
-d '{
"name": "Support FAQs",
"description": "Knowledge base with frequently asked customer support questions.",
"folder_id": "7498",
"source_type": "recipe",
"data_sources": "zendesk_articles"
}'
# Sample response
{
"id": "kb-BRm8coke-rhMxsa",
"name": "Support FAQs",
"description": "Knowledge base with frequently asked customer support questions.",
"folder_id": "7498",
"source_type": "recipe",
"data_sources": "zendesk_articles"
# Get a knowledge base by ID
Returns the knowledge base associated with the ID you specify.
GET /api/agentic/knowledge_bases/:id
# Query parameters
Name | Type | Description |
---|---|---|
id | string required | The ID of the knowledge base you plan to retrieve. |
# Sample request
curl -X GET https://www.workato.com/api/agentic/knowledge_bases/kb-WSm8kore-blMxrh \
-H 'Authorization: Bearer <api_token>' \
# Sample response
[
{
"id": "kb-WSm8kore-blMxrh",
"name": "Support FAQs",
"description": "Knowledge base with frequently asked customer support questions.",
"folder_id": "7498",
"project_id": "4567"
}
]
# Update a knowledge base
Updates an existing knowledge base.
PUT /api/agentic/knowledge_bases/:id
# Query parameters
Name | Type | Description |
---|---|---|
id | string required | The ID of the knowledge base you plan to update. |
name | string optional | The name of the knowledge base. |
description | string optional | The description of the knowledge base. |
folder_id | string optional | The ID of the folder where the knowledge base resides. |
data_sources | object optional | The configured data sources for the knowledge base. |
# Sample request
curl -X PUT https://www.workato.com/api/agentic/knowledge_bases/kb-WSm8kore-blMxrh \
-H 'Authorization: Bearer <api_token>' \
-H 'Content-Type: application/json' \
-d '{
"name": "Support FAQs v2",
"description": "Updated to include billing FAQs in addition to support.",
"data_sources": {
"zendesk_articles": true,
"internal_docs": true
}
}'
# Sample response
{
"id": "kb-WSm8kore-blMxrh",
"name": "Support FAQs v2",
"description": "Updated to include billing FAQs in addition to support.",
"folder_id": "7498",
"source_type": "recipe",
"data_sources": {
"zendesk_articles": true,
"internal_docs": true
}
}
# Delete a knowledge base
Deletes a knowledge base.
DELETE /api/agentic/knowledge_bases/:id
# Query parameters
Name | Type | Description |
---|---|---|
id | string required | The ID of the knowledge base you plan to delete. |
# Sample request
curl -X DELETE https://www.workato.com/api/agentic/knowledge_bases/kb-WSm8kore-blMxrh \
-H 'Authorization: Bearer <api_token>' \
# Sample response
{
"success": "true"
}
# Get knowledge base data sources
Returns the data sources associated with the knowledge base ID you specify.
GET /api/agentic/knowledge_bases/:id/data_sources
# Query parameters
Name | Type | Description |
---|---|---|
id | string required | The ID of the knowledge base for which you plan to retrieve data sources. |
# Sample request
curl -X GET https://www.workato.com/api/agentic/knowledge_bases/kb-WSm8kore-blMxrh/data_sources \
-H 'Authorization: Bearer <api_token>'
# Sample response
{
"knowledge_base_id": "kb-WSm8kore-blMxrh",
"data_sources": {
"zendesk_articles": true,
"internal_docs": true,
"slack_channels": false
}
}
# Get knowledge base recipes
Returns the recipes associated with the knowledge base ID you specify.
GET /api/agentic/knowledge_bases/:id/recipes
# Query parameters
Name | Type | Description |
---|---|---|
id | string required | The ID of the knowledge base for which you plan to retrieve associated recipes. |
query | string optional | Search query. |
page | integer optional | Page number of the genies to fetch. Minimum value is 1 . |
per_page | integer optional | Number of genies to return in a single page. Minimum value is 1 . Maximum value is 50 . |
sort_term | string optional | The field or term to sort results by. For example: name or latest_activity . |
# Sample request
curl -X GET https://www.workato.com/api/agentic/knowledge_bases/kb-WSm8kore-blMxr/recipes \
-H 'Authorization: Bearer <api_token>' \
-H 'Content-Type: application/json' \
-d '{
"per_page": 10,
"page": 1,
"sort_term": "name"
}'
# Sample response
[
{
"id": 45246391,
"name": "Customer Support Escalation",
"description": "Routes high-priority Zendesk tickets to Slack.",
"knowledge_base_id": "kb-WSm8kore-blMxr/recipes"
},
{
"id": 87654321,
"name": "Billing Notifications",
"description": "Sends alerts for overdue invoices to the finance team.",
"knowledge_base_id": "kb-WSm8kore-blMxr/recipes"
}
]
# Skills
# List skills
Returns a list of skills.
GET /api/agentic/skills
# Query parameters
Name | Type | Description |
---|---|---|
folder_id | string optional | The ID of the folder where the genie resides. |
project_id | string optional | The ID of the project where the genie resides. |
query | string optional | Search query. |
page | integer optional | Page number of the genies to fetch. Minimum value is 1 . |
per_page | integer optional | Number of genies to return in a single page. Minimum value is 1 . Maximum value is 50 . |
sort_term | string optional | The field or term to sort results by. For example: name or latest_activity . |
# Sample request
curl -X GET https://www.workato.com/api/agentic/skills \
-H 'Authorization: Bearer <api_token>' \
-H 'Content-Type: application/json' \
-d '{
"per_page": 10,
"page": 1,
"sort_term": "name"
}'
# Sample response
[
{
"id": 65001201,
"name": "Zendesk Ticket Management",
"description": "Skill for handling customer support tickets from Zendesk.",
"folder_id": "7498",
"project_id": "4567"
},
{
"id": 65039789,
"name": "Slack Notifications",
"description": "Skill for sending targeted Slack alerts.",
"folder_id": "7302",
"project_id": "4567"
}
]
# Create a skill
Creates a new skill.
POST /api/agentic/skills
# Payload
Name | Type | Description |
---|---|---|
recipe_id | integer required | Recipe ID of the skill. |
# Sample request
curl -X POST https://www.workato.com/api/agentic/skills \
-H 'Authorization: Bearer <api_token>' \
-H 'Content-Type: application/json' \
-d '{
"recipe_id": 65039789
}'
# Sample response
{
"name": "Customer Escalation Skill",
"description": "Skill automatically routes high-priority Zendesk tickets to Slack.",
"recipe_id": 65039789,
"folder_id": "7498",
"project_id": "4567"
}
# Get a skill by ID
Returns the skill associated with the ID you specify.
GET /api/agentic/skills/:id
# Query parameters
Name | Type | Description |
---|---|---|
id | string required | The ID of the skill for you plan to retrieve. |
# Sample request
curl -X GET https://www.workato.com/api/agentic/skills/65039789 \
-H 'Authorization: Bearer <api_token>' \
# Sample response
{
"name": "Customer Escalation Skill",
"description": "Skill automatically routes high-priority Zendesk tickets to Slack.",
"recipe_id": 65039789,
"folder_id": "7498",
"project_id": "4567"
}
Last updated: 9/5/2025, 8:55:15 PM