Update Skill
Update an existing Skill
Updates an existing Skill in your workspace. Only include the fields you want to change.
Base URL
https://api.ajan.io/skills/v1/{skillId}Required Scopes
This endpoint requires the SKILL_API scope.
Parameters
Path Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
skillId | string | Yes | UUID of the Skill to update. |
Request Body
| Parameter | Type | Description |
|---|---|---|
name | string | Skill name. Maximum: 64 characters. |
slug | string | Stable Skill slug. Must use lowercase letters, numbers, and dashes. Maximum: 100 characters. |
description | string | Description used to explain when the Skill should apply. Maximum: 1024 characters. |
instructions | string | Skill instructions. Maximum: 50000 characters. |
integrationIds | string\[] | Integration UUIDs to attach to the Skill. Replaces the current integration list. Each integration must be enabled in your workspace. |
Example
javascript
const axios = require("axios");
async function updateSkill(skillId) {
const response = await axios.patch(
`https://api.ajan.io/skills/v1/${skillId}`,
{
description: "Applies the support team's latest tone and escalation rules.",
instructions: "Write concise replies, include the next best action, and escalate billing or security issues to the account owner."
},
{
headers: {
Authorization: "Bearer YOUR_API_KEY",
"Content-Type": "application/json"
}
}
);
console.log("Updated Skill:", response.data.skill.updatedAt);
}
updateSkill("550e8400-e29b-41d4-a716-446655440000");Response Format
Success Response (200 OK)
typescript
{
skill: {
id: string;
name: string;
slug: string;
description: string;
instructions: string;
integrationIds: string[];
createdAt: string;
updatedAt: string;
};
}Error Handling
| Status Code | Description |
|---|---|
| 400 | Invalid request body, missing update fields, or inaccessible integrationIds |
| 401 | Invalid or missing API key |
| 403 | Missing SKILL_API scope, Skills product access, or editor access |
| 404 | Skill not found |
| 409 | Skill slug conflict |
| 429 | Rate limit exceeded |
| 500 | Internal server error |
OpenAPI
openapi: 3.0.0
info:
title: ajan API
version: 3.0.0
servers:
- url: https://api.ajan.io
description: Production
security:
- bearerAuth: []
paths:
/skills/v1/{skillId}:
patch:
tags:
- Skills
summary: Update a Skill
description: Updates an existing Skill in your workspace.
operationId: updateSkill
parameters:
- $ref: '#/components/parameters/SkillId'
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/UpdateSkillRequest'
responses:
'200':
description: Skill updated successfully
content:
application/json:
schema:
$ref: '#/components/schemas/SkillResponse'
'400':
description: Invalid request body
'401':
description: Invalid or missing API key
'403':
description: Missing required scope or editor access
'404':
description: Skill not found
'409':
description: Skill slug conflict
'429':
description: Rate limit exceeded
'500':
description: Internal server error
components:
parameters:
SkillId:
name: skillId
in: path
required: true
description: UUID of the Skill.
schema:
type: string
format: uuid
schemas:
UpdateSkillRequest:
type: object
minProperties: 1
additionalProperties: false
properties:
name:
type: string
maxLength: 64
minLength: 1
description: Skill name.
slug:
type: string
maxLength: 100
pattern: ^[a-z0-9-]+$
description: Stable Skill slug.
description:
type: string
maxLength: 1024
description: Description used to explain when the Skill should apply.
instructions:
type: string
maxLength: 50000
minLength: 1
description: Skill instructions.
integrationIds:
type: array
items:
type: string
format: uuid
description: >-
Integration IDs to attach to the Skill. Replaces the current
integration list.
SkillResponse:
type: object
required:
- skill
properties:
skill:
$ref: '#/components/schemas/Skill'
Skill:
type: object
required:
- id
- name
- slug
- description
- instructions
- integrationIds
- createdAt
- updatedAt
properties:
id:
type: string
format: uuid
description: Unique identifier for the Skill.
name:
type: string
maxLength: 64
description: Skill name.
slug:
type: string
maxLength: 100
pattern: ^[a-z0-9-]+$
description: Stable Skill slug.
description:
type: string
maxLength: 1024
description: Description used to explain when the Skill should apply.
instructions:
type: string
maxLength: 50000
description: Skill instructions.
integrationIds:
type: array
items:
type: string
format: uuid
description: >-
Integration IDs attached to the Skill. Each integration must be
enabled in your workspace.
createdAt:
type: string
format: date-time
description: ISO 8601 timestamp for Skill creation.
updatedAt:
type: string
format: date-time
description: ISO 8601 timestamp for the latest Skill update.
securitySchemes:
bearerAuth:
type: http
scheme: bearer
bearerFormat: API Key
description: API key as Bearer token. Format "Bearer YOUR_API_KEY"