# 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