Agent Studio

The Agent Studio APIs allow you to programmatically create and manage Agent Studio assets, such as genies, knowledge bases, and skills.

Rate limits

Agent Studio resources have the following rate limits:

Quick reference

TypeResourceDescription
GET/api/agentic/geniesReturns a list of genies.
POST/api/agentic/geniesCreates a new genie.
PUT/api/agentic/genies/:idUpdates an existing genie.
GET/api/agentic/genies/:idReturns the genie associated with the ID you specify.
DELETE/api/agentic/genies/:idDeletes a genie.
POST/api/agentic/genies/:id/startStarts the genie associated with the ID you specify.
POST/api/agentic/genies/:id/stopStops the genie associated with the ID you specify.
POST/api/agentic/genies/:id/assign_skillsAssigns skills to the genie associated with the ID you specify.
POST/api/agentic/genies/:id/remove_skillsRemoves skills from the genie associated with the ID you specify.
POST/api/agentic/genies/:id/assign_knowledge_basesAssigns knowledge bases to the genie associated with the ID you specify.
POST/api/agentic/genies/:id/remove_knowledge_basesRemoves knowledge bases from the genie associated with the ID you specify.
POST/api/agentic/genies/:id/assign_user_groupsAssigns user group access to the genie associated with the ID you specify.
POST/api/agentic/genies/:id/remove_user_groupsRemoves user group access from the genie associated with the ID you specify.
GET/api/agentic/knowledge_basesReturns a list of knowledge bases.
POST/api/agentic/knowledge_basesCreates a new knowledge base.
GET/api/agentic/knowledge_bases/:idReturns the knowledge base associated with the ID you specify.
PUT/api/agentic/knowledge_bases/:idUpdates an existing knowledge base.
DELETE/api/agentic/knowledge_bases/:idDeletes a knowledge base.
GET/api/agentic/knowledge_bases/:id/data_sourcesReturns the data sources associated with the knowledge base ID you specify.
GET/api/agentic/knowledge_bases/:id/recipesReturns the recipes associated with the knowledge base ID you specify.
GET/api/agentic/skillsReturns a list of skills.
POST/api/agentic/skillsCreates a new skill.
GET/api/agentic/skills/:idReturns the skill associated with the ID you specify.

Genies

List genies

Returns a list of genies.

bash
GET /api/agentic/genies

Query parameters

NameTypeDescription
folder_idstring
optional
The ID of the folder where the genie resides.
project_idstring
optional
The ID of the project where the genie resides.
statestring
optional
The state of the genie. For example: active or inactive.
pageinteger
optional
Page number of the genies to fetch. Minimum value is 1.
per_pageinteger
optional
Number of genies to return in a single page. Minimum value is 1. Maximum value is 50.
Sample request
shell
curl  -X GET "https://www.workato.com/api/agentic/genies?per_page=10&page=1" \
      -H 'Authorization: Bearer <api_token>'
Sample response
json
[
  {
      "id": "gni-BWLSPX4z-BaT3D9",
      "name": "Customer Support Genie",
      "description": "Handles customer support inquiries and provides quick responses.",
      "state": "stopped",
      "folder_id": 22991030,
      "instructions": "You are a helpful, friendly support agent who answers customer questions clearly and politely.",
      "ai_provider": "open_ai",
      "chat_interface": "slack",
      "skills_count": 5,
      "knowledge_bases_count": 3,
      "user_groups_count": 0,
      "active_recipes_count": 0,
      "inactive_skills_count": 5,
      "logo_url": "https://example.com/logo.png",
      "created_at": "2025-07-15T11:07:34.060-07:00",
      "updated_at": "2026-02-24T08:38:29.099-08:00"
  },
  {
      "id": "gni-ZWSMPR4a-TaG7S9",
      "name": "Customer Support Genie v2",
      "description": "Updated to handle billing inquiries in addition to general support.",
      "state": "stopped",
      "folder_id": 21285720,
      "instructions": "You are a knowledgeable, polite support assistant. Always prioritize clear, concise answers.",
      "ai_provider": "open_ai",
      "chat_interface": "slack",
      "skills_count": 5,
      "knowledge_bases_count": 3,
      "user_groups_count": 0,
      "active_recipes_count": 0,
      "inactive_skills_count": 5,
      "logo_url": "https://example.com/logo.png",
      "created_at": "2026-02-24T08:54:34.585-08:00",
      "updated_at": "2026-02-25T09:34:14.013-08:00"
  }
]

Create a genie

Creates a new genie.

bash
POST /api/agentic/genies

Payload

NameTypeDescription
namestring
required
The name of the genie.
descriptionstring
required
A description of the genie's purpose.
folder_idstring
required
The ID of the folder where the genie resides.
instructionsstring
required
The instructions your genie uses to identify its purpose, personality, and job description.
ai_providerstring
required
The AI provider that powers your genie. Accepted values are anthropic or open_ai.
shared_account_idinteger
required
The Connection ID of your genie.
custom_oauth_key_idinteger
required
Custom OAuth key ID.
matrixboolean
required
Determines whether Workato GO is enabled as your chat interface or not. Accepted values are true or false.
Sample request
shell
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
shell
{
  "id": ngi-BWLSPX4z-BaT3D9/,
}

Update a genie

Updates an existing genie.

bash
PUT /api/agentic/genies/:id

Query parameters

NameTypeDescription
idstring
required
The ID of the genie you plan to update.
namestring
optional
The name of the genie.
descriptionstring
optional
A description of the genie's purpose.
folder_idstring
optional
The ID of the folder where the genie resides.
instructionsstring
optional
The instructions your genie uses to identify its purpose, personality, and job description.
ai_providerstring
optional
The AI provider that powers your genie. Accepted values are anthropic or open_ai.
shared_account_idinteger
optional
The Connection ID of your genie.
custom_oauth_key_idinteger
optional
Custom OAuth key ID.
matrixboolean
optional
Determines whether Workato GO is enabled as your chat interface or not. Accepted values are true or false.
Sample request
shell
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
json
{
  "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.

bash
GET /api/agentic/genies/:id

Query parameters

NameTypeDescription
idstring
required
The ID of the genie you plan to retrieve.
Sample request
shell
curl -X GET https://www.workato.com/api/agentic/genies/gni-ZWSMPR4a-TaG7S9 \
     -H 'Authorization: Bearer <api_token>'
Sample response
json
{
  "id": "gni-ZWSMPR4a-TaG7S9",
  "name": "Customer Support Genie v2",
  "description": "Updated to handle billing inquiries in addition to general support.",
  "state": "stopped",
  "folder_id": 21285720,
  "project_id": 93761783,
  "instructions": "You are a knowledgeable, polite support assistant. Always prioritize clear, concise answers.",
  "ai_provider": "open_ai",
  "chat_interface": "slack",
  "skills_count": 5,
  "knowledge_bases_count": 3,
  "user_groups_count": 0,
  "active_recipes_count": 0,
  "inactive_skills_count": 5,
  "custom_oauth_key_id": 5678,
  "connection_id": null,
  "folders": [
      {
          "id": 21285720,
          "name": "Customer Assistants"
      }
  ],
  "logo_url": "https://example.com/logo.png",
  "user_groups": [],
  "created_at": "2026-02-24T08:54:34.170-08:00",
  "updated_at": "2026-02-25T09:34:14.300-08:00"
}

Delete a genie

Deletes a genie.

bash
DELETE /api/agentic/genies/:id

Query parameters

NameTypeDescription
idstring
required
The ID of the genie you plan to delete.
Sample request
shell
curl -X DELETE https://www.workato.com/api/agentic/genies/gni-ZWSMPR4a-TaG7S9 \
     -H 'Authorization: Bearer <api_token>'
Sample response
json
{
    "success": "true"
}

Start a genie

Starts the genie associated with the ID you specify.

bash
POST /api/agentic/genies/:id/start

Query parameters

NameTypeDescription
idstring
required
The ID of the genie you plan to start.
Sample request
shell
curl -X POST https://www.workato.com/api/agentic/genies/gni-ZWSMPR4a-TaG7S9/start \
     -H 'Authorization: Bearer <api_token>'
Sample response
json
{
  "success": true
}

Stop a genie

Stops the genie associated with the ID you specify.

bash
POST /api/agentic/genies/:id/stop

Query parameters

NameTypeDescription
idstring
required
The ID of the genie you plan to stop.
Sample request
shell
curl -X POST https://www.workato.com/api/agentic/genies/gni-ZWSMPR4a-TaG7S9/stop \
     -H 'Authorization: Bearer <api_token>'
Sample response
json
{
  "success": true
}

Assign a skill to a genie

Assigns skills to the genie associated with the ID you specify.

bash
POST /api/agentic/genies/:id/assign_skills

Query parameters

NameTypeDescription
idstring
required
The ID of the genie you to which you plan to assign skills.

Payload

NameTypeDescription
skill_idsarray of string
required
An array of skill IDs to assign to a genie.
Sample request
shell
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
json
{
    "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.

bash
POST /api/agentic/genies/:id/remove_skills

Query parameters

NameTypeDescription
idstring
required
The ID of the genie you from which you plan to remove skills.

Payload

NameTypeDescription
skill_idsarray of string
required
An array of skill IDs to remove from a genie.
Sample request
shell
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
json
{
    "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.

bash
POST /api/agentic/genies/:id/assign_knowledge_bases

Query parameters

NameTypeDescription
idstring
required
The ID of the genie you to which you plan to assign knowledge bases.

Payload

NameTypeDescription
knowledge_base_idsarray of string
required
An array of knowledge base IDs to assign to a genie.
Sample request
shell
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
json
{
    "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.

bash
POST /api/agentic/genies/:id/remove_knowledge_bases

Query parameters

NameTypeDescription
idstring
required
The ID of the genie you from which you plan to remove knowledge bases.

Payload

NameTypeDescription
knowledge_base_idsarray of string
required
An array of knowledge base IDs to remove from a genie.
Sample request
shell
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
json
{
    "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.

bash
POST /api/agentic/genies/:id/assign_user_groups

Query parameters

NameTypeDescription
idstring
required
The ID of the genie you to which you plan to assign user group access.

Payload

NameTypeDescription
user_group_idsarray of string
required
An array of user group IDs to add to a genie.
Sample request
shell
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
json
{
    "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.

bash
POST /api/agentic/genies/:id/remove_user_groups

Query parameters

NameTypeDescription
idstring
required
The ID of the genie you from which you plan to remove user group access.

Payload

NameTypeDescription
user_group_idsarray of string
required
An array of user group IDs to remove from a genie.
Sample request
shell
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
json
{
    "user_groups": [
    {
      "id": "ertXU2Z3sQaL47T8PssX2V",
      "name": "Sales"
    }
  ],
}

Knowledge bases

List knowledge bases

Returns a list of knowledge bases.

bash
GET /api/agentic/knowledge_bases

Query parameters

NameTypeDescription
folder_idstring
optional
The ID of the folder where the genie resides.
project_idstring
optional
The ID of the project where the genie resides.
querystring
optional
Search query.
pageinteger
optional
Page number of the genies to fetch. Minimum value is 1.
per_pageinteger
optional
Number of genies to return in a single page. Minimum value is 1. Maximum value is 50.
sort_termstring
optional
The field or term to sort results by. For example: name or latest_activity.
Sample request
shell
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
json
[
  {
    "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.

bash
POST /api/agentic/knowledge_bases

Payload

NameTypeDescription
namestring
required
The name of the knowledge base.
descriptionstring
required
A description of the knowledge base.
folder_idstring
required
The ID of the folder where the knowledge base resides.
source_typestring
required
The source of the knowledge base, such as a recipe.
data_sourcesstring
required
Configure data sources for the knowledge base.
Sample request
shell
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
json
{
  "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.

bash
GET /api/agentic/knowledge_bases/:id

Query parameters

NameTypeDescription
idstring
required
The ID of the knowledge base you plan to retrieve.
Sample request
shell
curl -X GET https://www.workato.com/api/agentic/knowledge_bases/kb-WSm8kore-blMxrh \
     -H 'Authorization: Bearer <api_token>' \
Sample response
json
[
  {
    "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.

bash
PUT /api/agentic/knowledge_bases/:id

Query parameters

NameTypeDescription
idstring
required
The ID of the knowledge base you plan to update.
namestring
optional
The name of the knowledge base.
descriptionstring
optional
The description of the knowledge base.
folder_idstring
optional
The ID of the folder where the knowledge base resides.
data_sourcesobject
optional
The configured data sources for the knowledge base.
Sample request
shell
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
json
{
  "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.

bash
DELETE /api/agentic/knowledge_bases/:id

Query parameters

NameTypeDescription
idstring
required
The ID of the knowledge base you plan to delete.
Sample request
shell
curl -X DELETE https://www.workato.com/api/agentic/knowledge_bases/kb-WSm8kore-blMxrh \
     -H 'Authorization: Bearer <api_token>' \
Sample response
json
{
    "success": "true"
}

Get knowledge base data sources

Returns the data sources associated with the knowledge base ID you specify.

bash
GET /api/agentic/knowledge_bases/:id/data_sources

Query parameters

NameTypeDescription
idstring
required
The ID of the knowledge base for which you plan to retrieve data sources.
Sample request
shell
curl -X GET https://www.workato.com/api/agentic/knowledge_bases/kb-WSm8kore-blMxrh/data_sources \
     -H 'Authorization: Bearer <api_token>'
Sample response
json
{
  "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.

bash
GET /api/agentic/knowledge_bases/:id/recipes

Query parameters

NameTypeDescription
idstring
required
The ID of the knowledge base for which you plan to retrieve associated recipes.
querystring
optional
Search query.
pageinteger
optional
Page number of the genies to fetch. Minimum value is 1.
per_pageinteger
optional
Number of genies to return in a single page. Minimum value is 1. Maximum value is 50.
sort_termstring
optional
The field or term to sort results by. For example: name or latest_activity.
Sample request
shell
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
json
[
  {
    "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.

bash
GET /api/agentic/skills

Query parameters

NameTypeDescription
folder_idstring
optional
The ID of the folder where the genie resides.
project_idstring
optional
The ID of the project where the genie resides.
querystring
optional
Search query.
pageinteger
optional
Page number of the genies to fetch. Minimum value is 1.
per_pageinteger
optional
Number of genies to return in a single page. Minimum value is 1. Maximum value is 50.
sort_termstring
optional
The field or term to sort results by. For example: name or latest_activity.
Sample request
shell
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
json
[
  {
    "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 from an existing recipe

Converts an existing recipe into a skill. The recipe must use a Genie trigger with defined inputs and actions. Call this endpoint with the recipe_id to register the recipe as a skill in Agent Studio.

bash
POST /api/agentic/skills

Payload

NameTypeDescription
recipe_idinteger
required
The ID of the recipe to convert into a skill.
Sample request
shell
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
json
{
  "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.

bash
GET /api/agentic/skills/:id

Query parameters

NameTypeDescription
idstring
required
The ID of the skill for you plan to retrieve.
Sample request
shell
curl -X GET https://www.workato.com/api/agentic/skills/65039789 \
     -H 'Authorization: Bearer <api_token>' \
Sample response
json
{
  "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: